https://bugs.kde.org/show_bug.cgi?id=515697
Bug ID: 515697
Summary: Graceful handling of missing EDID after suspend (offer
reuse of last known EDID)
Classification: Plasma
Product: KScreen
Version First 6.6.80
Reported In:
Platform: Arch Linux
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: common
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
There are several existing bug reports describing a very similar failure mode:
Bug 484037: Primary display loses its resolution configuration when resuming
from sleep (https://bugs.kde.org/show_bug.cgi?id=484037)
Bug 486504: Primary display changes to 640x480 resolution after suspend
(Wayland only) (https://bugs.kde.org/show_bug.cgi?id=486504)
Bug 483654: Primary monitor switches to 640x480 resolution after suspend
(https://bugs.kde.org/show_bug.cgi?id=483654)
Bug 490462: Waking up causes screen resolution to change
(https://bugs.kde.org/show_bug.cgi?id=490462)
All of these appear to involve cases where the monitor’s EDID is not available
or not acquired correctly after suspend/resume, causing the system to fall back
to a default low-resolution mode.
I am personally affected by this issue on an NVIDIA GTX 1080 Ti, and judging by
the number of reports, this affects a non-trivial number of users.
Observed behavior:
After suspend/resume (and sometimes after hotplug), the primary display comes
up at 640x480. No valid EDID is reported, and normal resolution/refresh rate
options are unavailable. Recovery typically requires power-cycling the monitor
(unreliable) or rebooting the system.
Inferred cause:
While the root cause appears to be at the driver or hardware level (EDID not
being read correctly), the failure propagates to user space as a complete loss
of display configuration.
I understand that this is not a KDE bug in the strict sense.
Workaround:
I have implemented a workaround that resolves the issue reliably:
When the monitor is working correctly, I save its EDID to a file. I then
install a udev rule that injects this cached EDID whenever the monitor is
detected.
Script:
#!/bin/bash
mountpoint -q /sys/kernel/debug || mount -t debugfs none /sys/kernel/debug
tee /sys/kernel/debug/dri/0000:01:00.0/DP-1/edid_override
< /usr/lib/firmware/edid/my-monitor.edid >/dev/null
udev rule:
ACTION=="change", SUBSYSTEM=="drm", DRIVERS=="nvidia", DEVPATH=="*DP-1",
RUN+="fix-edid.sh"
Once this is in place, power-cycling the monitor restores the correct
resolution immediately.
Proposed enhancement:
Even though the root cause lies outside KDE, KDE could handle this degradation
more gracefully.
When KScreen detects that no EDID is present, or EDID has no content regarding
resolution and refresh rates, and thus falls back to 640x480 resolution, it
could offer the user the option to reuse the last known valid EDID for that
output.
Possible user flow:
1. KScreen detects missing or invalid EDID.
2. The user is prompted to reuse the last valid EDID.
3. If accepted, KDE sets up the necessary override with appropriate privilege
escalation.
4. The user is asked to power-cycles the monitor and the display recovers
without reboot.
This would significantly improve the user experience in a situation that is
otherwise difficult to recover from.
--
You are receiving this mail because:
You are watching all bug changes.