No display manager working with Nvidia GPU, showing either black screens or laptop logo

Hi! My machine is a laptop with an Intel graphics chip and an Nvidia GTX 880M. Both work fine in Windows, but the Nvidia doesn’t work in Fedora 36. This is a replacement graphics card. The old one worked fine in f34; I’m unsure about f35.

Symptom: When booting, the screen is black. For a second or so, the Fedora logo is shown on the laptop screen and the connected external monitor. Then the screens go black when using GDM, or keep showing the laptop brand logo with SDDM. I have tried various fixes that I found in other topics, but none have worked.

I can not log in directly on the laptop, but via ssh from another one. Here’s some of the hopefully relevant info.

dmesg | grep -iE "secure|nvidia"

[    0.000000] Command line: BOOT_IMAGE=(hd0,gpt5)/vmlinuz-5.19.7-200.fc36.x86_64 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap rd.lvm.lv=fedora/root rhgb quiet rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1
[    0.000000] secureboot: Secure boot disabled
[    0.010529] secureboot: Secure boot disabled
[    0.074404] Kernel command line: BOOT_IMAGE=(hd0,gpt5)/vmlinuz-5.19.7-200.fc36.x86_64 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap rd.lvm.lv=fedora/root rhgb quiet rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1
[    6.000280] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input17
[    6.000350] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input18
[    6.000427] input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input19
[    6.000484] input: HDA NVidia HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input20
[    6.000548] input: HDA NVidia HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input21
[    6.000605] input: HDA NVidia HDMI/DP,pcm=11 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input22
[    6.392829] nvidia: loading out-of-tree module taints kernel.
[    6.392837] nvidia: module license 'NVIDIA' taints kernel.
[    6.396019] nvidia: module verification failed: signature and/or required key missing - tainting kernel
[    6.446392] nvidia-nvlink: Nvlink Core is being initialized, major device number 235
[    6.446594] nvidia 0000:01:00.0: enabling device (0000 -> 0003)
[    6.446688] nvidia 0000:01:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[    6.446782] NVRM: loading NVIDIA UNIX x86_64 Kernel Module  390.154  Wed Jun 22 04:50:54 UTC 2022 (using threaded interrupts)
[    6.509671] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  390.154  Wed Jun 22 04:42:33 UTC 2022
[    6.516038] [drm] [nvidia-drm] [GPU ID 0x00000100] Loading driver
[    7.930206] [drm] Initialized nvidia-drm 0.0.0 20160202 for 0000:01:00.0 on minor 0

Nothing from GDM btw, I’ve enabled debug output and disabled wayland.

inxi -G

Graphics:
  Device-1: NVIDIA GK104M [GeForce GTX 880M] vendor: Micro-Star MSI driver: nvidia v: 390.154
    arch: Kepler bus-ID: 01:00.0
  Display: server: X.org v: 1.20.14 with: Xwayland v: 22.1.3 driver: X: loaded: intel
    gpu: nvidia tty: 154x38 resolution: 1: 1680x1050 2: 1920x1080
  Message: GL data unavailable in console. Try -G --display

Why does it say ‘intel’? Shouldn’t this be nvidia or modesetting?

dnf list installed "*nvidia*"

akmod-nvidia-390xx.x86_64                                     3:390.154-1.fc36                @rpmfusion-nonfree-updates
kmod-nvidia-390xx-5.19.6-200.fc36.x86_64.x86_64               3:390.154-1.fc36                @@commandline             
kmod-nvidia-390xx-5.19.7-200.fc36.x86_64.x86_64               3:390.154-1.fc36                @@commandline             
nvidia-gpu-firmware.noarch                                    20220815-138.fc36               @updates                  
nvidia-settings-390xx.x86_64                                  390.154-1.fc36                  @rpmfusion-nonfree-updates
xorg-x11-drv-nvidia-390xx.x86_64                              3:390.154-1.fc36                @rpmfusion-nonfree-updates
xorg-x11-drv-nvidia-390xx-kmodsrc.x86_64                      3:390.154-1.fc36                @rpmfusion-nonfree-updates
xorg-x11-drv-nvidia-390xx-libs.i686                           3:390.154-1.fc36                @rpmfusion-nonfree-updates
xorg-x11-drv-nvidia-390xx-libs.x86_64                         3:390.154-1.fc36                @rpmfusion-nonfree-updates

