KDE Wayland monitor refresh rate is capped at ~60Hz

Context

This issue started with a full system upgrade (sudo pacman -Syu) around 2 months ago.
I’m on a laptop running Manjaro with KDE 5.27.8 (Wayland) on kernel 6.6 (complete system info below).

Problem

My external monitor, which is can go at 144Hz, seems to be capped at 60Hz by something.
The built-in laptop monitor, a 144Hz panel as well, is working just fine.

Looking at KDE’s display settings, both screens are set to 144Hz. However, I cannot change the built-in one to 60Hz, it always works at 144Hz, for some reason (the setting seems to stick, but if I reopen the page, it reverts back to 144Hz). Changing the external monitor’s refresh rate “works” (as in, the setting sticks), though it changes nothing.

I’ve tried using kscreen-doctor to change settings, to no avail either.
Here’s what kscreen-doctor -io gives me:

Output
Environment: 
  * KSCREEN_BACKEND           : [not set]
  * KSCREEN_BACKEND_INPROCESS : [not set]
  * KSCREEN_LOGGING           : [not set]
Logging to                : [logging disabled]
Preferred KScreen backend : KSC_KWayland.so
Available KScreen backends:
  * KSC_Fake.so: /usr/lib/qt/plugins/kf5/kscreen/KSC_Fake.so
  * KSC_KWayland.so: /usr/lib/qt/plugins/kf5/kscreen/KSC_KWayland.so
  * KSC_QScreen.so: /usr/lib/qt/plugins/kf5/kscreen/KSC_QScreen.so
  * KSC_XRandR.so: /usr/lib/qt/plugins/kf5/kscreen/KSC_XRandR.so
  * KSC_XRandR11.so: /usr/lib/qt/plugins/kf5/kscreen/KSC_XRandR11.so

Output: 1 eDP-1 enabled connected priority 1 Panel Modes: 0:1920x1080@144*! 1:1280x1024@60 2:1024x768@60 3:1280x800@60 4:1920x1080@60 5:1600x900@60 6:1368x768@60 7:1280x720@60 Geometry: 0,1080 1920x1080 Scale: 1 Rotation: 1 Overscan: 0 Vrr: incapable RgbRange: Automatic
Output: 2 HDMI-A-1 enabled connected priority 2 HDMI Modes: 0:1920x1080@60! 1:1920x1080@144* 2:1920x1080@120 3:1920x1080@120 4:1920x1080@100 5:1920x1080@60 6:1920x1080@50 7:1680x1050@60 8:1600x900@60 9:1280x1024@60 10:1440x900@60 11:1280x800@60 12:1280x720@60 13:1280x720@60 14:1280x720@50 15:1024x768@60 16:800x600@60 17:720x576@50 18:720x480@60 19:640x480@60 20:640x480@60 Geometry: 0,0 1920x1080 Scale: 1 Rotation: 1 Overscan: 0 Vrr: incapable RgbRange: unknown

Has anyone had anything similar? Could it be some regression to the Intel graphics driver (the HDMI port is driven by the iGPU, not dGPU)? Is it a KDE bug?

Thank you!


System info
System:
  Kernel: 6.6.0-1-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
    clocksource: tsc available: acpi_pm
    parameters: BOOT_IMAGE=/root/boot/vmlinuz-6.6-x86_64
    root=UUID=767943ce-1fd1-40ac-8290-109ef2e820fd rw rootflags=subvol=root
    apparmor=1 security=apparmor quiet loglevel=3 udev.log_priority=3
    bootsplash.bootfile=/bootsplash-themes/kde/bootsplash
  Desktop: KDE Plasma v: 5.27.8 tk: Qt v: 5.15.11 wm: kwin_wayland vt: 2
    dm: SDDM Distro: Manjaro Linux base: Arch Linux
Machine:
  Type: Laptop System: SchenkerGmbH product: XMG FUSION 15 (XFU15L19)
    v: Late 2019 serial: <superuser required> Chassis: type: 10 v: 1.0
    serial: <superuser required>
  Mobo: Intel model: LAPQC71A v: K54899-304 serial: <superuser required>
    UEFI: Intel v: QCCFL357.0150.2022.0523.1145 date: 05/23/2022
Battery:
  ID-1: BAT0 charge: 74.8 Wh (80.0%) condition: 93.5/93.5 Wh (100.0%)
    volts: 12.1 min: 11.4 model: standard type: Li-ion serial: <filter>
    status: not charging
Memory:
  System RAM: total: 16 GiB available: 15.47 GiB used: 4.84 GiB (31.3%)
  RAM Report: permissions: Unable to run dmidecode. Root privileges required.
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: 0xF4
  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: 800 min/max: 800/4500 scaling: driver: intel_pstate
    governor: powersave cores: 1: 800 2: 800 3: 800 4: 800 5: 800 6: 800 7: 800
    8: 800 9: 800 10: 800 11: 800 12: 800 bogomips: 62431
  Flags: 3dnowprefetch abm acpi adx aes aperfmperf apic arat
    arch_capabilities arch_perfmon art avx avx2 bmi1 bmi2 bts clflush
    clflushopt cmov constant_tsc cpuid cpuid_fault cx16 cx8 de ds_cpl dtes64
    dtherm dts epb ept ept_ad erms est f16c flexpriority flush_l1d fma fpu
    fsgsbase fxsr ht hwp hwp_act_window hwp_epp hwp_notify ibpb ibrs ida
    intel_pt invpcid lahf_lm lm mca mce md_clear mmx monitor movbe mpx msr
    mtrr nonstop_tsc nopl nx pae pat pbe pcid pclmulqdq pdcm pdpe1gb pebs pge
    pln pni popcnt pse pse36 pti pts rdrand rdseed rdtscp rep_good sdbg sep
    smap smep ss ssbd sse sse2 sse4_1 sse4_2 ssse3 stibp syscall tm tm2
    tpr_shadow tsc tsc_adjust tsc_deadline_timer vme vmx vnmi vpid x2apic
    xgetbv1 xsave xsavec xsaveopt xsaves xtopology xtpr
  Vulnerabilities:
  Type: gather_data_sampling mitigation: Microcode
  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_rstack_overflow status: Not affected
  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, STIBP: 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] driver: i915 v: kernel
    arch: Gen-9.5 process: Intel 14nm built: 2016-20 ports: active: eDP-1
    empty: none bus-ID: 00:02.0 chip-ID: 8086:3e9b class-ID: 0300
  Device-2: NVIDIA TU116M [GeForce GTX 1660 Ti Mobile] vendor: Intel
    driver: nvidia v: 535.113.01 alternate: nouveau,nvidia_drm non-free: 535.xx+
    status: current (as of 2023-09) arch: Turing code: TUxxx
    process: TSMC 12nm FF built: 2018-22 pcie: gen: 1 speed: 2.5 GT/s lanes: 16
    link-max: gen: 3 speed: 8 GT/s ports: active: none off: HDMI-A-1
    empty: DP-1,DP-2 bus-ID: 01:00.0 chip-ID: 10de:2191 class-ID: 0300
  Device-3: Chicony HD Webcam driver: uvcvideo type: USB rev: 2.0
    speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-13:5 chip-ID: 04f2:b68b
    class-ID: 0e02 serial: <filter>
  Display: wayland server: X.org v: 1.21.1.8 with: Xwayland v: 23.2.1
    compositor: kwin_wayland driver: X: loaded: modesetting,nvidia dri: iris
    gpu: i915,nvidia,nvidia-nvswitch display-ID: 0
  Monitor-1: HDMI-A-1 model: HP ... serial: <filter> built: 2022
    res: 1920x1080 dpi: 93 gamma: 1.2 size: ...
    diag: ... ratio: 16:9 modes: max: 1920x1080 min: 640x480
  Monitor-2: eDP-1 model: BOE Display 0x084d built: 2018 res: 1920x1080
    dpi: 142 gamma: 1.2 size: 344x193mm (13.54x7.6") diag: 394mm (15.5")
    ratio: 16:9 modes: 1920x1080
  API: EGL v: 1.5 hw: drv: intel iris platforms: device: 0 drv: iris
    device: 2 drv: swrast surfaceless: drv: iris wayland: drv: iris x11:
    drv: iris inactive: gbm,device-1
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: intel mesa v: 23.1.9-manjaro1.1
    glx-v: 1.4 direct-render: yes renderer: Mesa Intel UHD Graphics 630 (CFL GT2)
    device-ID: 8086:3e9b memory: 15.11 GiB unified: yes display-ID: :0.0
  API: Vulkan v: 1.3.264 layers: 18 device: 0 type: integrated-gpu name: Intel
    UHD Graphics 630 (CFL GT2) driver: mesa intel v: 23.1.9-manjaro1.1
    device-ID: 8086:3e9b surfaces: xcb,xlib,wayland device: 1
    type: discrete-gpu name: NVIDIA GeForce GTX 1660 Ti driver: nvidia
    v: 535.113.01 device-ID: 10de:2191 surfaces: xcb,xlib,wayland
Audio:
  Device-1: Intel Cannon Lake PCH cAVS driver: snd_hda_intel v: kernel
    alternate: snd_soc_skl,snd_sof_pci_intel_cnl bus-ID: 00:1f.3
    chip-ID: 8086:a348 class-ID: 0403
  Device-2: NVIDIA TU116 High Definition Audio vendor: Tongfang Hongkong
    driver: snd_hda_intel v: kernel pcie: gen: 2 speed: 5 GT/s lanes: 16
    link-max: gen: 3 speed: 8 GT/s bus-ID: 01:00.1 chip-ID: 10de:1aeb
    class-ID: 0403
  Device-3: Texas Instruments PCM2902 Audio Codec
    driver: hid-generic,snd-usb-audio,usbhid type: USB rev: 1.1 speed: 12 Mb/s
    lanes: 1 mode: 1.1 bus-ID: 1-12:4 chip-ID: 08bb:2902 class-ID: 0300
  API: ALSA v: k6.6.0-1-MANJARO status: kernel-api with: aoss
    type: oss-emulator tools: alsactl,alsamixer,amixer
  Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
  Server-2: JACK v: 1.9.22 status: off tools: N/A
  Server-3: PipeWire v: 0.3.81 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
    tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
    vendor: Intel driver: r8169 v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1
    port: 3000 bus-ID: 3d:00.0 chip-ID: 10ec:8168 class-ID: 0200
  IF: enp61s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
  IP v4: <filter> type: dynamic noprefixroute scope: global
    broadcast: <filter>
  IP v6: <filter> type: dynamic noprefixroute scope: global
  IP v6: <filter> type: noprefixroute scope: link
  Device-2: Intel Wi-Fi 6 AX200 driver: iwlwifi v: kernel pcie: gen: 2
    speed: 5 GT/s lanes: 1 bus-ID: 3e:00.0 chip-ID: 8086:2723 class-ID: 0280
  IF: wlan0 state: up mac: <filter>
  IP v4: <filter> type: dynamic noprefixroute scope: global
    broadcast: <filter>
  IP v6: <filter> type: dynamic noprefixroute scope: global
  IP v6: <filter> type: noprefixroute scope: link
  IF-ID-1: docker0 state: down mac: <filter>
  IP v4: <filter> scope: global broadcast: <filter>
  IF-ID-2: wg-mullvad state: unknown speed: N/A duplex: N/A mac: N/A
  IP v4: <filter> scope: global
  IP v6: <filter> scope: global
  WAN IP: <filter>
Bluetooth:
  Device-1: Intel AX200 Bluetooth driver: btusb v: 0.8 type: USB rev: 2.0
    speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-14:6 chip-ID: 8087:0029
    class-ID: e001
  Report: hciconfig ID: hci0 rfk-id: 1 state: up address: <filter> bt-v: 5.2
    lmp-v: 11 sub-v: 20ce hci-v: 11 rev: 20ce class-ID: 7c010c
  Info: acl-mtu: 1021:4 sco-mtu: 96:6 link-policy: rswitch sniff
    link-mode: peripheral accept service-classes: rendering, capturing, object
    transfer, audio, telephony
Logical:
  Message: No logical block device data found.
RAID:
  Message: No RAID data found.
Drives:
  Local Storage: total: 1.36 TiB used: 625.24 GiB (44.7%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:5 vendor: Smart Modular Tech.
    model: ... size: 931.51 GiB block-size: physical: 512 B
    logical: 512 B speed: 31.6 Gb/s lanes: 4 tech: SSD serial: <filter>
    fw-rev: ... temp: 48.9 C scheme: GPT
  ID-2: /dev/nvme1n1 maj-min: 259:0 vendor: Crucial model: ...
    size: 465.76 GiB block-size: physical: 512 B logical: 512 B speed: 31.6 Gb/s
    lanes: 4 tech: SSD serial: <filter> fw-rev: P3CR021 temp: 41.9 C
    scheme: GPT
  Message: No optical or floppy data found.
Partition:
  ID-1: / raw-size: 900 GiB size: 900 GiB (100.00%) used: 625.24 GiB (69.5%)
    fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:7 label: N/A
    uuid: 767943ce-1fd1-40ac-8290-109ef2e820fd
  ID-2: /boot/efi raw-size: 512 MiB size: 511 MiB (99.80%)
    used: 296 KiB (0.1%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:6 label: BOOT
    uuid: 849A-1063
  ID-3: /home raw-size: 900 GiB size: 900 GiB (100.00%)
    used: 625.24 GiB (69.5%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:7
    label: N/A uuid: 767943ce-1fd1-40ac-8290-109ef2e820fd
Swap:
  Alert: No swap data was found.
Unmounted:
  ID-1: /dev/nvme1n1p1 maj-min: 259:1 size: 512 MiB fs: vfat label: N/A
    uuid: 8BCC-FA41
  ID-2: /dev/nvme1n1p2 maj-min: 259:2 size: 70 GiB fs: ext4 label: root
    uuid: b8e4ec89-794c-4ce3-b10a-0102bf25e5b4
  ID-3: /dev/nvme1n1p3 maj-min: 259:3 size: 350 GiB fs: ext4 label: home
    uuid: c2c4dab5-0a58-42d4-b279-2791c65f4a17
  ID-4: /dev/nvme1n1p4 maj-min: 259:4 size: 8 GiB fs: swap label: SWAP
    uuid: 89ff7953-8699-42ab-bf57-98a619111bac
USB:
  Hub-1: 1-0:1 info: hi-speed hub with single TT ports: 16 rev: 2.0
    speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip-ID: 1d6b:0002
    class-ID: 0900
  Device-1: 1-6:2 info: Integrated Express ITE Device(8291)
    type: keyboard,HID driver: N/A interfaces: 2 rev: 2.0
    speed: 12 Mb/s (1.4 MiB/s) lanes: 1 mode: 1.1 power: 100mA
    chip-ID: 048d:ce00 class-ID: 0300
  Device-3: 1-12:4 info: Texas Instruments PCM2902 Audio Codec
    type: audio,HID driver: hid-generic,snd-usb-audio,usbhid interfaces: 4
    rev: 1.1 speed: 12 Mb/s (1.4 MiB/s) lanes: 1 mode: 1.1 power: 100mA
    chip-ID: 08bb:2902 class-ID: 0300
  Device-4: 1-13:5 info: Chicony HD Webcam type: video driver: uvcvideo
    interfaces: 4 rev: 2.0 speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0
    power: 500mA chip-ID: 04f2:b68b class-ID: 0e02 serial: <filter>
  Device-5: 1-14:6 info: Intel AX200 Bluetooth type: bluetooth driver: btusb
    interfaces: 2 rev: 2.0 speed: 12 Mb/s (1.4 MiB/s) lanes: 1 mode: 1.1
    power: 100mA chip-ID: 8087:0029 class-ID: e001
  Hub-2: 2-0:1 info: super-speed hub ports: 8 rev: 3.1
    speed: 10 Gb/s (1.16 GiB/s) lanes: 1 mode: 3.2 gen-2x1 chip-ID: 1d6b:0003
    class-ID: 0900
  Device-1: 2-2:2 info: Realtek Card Reader type: mass storage
    driver: usb-storage interfaces: 1 rev: 3.0 speed: 5 Gb/s (596.0 MiB/s)
    lanes: 1 mode: 3.2 gen-1x1 power: 800mA chip-ID: 0bda:0316 class-ID: 0806
    serial: <filter>
  Hub-3: 5-0:1 info: hi-speed hub with single TT ports: 2 rev: 2.0
    speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip-ID: 1d6b:0002
    class-ID: 0900
  Hub-4: 6-0:1 info: super-speed hub ports: 2 rev: 3.1
    speed: 10 Gb/s (1.16 GiB/s) lanes: 1 mode: 3.2 gen-2x1 chip-ID: 1d6b:0003
    class-ID: 0900
Sensors:
  System Temperatures: cpu: 53.0 C pch: 67.0 C mobo: N/A
  Fan Speeds (rpm): N/A
Info:
  Processes: 324 Uptime: 8m wakeups: 7 Init: systemd v: 254 default: graphical
  tool: systemctl Compilers: gcc: 13.2.1 alt: 12 clang: 16.0.6 Packages: 4362
  pm: pacman pkgs: 4351 libs: 618 tools: octopi,pamac,paru,yay pm: flatpak
  pkgs: 11 Shell: fish v: 3.6.1 running-in: kitty inxi: 3.3.30

I finally switched over to Wayland now that it’s working for me (when I would log in under Wayland, it would previously just kick me back to the login screen immediately, making it unusable). Ostensibly upgrading the kernel helped this, since I’m running 6.6 now, and switching back to 6.1 breaks the login screen again.

However, I’m having this same issue where my framerate is stuck at 60 Hz, and hovering over the information bubble reads: “60 Hz is the only refresh rate supported by this display”. I have a 144 Hz monitor (90% sure it’s an Asus VG248QE), a GTX 1070, and a DisplayPort output. Switching back over to X11 immediately fixes the issue.


Coincidentally, switching to Wayland also broke desktop effects for me on my desktop which has an Nvidia dGPU (GTX 1070). For example, there’s no longer a genie effect when minimizing/maximizing windows, windows no longer become translucent when I move them, and there’s no longer a hexagon effect when closing out of a window. However, these effects still work just fine on my laptop (Wayland, kernel v6.6) where I have an Intel iGPU. Likewise, Wayland somehow stopped detecting my optical out, which was the last straw for me until I switched back over to X11. I’ll probably try again with KDE 6.0.