Monitor refresh rate bugs out after going to sleep

Same issue here — Alienware AW3425DW (3440x1440 OLED, 240Hz) on CachyOS, NVIDIA RTX 5090, driver 595.45.04, KDE Plasma 6 Wayland.

After DPMS sleep, the monitor locks to 59.97Hz at native res and all high-refresh modes (120/175/240Hz) disappear. Only a full reboot restores them — toggling the output via software does not.

Dumping the EDID post-sleep reveals the root cause: block 2 (the third 128-byte block) becomes a corrupt copy of block 0 — it starts with the standard 00 ff ff ff ff ff ff 00 EDID header instead of
a valid extension tag. Block 0 only contains a single 3440x1440 timing at 59.97Hz. The high-refresh timings live in block 2, which is gone after wake.

On a fresh boot, block 2 is valid and all modes are present. This strongly suggests the driver is either misreading or corrupting the EDID on resume rather than the monitor sending bad data.

Workaround that works: Capture the clean EDID at boot, install it as a firmware override (/lib/firmware/edid/), and pass drm.edid_firmware=DP-1:edid/aw3425dw.bin as a kernel parameter. This forces
the driver to use the known-good EDID regardless of what it reads after wake. Just applied this — will report back after testing.

This seems like an NVIDIA driver bug on Wayland where the EDID re-read on resume is broken or partially handled. Would appreciate a proper fix on the driver side.

Update: The workaround holds — after a sleep/wake cycle, all refresh rate modes (120/175/240Hz) are back and selectable. Consider this confirmed.

One additional side effect worth mentioning: the EDID corruption triggers a full disconnect/reconnect cycle on wake, which also breaks KDE’s lock screen (kscreenlocker). PAM rejects the password immediately after wake with “Authentication attempt
too soon” — you have to wait ~10–15 seconds before typing. The EDID firmware override fixes this too since it prevents the disconnect/reconnect from happening.

On the root cause: this never happens on Windows with the same monitor and GPU, which strongly suggests the bug is in the Linux NVIDIA driver’s resume path — likely a malformed or poorly-timed DP AUX transaction when re-reading the EDID on wake,
causing the monitor to return garbage for block 2. Windows handles it correctly. The workaround forces the driver to skip that re-read entirely, which is why it works.

Summary of fix:

  1. Capture clean EDID at boot: cp /sys/class/drm/card1-DP-1/edid ~/aw3425dw.bin
  2. Install as firmware override: sudo cp ~/aw3425dw.bin /lib/firmware/edid/aw3425dw.bin
  3. Add kernel parameter: drm.edid_firmware=DP-1:edid/aw3425dw.bin
  4. Rebuild initramfs: sudo mkinitcpio -P

Additional info for the engineering team: I have a second monitor also connected via DisplayPort (LG ULTRAGEAR+, 3840x2160 OLED, 240Hz) on DP-2, and it does not exhibit this issue — high-refresh modes survive sleep/wake fine. Its 240Hz timing is
also in block 2 (DisplayID extension), so the EDID structure is similar. This suggests the bug may be specific to DP-1 or something particular to the AW3425DW’s interaction with the driver on resume.