I’ve played around with Xorg configurations, en-/disabling wayland, delaying the start of GDM, installing lightdm, using nouveau. No changes, at all. What am I missing, what could I try?

What do you mean ‘intel’
That inxi snippet shows no intel GPU and the bits above and below also do not show intel devices.

We can see more info if you run inxi -Gxx to give us the full detail of graphics.

What is shown by cat /etc/default/grub?
It seems some needed kernel option may be missing.

Not the GPU, but it says driver: X: loaded: intel.

Here’s more inxi output:

Graphics:
  Device-1: NVIDIA GK104M [GeForce GTX 880M] vendor: Micro-Star MSI driver: nvidia v: 390.154
    alternate: nouveau,nvidia_drm non-free: series: 470.xx+ status: legacy-active (EOL~2023/24)
    arch: Kepler code: GKxxx process: TSMC 28nm built: 2012-18 pcie: gen: 1 speed: 2.5 GT/s
    lanes: 16 link-max: gen: 3 speed: 8 GT/s ports: active: none off: DP-1,eDP-1
    empty: DP-2,HDMI-A-1 bus-ID: 01:00.0 chip-ID: 10de:1198 class-ID: 0300
  Display: server: X.org v: 1.20.14 with: Xwayland v: 22.1.3 driver: X: loaded: intel
    gpu: nvidia tty: 154x38
  Monitor-1: DP-1 model: EIZO NANAO S2110W serial: 23001095 built: 2005 res: 1680x1050 dpi: 93
    gamma: 1.2 size: 454x284mm (17.87x11.18") diag: 544mm (21.4") ratio: 16:10 modes:
    max: 1680x1050 min: 640x480
  Monitor-2: eDP-1 model: ChiMei InnoLux 0x1735 built: 2012 res: 1920x1080 dpi: 128 gamma: 1.2
    size: 382x215mm (15.04x8.46") diag: 438mm (17.3") ratio: 16:9 modes: 1920x1080
  Message: GL data unavailable in console. Try -G --display

The ports: active: none off: DP-1,eDP-1 looks suspicious, but I have no idea how to enable them. Could this be the cause?

And here’s the grub config:

$ cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/swap rd.lvm.lv=fedora/root rhgb quiet rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1"
GRUB_DISABLE_RECOVERY="true"


GRUB_ENABLE_BLSCFG=true

Are the 2 attached displays working?
It seems they should be with

If they are then you are misinterpreting that info.

This line from /etc/default/grub is different than mine which was created when I installed the nvidia drivers from rpmfusion.
GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/swap rd.lvm.lv=fedora/root rhgb quiet rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1"
Mine shows
GRUB_CMDLINE_LINUX="rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1 initcall_blacklist=simpledrm_platform_driver_init rd.lvm.lv=fedora/root rhgb quiet kvm.ignore_msrs=1"

It is possible that one or both of the options initcall_blacklist=simpledrm_platform_driver_init kvm.ignore_msrs=1 may have an affect on the black screen you get.

You can try using the e for edit when the grub menu is displayed during boot and add one or both of those options to the line beginning with linux to see if it helps. If it does then adding the option to the line in /etc/default/grub followed by running grub2-mkconfig -o /boot/grub2/grub.cfg will make it permanent for the next boot

Thanks, I’ve tried, but they don’t change anything.

For comparison, here’s the inxi output when using the Intel graphics, with the laptop’s display turned off and the external monitor on HDMI working:

Graphics:
  Device-1: Intel 4th Gen Core Processor Integrated Graphics
    vendor: Micro-Star MSI driver: i915 v: kernel arch: Gen5.75 ports:
    active: HDMI-A-1 off: eDP-1 empty: DP-1, DP-2, HDMI-A-2, HDMI-A-3
    bus-ID: 00:02.0 chip-ID: 8086:0416
  Display: wayland server: X.org v: 1.20.14 with: Xwayland v: 22.1.3
    compositor: gnome-shell v: 42.4 driver: X: loaded: intel gpu: i915
    display-ID: 0
  Monitor-1: HDMI-A-1 model: EIZO NANAO S2110W res: 1680x1050 dpi: 93
    diag: 544mm (21.4")
  Monitor-2: eDP-1 model: ChiMei InnoLux 0x1735 res: 1920x1080 dpi: 128
    diag: 438mm (17.3")
  OpenGL: renderer: Mesa Intel HD Graphics 4600 (HSW GT2)
    v: 4.6 Mesa 22.1.7 direct render: Yes

I don’t understand if these ports should be the same when using Nvidia or if they can be different. I’ll have to dig a little deeper when I have some time.

Ahhhh
I forgot that some of the intel graphics (IGP) that are integrated in the intel processor do not show as a separate device at times.

It is also possible that the nvidia-drm.modeset=1 option may affect the blackscreen. Maybe trying that as nvidia-drm.modeset=0 will make a change.

I tried but it didn’t work either.

Another thing I’ve tried is checking other driver versions. The Nvidia website has conflicting information on which driver version supports the GTX 880M. The 340 driver definitely doesn’t work, but installing the 470 instead of 390 gives slightly different results in inxi:

Graphics:
  Device-1: NVIDIA GK104M [GeForce GTX 880M] vendor: Micro-Star MSI driver: nvidia v: 470.141.03
    alternate: nouveau,nvidia_drm non-free: series: 470.xx+ status: legacy-active (EOL~2023/24)
    arch: Kepler code: GKxxx process: TSMC 28nm built: 2012-18 pcie: gen: 1 speed: 2.5 GT/s
    lanes: 16 link-max: gen: 3 speed: 8 GT/s ports: active: none off: DP-1
    empty: DP-2,HDMI-A-1,eDP-1 bus-ID: 01:00.0 chip-ID: 10de:1198 class-ID: 0300
  Display: server: X.org v: 1.20.14 with: Xwayland v: 22.1.3 driver: X: loaded: intel
    gpu: nvidia,nvidia-nvswitch tty: 154x38
  Monitor-1: DP-1 model: EIZO NANAO S2110W serial: 23001095 built: 2005 res: 1680x1050 dpi: 93
    gamma: 1.2 size: 454x284mm (17.87x11.18") diag: 544mm (21.4") ratio: 16:10 modes:
    max: 1680x1050 min: 640x480
  Message: GL data unavailable in console for root.

The main difference is that with the 390 driver the port eDP-1 is listed as off, with the 470 as empty. And there is an nvidia-nvswitch listed with the 470.

I haven’t answered all your questions and some of my information was incorrect:

One of the displays is the laptop’s internal display, the one that was listed as ChiMei InnoLux with the 390 driver.
They are not working. At least the external Eizo monitor is in standby (it’s not getting a signal). When I wrote in the OP that the Fedora logo is shown briefly, what happens is that the screens get turned on for a moment, showing the Fedora logo, then go back to standby (I assume it’s the same for the internal display). The same happens sometimes when using systemctl reboot or poweroff from the ssh session.

Since there are no recent Xorg logs, I assume that the system doesn’t even get to the stage where it would try starting X. But I don’t know where else to look for possible error messages. Should GDM start X? Or asking another way, is the GDM greeter normally displayed by a running X?

I would expect that the initial display of the fedora logo is coming from the bios. On my system with a reboot the screen displays the logo from the mobo + the fedora logo, then it displays the grub menu, then when it starts booting it again shows mobo logo & the fedora logo with the spinner.
From a power off the sequence is the same except it does not display the fedora logo before the grub menu appears.

Is the external display set as primary within the gnome settings → Displays panel?
Have you set the nvidia GPU as primary as noted here?
Are you using xorg or wayland?

  1. The setting for nvidia as primary is only effective if you are using xorg.
  2. On older devices the nvidia dGPU cannot by default control the laptop screen unless the nvidia.conf file has been copied from /usr/share/X11/xorg.conf.d/nvidia.conf to /etc/X11/xorg.conf.d/nvidia.conf. The nvidia dGPU can then control both screens once that file has been placed under /etc and the user has rebooted, as noted.

I’m trying xorg for now, because I’ve had problems on this system with wayland and the nvidia drivers in the past.

I should note that this is not an Optimus system. The nvidia chip is on a discrete graphics card, which I changed because the old one broke. I have to switch between the graphics chips manually in Windows. It’s a huge hassle to always boot Windows to make that change.

I also checked the nvidia.conf again because I played around with that also, but it’s fine.

However, I now think that the problem is deeper. I disabled GDM to see if I can get a text console to log in. This works fine with the Intel graphics. Surprise surprise, with the Nvidia chip I get nothing. The screens stay off during the entire boot process and never come on (the external screen still comes on for a second when rebooting though).
Which component is supposed to handle the ‘text’ console? I assume it’s some fb device, but I haven’t tinkered with these things in many years.

One more addition. I’ve tried booting the rescue kernel, which is from Fedora 30(!) and used to work when I had Nvidia problems with previous Fedora releases. But now it’s the same, no output at all. Makes me think that the problem is close to the hardware. But it works in Windows, so I’m not giving up yet.

You followed that with a comment about booting with intel graphics. It is thus optimus with the iGPU intergrated into the processor even though it only has one separate discrete GPU.

As I understood it, Optimus is about selecting the 3D renderer itself when needed for certain applications, otherwise running on the iGPU. I’ve had to switch between the two chips manually, or I misunderstood and just enabled and disabled the dGPU.

Whatever the case may be, I’m getting closer. Adding video=efifb:off to the kernel helped tremendously. GDM now displays the greeter on the external display, and after logging in the gnome3 desktop also works. But only with wayland. Disabling wayland gives me the same result as before. I’m fine with this for now.

Some things still don’t work, for instance, nvidia-settings gives me:

ERROR: Unable to find display on any available system

And inxi -Gxx --gpu:

Graphics:
  Device-1: NVIDIA GK104M [GeForce GTX 880M] vendor: Micro-Star MSI
    driver: nvidia v: 470.141.03 alternate: nouveau,nvidia_drm non-free:
    series: 470.xx+ status: legacy-active (EOL~2023/24) arch: Kepler
    code: GKxxx process: TSMC 28nm built: 2012-18 pcie: gen: 1
    speed: 2.5 GT/s lanes: 16 link-max: gen: 3 speed: 8 GT/s ports:
    active: none off: DP-1 empty: DP-2,HDMI-A-1,eDP-1 bus-ID: 01:00.0
    chip-ID: 10de:1198 class-ID: 0300
  Display: server: X.Org v: 1.22.1.3 with: Xwayland v: 22.1.3
    compositor: gnome-shell v: 42.4 driver: X: loaded: intel
    gpu: nvidia,nvidia-nvswitch display-ID: :0 screens: 1
  Screen-1: 0 s-res: 1680x1050 s-dpi: 96 s-size: 444x277mm (17.48x10.91")
    s-diag: 523mm (20.6")
  Monitor-1: DP-1 mapped: XWAYLAND0 note: disabled model: EIZO NANAO S2110W
    serial: 23001095 built: 2005 res: 1680x1050 hz: 60 dpi: 93 gamma: 1.2
    size: 460x290mm (18.11x11.42") diag: 544mm (21.4") ratio: 16:10 modes:
    max: 1680x1050 min: 640x480
  OpenGL: renderer: NVIDIA GeForce GTX 880M/PCIe/SSE2
    v: 4.6.0 NVIDIA 470.141.03 direct render: Yes

Again with the driver: X: loaded: intel. Seems like the gnome desktop is using Nvidia though because the animation effects are much smoother than before.