Fedora 35 and 37 not supporting 60 Hz at 4k resolution on external monitor

I’m using a TCL tv as an external monitor for my Gigabyte Aero 15 laptop, connected over HDMI. I have Windows 11 and Fedora 37 installed in different partitions. Windows lets me set the TV to 3840x2160p at 60 Hz, but Fedora limits that resolution to 30 Hz. At 30 Hz, the mouse and typing are laggy and awkward. If I drop to a resolution that Fedora supports at 60 Hz, the lag drops, but the dual-monitor coordination is poor due to the difference in size between the laptop main monitor and the external.

Here’s a list of things I’ve tried digging into, but I’m at a loss:

  • I tried updating to Fedora 37. Originally was on Fedora 35 having the same problems. No change.
  • I tried Xorg, I was able to get a slightly higher resolution, but not 3840x2160p and the display settings GUI was very buggy.
  • I tried checking the EDID and it looked like it matched the supposedly correct EDID listed here.

One thing I’m confused about is the EDID in Windows matches that in Fedora and doesn’t seem to say it supports 60 Hz at that resolution. But Windows clearly supports it. When I select it in Windows, the resolution is high and the mouse movement smooth.

Sorry if this is the wrong place for this question, but I’m fairly new to Fedora and very new to monitor debugging so had no idea where to get help with this.

Can you please provide us with the output of inxi -CMGxxS --edid in preformatted or code block format?

1 Like
System:
  Host: razorback Kernel: 6.1.7-200.fc37.x86_64 arch: x86_64 bits: 64
    compiler: gcc v: 2.38-25.fc37
    parameters: BOOT_IMAGE=(hd0,gpt6)/vmlinuz-6.1.7-200.fc37.x86_64
    root=UUID=5c2bc994-40c5-46dd-bfa0-d3a40bb9dd62 ro rootflags=subvol=root
    rhgb quiet
  Desktop: GNOME v: 43.2 tk: GTK v: 3.24.36 wm: gnome-shell dm: GDM v: 43.0
    Distro: Fedora release 37 (Thirty Seven)
Machine:
  Type: Laptop System: GIGABYTE product: AERO 15-XA v: N/A
    serial: <superuser required> Chassis: type: 10 v: y.y
    serial: <superuser required>
  Mobo: GIGABYTE model: AERO 15-XA serial: <superuser required>
    UEFI: American Megatrends v: FB09 date: 03/19/2020
