External display problems on NVIDIA laptop with Fedora 39

I recently switched from Pop!_OS to Fedora 39 (Workstation Edition) and everything is great apart from I can’t get an external display to work properly using HDMI. The monitor is connected directly to the laptop, not via a docking station.

My laptop is a System76 Oryx Pro with an NVIDIA GeForce RTX 3070 TI Laptop GPU, as well as integrated graphics. I’ve installed the Nvidia 550 drivers from rpmfusion and have the following problems:

  • If I connect the monitor while using Wayland, it is detected, but the system becomes slow (almost unresponsive with about 1 - 2 Hz refresh rate on the external monitor an mouse movement is laggy / slow.
  • If I connect the monitor while using X11, it is not detected at all.

I’ve seen other posts that request the output of inxi -Fzxx, so here goes:

  Kernel: 6.7.9-200.fc39.x86_64 arch: x86_64 bits: 64 compiler: gcc
    v: 2.40-14.fc39
  Desktop: GNOME v: 45.5 tk: GTK v: 3.24.41 wm: gnome-shell dm: GDM
    Distro: Fedora Linux 39 (Workstation Edition)
  Type: Laptop System: System76 product: Oryx Pro v: oryp9
    serial: <superuser required> Chassis: type: 9 serial: <superuser required>
  Mobo: System76 model: Oryx Pro v: oryp9 serial: <superuser required>
    UEFI: coreboot v: 2023-09-08_42bf7a6 date: 09/08/2023
  ID-1: BAT0 charge: 66.0 Wh (93.1%) condition: 70.9/77.3 Wh (91.7%)
    volts: 12.5 min: 11.4 model: Notebook BAT serial: <filter>
    status: not charging
  Info: 14-core (6-mt/8-st) model: 12th Gen Intel Core i7-12700H bits: 64
    type: MST AMCP arch: Alder Lake rev: 3 cache: L1: 1.2 MiB L2: 11.5 MiB
    L3: 24 MiB
  Speed (MHz): avg: 468 high: 907 min/max: 400/4600:4700:3500 cores: 1: 400
    2: 400 3: 400 4: 400 5: 400 6: 400 7: 907 8: 400 9: 695 10: 400 11: 762
    12: 400 13: 400 14: 400 15: 400 16: 400 17: 400 18: 400 19: 400 20: 608
    bogomips: 107520
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Device-1: Intel Alder Lake-P GT2 [Iris Xe Graphics] vendor: CLEVO/KAPOK
    driver: i915 v: kernel arch: Gen-12.2 ports: active: eDP-1
    empty: DP-1, DP-2, DP-3, DP-4 bus-ID: 00:02.0 chip-ID: 8086:46a6
  Device-2: NVIDIA GA104 [Geforce RTX 3070 Ti Laptop GPU]
    vendor: CLEVO/KAPOK driver: nvidia v: 550.54.14 arch: Ampere pcie:
    speed: 2.5 GT/s lanes: 8 ports: active: none empty: DP-5, DP-6, HDMI-A-1,
    eDP-2 bus-ID: 01:00.0 chip-ID: 10de:24a0
  Device-3: Bison BisonCam NB Pro driver: uvcvideo type: USB rev: 2.0
    speed: 480 Mb/s lanes: 1 bus-ID: 3-8:4 chip-ID: 5986:214c
  Display: x11 server: X.Org v: 1.20.14 with: Xwayland v: 23.2.4
    compositor: gnome-shell driver: X: loaded: modesetting,nvidia
    unloaded: fbdev,nouveau,vesa alternate: nv dri: iris gpu: i915
    display-ID: :1 screens: 1
  Screen-1: 0 s-res: 1920x1080 s-dpi: 96
  Monitor-1: eDP-1 model: BOE Display 0x08ea res: 1920x1080 dpi: 142
    diag: 395mm (15.5")
  API: OpenGL v: 4.6 vendor: intel mesa v: 23.3.6 glx-v: 1.4 es-v: 3.2
    direct-render: yes renderer: Mesa Intel Graphics (ADL GT2)
    device-ID: 8086:46a6
  API: EGL Message: EGL data requires eglinfo. Check --recommends.
  Device-1: Intel Alder Lake PCH-P High Definition Audio vendor: CLEVO/KAPOK
    driver: snd_hda_intel v: kernel bus-ID: 00:1f.3 chip-ID: 8086:51c8
  Device-2: NVIDIA GA104 High Definition Audio vendor: CLEVO/KAPOK
    driver: snd_hda_intel v: kernel pcie: speed: 2.5 GT/s lanes: 8
    bus-ID: 01:00.1 chip-ID: 10de:228b
  API: ALSA v: k6.7.9-200.fc39.x86_64 status: kernel-api
  Server-1: JACK v: 1.9.22 status: off
  Server-2: PipeWire v: 1.0.4 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
  Device-1: Intel Alder Lake-P PCH CNVi WiFi driver: iwlwifi v: kernel
    bus-ID: 00:14.3 chip-ID: 8086:51f0
  IF: wlp0s20f3 state: up mac: <filter>
  Device-2: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
    vendor: CLEVO/KAPOK driver: r8169 v: kernel pcie: speed: 2.5 GT/s lanes: 1
    port: 5000 bus-ID: 30:00.0 chip-ID: 10ec:8168
  IF: enp48s0 state: down mac: <filter>
  IF-ID-1: sdwan0 state: unknown speed: 10000 Mbps duplex: full mac: N/A
  Device-1: Intel AX211 Bluetooth driver: btusb v: 0.8 type: USB rev: 2.0
    speed: 12 Mb/s lanes: 1 bus-ID: 3-10:5 chip-ID: 8087:0033
  Report: btmgmt ID: hci0 rfk-id: 0 state: up address: <filter> bt-v: 5.3
    lmp-v: 12
  Local Storage: total: 3.64 TiB used: 336.89 GiB (9.0%)
  ID-1: /dev/nvme0n1 vendor: Samsung model: SSD 980 PRO 2TB size: 1.82 TiB
    speed: 63.2 Gb/s lanes: 4 serial: <filter> temp: 39.9 C
  ID-2: /dev/nvme1n1 vendor: Samsung model: SSD 980 PRO 2TB size: 1.82 TiB
    speed: 63.2 Gb/s lanes: 4 serial: <filter> temp: 40.9 C
  ID-1: / size: 3.64 TiB used: 336.46 GiB (9.0%) fs: btrfs dev: /dev/dm-1
    mapped: luks-ee26a464-02c6-481f-93ec-5e2a7dde3f95
  ID-2: /boot size: 973.4 MiB used: 425.5 MiB (43.7%) fs: ext4
    dev: /dev/nvme1n1p2
  ID-3: /boot/efi size: 598.8 MiB used: 19 MiB (3.2%) fs: vfat
    dev: /dev/nvme1n1p1
  ID-4: /home size: 3.64 TiB used: 336.46 GiB (9.0%) fs: btrfs
    dev: /dev/dm-1 mapped: luks-ee26a464-02c6-481f-93ec-5e2a7dde3f95
  ID-1: swap-1 type: zram size: 8 GiB used: 0 KiB (0.0%) priority: 100
    dev: /dev/zram0
  System Temperatures: cpu: 51.0 C mobo: N/A
  Fan Speeds (rpm): cpu: 1687
  Memory: total: 64 GiB available: 62.64 GiB used: 4.81 GiB (7.7%)
  Processes: 597 Power: uptime: 15m wakeups: 0 Init: systemd v: 254
    target: graphical (5) default: graphical
  Packages: pm: flatpak pkgs: 32 Compilers: gcc: 13.2.1 Shell: Bash
    v: 5.2.26 running-in: gnome-terminal inxi: 3.3.33

nvidia-smi output is as follows:

Fri Mar 29 17:47:43 2024       
| NVIDIA-SMI 550.54.14              Driver Version: 550.54.14      CUDA Version: 12.4     |
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|   0  NVIDIA GeForce RTX 3070 ...    Off |   00000000:01:00.0 Off |                  N/A |
| N/A   45C    P0             N/A /  115W |       9MiB /   8192MiB |      0%      Default |
|                                         |                        |                  N/A |
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|    0   N/A  N/A      3904      G   /usr/libexec/Xorg                               4MiB |

dmesg | grep secure indicates that secure boot is disabled.

My installed Nvidia packages (obtained with dnf list installed '*nvidia*') are:

Installed Packages
akmod-nvidia.x86_64                                                     3:550.54.14-2.fc39                                @rpmfusion-nonfree-nvidia-driver
kmod-nvidia-6.7.6-200.fc39.x86_64.x86_64                                3:550.54.14-1.fc39                                @@commandline                   
kmod-nvidia-6.7.7-200.fc39.x86_64.x86_64                                3:550.54.14-1.fc39                                @@commandline                   
kmod-nvidia-6.7.9-200.fc39.x86_64.x86_64                                3:550.54.14-2.fc39                                @@commandline                   
nvidia-gpu-firmware.noarch                                              20240312-1.fc39                                   @updates                        
nvidia-modprobe.x86_64                                                  3:550.54.14-1.fc39                                @rpmfusion-nonfree-nvidia-driver
nvidia-persistenced.x86_64                                              3:550.54.14-1.fc39                                @rpmfusion-nonfree-nvidia-driver
nvidia-settings.x86_64                                                  3:550.54.14-1.fc39                                @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia.x86_64                                              3:550.54.14-1.fc39                                @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-cuda.x86_64                                         3:550.54.14-1.fc39                                @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-cuda-libs.x86_64                                    3:550.54.14-1.fc39                                @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-kmodsrc.x86_64                                      3:550.54.14-1.fc39                                @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-libs.x86_64                                         3:550.54.14-1.fc39                                @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-power.x86_64                                        3:550.54.14-1.fc39                                @rpmfusion-nonfree-nvidia-driver

This was a clean install of Fedora 39, not an update from Fedora 38 which suggests it isn’t related to the issue where the kernel modules aren’t recompiled during an upgrade.

Any help would be massively appreciated. Thanks in advance.

Removed audio, bluetooth, flatpak, intel, pipewire, server

I have some related problem, for me it won’t work at all on HDMI with the latest kernels, I have the same NVIDIA graphic card, I think it’s a regression bug in the kernels that affect our cards and nobody cares until now.

Maybe you can try the 6-6-2-201 kernel that’s the last kernel version that works for me.

My problem link: https://discussion.fedoraproject.org/t/kernel-versions-after-6-6-2-201-make-my-external-monitor-and-steam-games-to-not-work-anymore/105235/44

The information in the nvidia-smi output as well as the installed nvidia drivers version show you are not up to date with the latest drivers. Rpmfusion released the 550.67 drivers several weeks past. so an update would be my first recommendation.
I would use sudo dnf upgrade --refresh in a terminal then wait at least 5 minutes after the update completes before rebooting.

You also show the kernel 6.7.9 in use and that one was replaced several weeks back as well. Since then fedora has released the 6.7.10, then 6.7.11, then 6.8.4 kernels.

Ah, so sorry for posting before updating. That was really bad of me. And thanks for your reply.

I’m now running kernel version 6.8.4-200.fc39.x86_64 and Nvidia drivers 550.67-1.fc39.

I actually see a slight difference in behavior. Whereas previously, my external display would fire up on Wayland, albeit in an unusable state, it is no longer detected at all on either Wayland or X11.

I’ve been doing some further experimentation.

Using a live USB of Pop!_OS (nvidia driver 550.54.14 and kernel 6.8.0, everything worked perfectly. The system booted to use my laptop’s built-in display, and when plugging in the external monitor, it activated as a secondary display. This seems to rule out any hardware issues.

Back to my Fedora installation, when I powered on with the external monitor already connected, boot up was slow … disk encryption unlock screen was quick, shown on both monitors. After that it took several minutes to show the login screen (only on external monitor, build-in was blank), and then several minutes beyond that to fully login to an X11 session, again only on external monitor, with built in screen blank. Neither the settings app or Nvidia settings app would start!

Occasionally with the first boot after an upgrade things sometimes seems slow for me. Second boot and following have been normal with no delays.

I would guess this has to do with the system doing its own self-configuration internally with the updated software.

I’ve done more experimentation, using X11 with the monitor plugged in at boot. Three times, I’ve booted up, and waited 10+ minutes before restarting. In all three cases, the laptop’s built-in monitor was blank after the login prompt.

Before doing the experiments, I also tried removing the kmod-nvidia-6.8.4* package, and reinstalling with sudo akmods --force and waiting 10 minutes to reboot.

Run 1: nothing appeared on the external monitor after I completed the login prompt. After 10 minutes, I used the physical power button to shutdown.
Run 2: desktop appeared on the external monitor (laptop screen blank). After a minute, I got a black screen for a couple of seconds (GPU crash?) and it came back. After that, “Settings” → “About” → “System Details” showed that my Graphics were “Software Rendering”. Under normal usage without the external monitor, the graphics in there are “Graphics: Intel Graphics (ADL GT2); Graphics 1: NVIDIA GeForce RTX 3070 Ti Laptop GPU”.
Run 3: desktop appeared on the external monitor after a minute or two after login. I tried launching various programs (Firefox, Terminal, Settings, Nvidia Settings). Only Firefox would show up. For the others, I got a spinning cursor for 5 to 10 seconds, then nothing.

Note that under normal, built-in display only usage, my desktop is fully usable two to three seconds after logging in with my password.

I love everything about Fedora apart from this external monitor issue, but it’s a deal-breaker for me.

This truly sounds like like a configuration issue, possibly in the settings → display panel.
One monitor may be disabled there. If so then enable it.
The monitor that is configured as primary also may be the issue.

For many (most?) laptops the default config uses the iGPU to drive the built-in screen and the dGPU to drive the external monitor. You seem to be having issues with not having the 2 displays operating properly.

Have you tried using X11 instead of Wayland?
Have you tried the config shown at How to Set Nvidia as Primary GPU on Optimus-based Laptops :: Fedora Docs ? That config seems to enable the dGPU to manage both screens as well as providing the ability to have hardware acceleration active for graphics.

That seems to help for many, but does require using X11 for the DE to be fully functional.

1 Like

Amazing, thank you!

I had not previously followed the instructions to always make my NVIDIA GPU the primary GPU, and was relying on the hybrid approach you mentioned. I followed the instructions you referenced and it solved my problem.

Specifically, the package xorg-x11-drv-nvidia-libs was not installed, and the config file /etc/X11/xorg/conf.d/nvidia.conf was not present. After installing the package, creating and editing the config file, everything is working perfectly following the reboot.

Thank you so much @computersavvy for your help with this.


Thanks for your input @formidabilus … I didn’t want to have to downgrade my kernel until it was a last resort. Thanks for the idea, but I’m sorted on latest and greatest kernel and GPU drivers anyway. :grinning:

1 Like