Proprietary Nvidia driver shows a black screen instead of a virtual terminal or a graphical session

Problem

On Fedora 36, if you use the proprietary Nvidia driver, you might see a black screen during boot and when you try to switch to a virtual terminal (VT). This happens if you installed the driver from RPMFusion repository. If you installed it with a different method (including the official installer from Nvidia), you might additionally lose all display output, i.e. even graphical sessions (GNOME, KDE, etc) will not be shown.

This issue doesn’t seem to affect all systems with Nvidia cards, just some. It hasn’t been yet determined what the deciding factor is.

This affects both clean Fedora 36 installs, where you installed the proprietary Nvidia driver afterwards, and upgraded older Fedora system (34/35), which had the proprietary Nvidia driver already installed. This does not affect systems with Nouveau, the open-source Nvidia driver (used by default in clean installs).

Cause

The Nvidia driver relied on the legacy efifb driver to have a Framebuffer Device (fbdev) bound to the Framebuffer Console (fbcon). Since Fedora 36 replaced all the fbdev drivers with the simpledrm driver, efifb is not present anymore which leads to not having VT consoles with the Nvidia driver.

DRM drivers register an emulated fbdev for this but the Nvidia driver does not.

Related Issues

Bugzilla report: 2071209 – Laptop display is not turning on with simpledrm driver in kernel and Nvidia driver
Bugzilla report: 2084006 – Blanks TTY with NVIDIA driver since f36 upgrade

Workarounds

Nvidia need to fix their driver to have fbdev support for fbcon/VT, in order to properly fix this problem. However, Fedora engineers prepared a workaround which users can use in the meantime:

  1. Install at least kernel 5.17.11. You can see your current kernel version by running uname -r.
  2. If you installed your nvidia driver from RPMFusion (kmod-nvidia or akmod-nvidia package), you need at least version 510.68.02-2.fc36.
  3. Add nvidia-drm.modeset=1 option to your kernel command line. You can do it by editing /etc/default/grub, adjusting GRUB_CMDLINE_LINUX= line, and then running sudo grub2-mkconfig -o /etc/grub2.cfg.
    • This step might not be necessary if you installed your nvidia driver from RPMFusion, it might do it for you. Inspect /etc/default/grub.
  4. Reboot.

If the above doesn’t work for you for some reason, you can also do the following:

  • If you have an integrated graphics card in your CPU (desktop/laptop), switch to it in your BIOS/UEFI, instead of using the external Nvidia card.
  • Uninstall the proprietary Nvidia driver and go back to using Nouveau, the opensource one.
  • Stay on Fedora 35 and avoid upgrading at this moment, or install Fedora 35 instead of 36 for new installations.

You can discuss this topic here.

10 Likes