CPU:
  Info: model: Intel Core i7-9750H bits: 64 type: MT MCP arch: Coffee Lake
    gen: core 9 level: v3 note: check built: 2018 process: Intel 14nm family: 6
    model-id: 0x9E (158) stepping: 0xA (10) microcode: 0xF0
  Topology: cpus: 1x cores: 6 tpc: 2 threads: 12 smt: enabled cache:
    L1: 384 KiB desc: d-6x32 KiB; i-6x32 KiB L2: 1.5 MiB desc: 6x256 KiB
    L3: 12 MiB desc: 1x12 MiB
  Speed (MHz): avg: 2443 high: 2600 min/max: 800/4500 scaling:
    driver: intel_pstate governor: powersave cores: 1: 2101 2: 2600 3: 2600
    4: 2600 5: 2326 6: 2600 7: 2600 8: 2600 9: 1500 10: 2600 11: 2600 12: 2600
    bogomips: 62399
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Vulnerabilities:
  Type: itlb_multihit status: KVM: VMX disabled
  Type: l1tf mitigation: PTE Inversion; VMX: conditional cache flushes, SMT
    vulnerable
  Type: mds mitigation: Clear CPU buffers; SMT vulnerable
  Type: meltdown mitigation: PTI
  Type: mmio_stale_data mitigation: Clear CPU buffers; SMT vulnerable
  Type: retbleed mitigation: IBRS
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: IBRS, IBPB: conditional, RSB filling,
    PBRSB-eIBRS: Not affected
  Type: srbds mitigation: Microcode
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: Intel CoffeeLake-H GT2 [UHD Graphics 630] vendor: Gigabyte
    driver: i915 v: kernel arch: Gen-9.5 process: Intel 14nm built: 2016-20
    ports: active: eDP-1 empty: DP-2, DP-3, HDMI-A-2, HDMI-A-3, HDMI-A-4
    bus-ID: 00:02.0 chip-ID: 8086:3e9b class-ID: 0300
  Device-2: NVIDIA TU106M [GeForce RTX 2070 Mobile] vendor: Gigabyte
    driver: nouveau v: kernel non-free: 525.xx+ status: current (as of 2022-12)
    arch: Turing code: TUxxx process: TSMC 12nm FF built: 2018-22 pcie: gen: 3
    speed: 8 GT/s lanes: 16 ports: active: HDMI-A-1 empty: DP-1
    bus-ID: 01:00.0 chip-ID: 10de:1f10 class-ID: 0300 temp: 49.0 C
  Device-3: IMC Networks USB2.0 HD UVC WebCam type: USB driver: uvcvideo
    bus-ID: 1-9:4 chip-ID: 13d3:56a2 class-ID: 0e02 serial: 0x0001
  Display: wayland server: X.org v: 1.20.14 with: Xwayland v: 22.1.7
    compositor: gnome-shell driver: X: loaded: modesetting unloaded: fbdev,vesa
    dri: iris,nouveau gpu: i915,nouveau display-ID: 0
  Monitor-1: HDMI-A-1 model: 43S425 built: 2020 res: 3840x2160 dpi: 103
    gamma: 1.2 chroma: red: x: 0.643 y: 0.333 green: x: 0.322 y: 0.624 blue:
    x: 0.145 y: 0.055 white: x: 0.278 y: 0.290 size: 800x450mm (31.5x17.72")
    diag: 1093mm (43") ratio: 16:9 modes: 3840x2160, 4096x2160, 1920x1080,
    1680x1050, 1280x1024, 1440x900, 1280x960, 1280x800, 1152x864, 1280x720,
    1024x768, 800x600, 720x480, 640x480, 720x400
  EDID-Warnings: 1: parse_edid: unhandled CEA mode 95 2: parse_edid:
    unhandled CEA mode 93 3: parse_edid: unhandled CEA mode 100 4: parse_edid:
    unhandled CEA mode 98
  Monitor-2: eDP-1 model: Samsung 0xa029 built: 2019 res: 3840x2160 dpi: 284
    gamma: 1.2 chroma: red: x: 0.686 y: 0.314 green: x: 0.243 y: 0.710 blue:
    x: 0.137 y: 0.055 white: x: 0.314 y: 0.329 size: 344x194mm (13.54x7.64")
    diag: 395mm (15.5") ratio: 16:9 modes: 3840x2160
  API: OpenGL v: 4.6 Mesa 22.3.3 renderer: Mesa Intel UHD Graphics 630 (CFL
    GT2) direct render: Yes

The TCL monitor is 12Monitor-1 HDMI-A-1 12model 43S425

Those are some interesting EDID warnings. (Not sure why everything is prefixed with “12” here?).

I also noticed that you’re using the nouveau driver for your nVidia card. It’s possible that the driver doesn’t support the full resolution where the proprietary one from RPMFusion might.

1 Like

I’ll try installing the RPMFusion driver. Found a tutorial here.

(fixed the 12 prefix. Not sure where that came from, but it showed up that way in terminal too)

1 Like

Okay, I installed the RPMFusion driver. modinfo -F version nvidia gives me 525.78.01.

But the behavior is no different from what I described above. And the EDID warning is still there.

Any idea what I could try next? I’m at a loss for how to debug this.

Actually, I just noticed as Fedora loads, it says “Nvidia kernel module missing, falling back on noveau.” Did I miss a step in the installation?

Okay, I resolved the kernel module missing warning following this page. Had to turn off safe boot in the boot menu.

But the resolution/refresh behavior is the same.

I would check for secure boot. If the nvidia modules are not signed the user must disable secure boot before they can load.
Quick check for that is dmesg | grep -iE 'secure|nvidia' and if that shows secure boot enabled it explains the driver not loading.

2 factors involved in using nvidia with secure boot.

  1. sign the modules as shown here
    Howto/Secure Boot - RPM Fusion
  2. Modules already installed will not be signed so after the steps shown in #1 are completed, then remove and reinstall the nvidia drivers.
    dnf remove '*nvidia*' --exclude=nvidia-gpu-firmware
    dnf install akmod-nvidia xorg-x11-drv-nvidia-cuda
  3. After reinstalling the drivers wait until you get a return on
    dnf list installed kmod-nvidia*
    Once that shows the package installed (it gets built automatically when akmod-nvidia is installed) then reboot and the drivers should load even with secure boot enabled.

Just an FYI, the nouveau driver does not support hardware acceleration but the nvidia driver does. Anything using the nvidia GPU will normally perform better when using the nvidia driver.

Another factor that might impact resolution is the type of connection, HDMI, DP, or other. Some work better than others. Using a docking station also can affect it.

1 Like

I followed these steps and the nvidia driver seems to be working but the resolution/refresh is still limited.

I’m skeptical of it being a hardware issue since 4k 60 Hz works great on Windows.

Any other ideas I could look into?

One possibility could be the hdmi cable itself. 4k@30 was the limit of the older hdmi spec. Can you try with the same hdmi cable you used for the windows machine?

You seem to be using a laptop with dual GPUs.
I would suggest you try setting the nvidia gpu as primary as indicated here

I followed that instruction and so far have no problems with my nvidia GPU. Have had mine set primary for more than 4 years.

A few notes to add to the doc.

  1. I added the Option "PrimaryGPU" "Yes" into both stanzas of the nvidia.conf file after copying it over into the /etc/X11/xorg.conf.d/ directory.
  2. Adding that file allows the nvidia GPU to manage both the built-in screen as well as the external monitor. By default the eGPU manages the laptop screen and the external monitor is managed by the dGPU.
  3. This process only makes the nvidia GPU primary when logged into the xorg desktop and does not work for wayland.
  4. Having the nvidia GPU as primary basically idles the eGPU (intel) and prevents issues that may arise with 2 different gpus driving 2 (or more) different monitors.

I suspect that the lower refresh rate you are seeing may be affected by the dual GPUs potentially conflicting in some areas.

While there is a slightly higher power usage with the dGPU, I still get more than 2 hours on my battery with the GPU at 100% load (running cuda apps) and the CPUs at about 25% load. I use my laptop as a desktop mostly so I periodically drain the battery and recharge to maintain its life.

3 Likes

It worked!! Thank you so much for all your help!

1 Like

Glad to assist. :nerd_face: