https://bugs.kde.org/show_bug.cgi?id=526153
Bug ID: 526153
Summary: powerdevil runs DDC/CI probes on the Valve Index
(non-desktop HMD), wedging its EDID
Classification: Plasma
Product: plasmashell
Version First master
Reported In:
Platform: NixOS
OS: Linux
Status: REPORTED
Severity: major
Priority: NOR
Component: Power management & brightness
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: 1.0
powerdevil uses libddcutil to check whether connected displays support DDC/CI
brightness control. It runs that probe against the Valve Index VR headset as
well. The Index is a DisplayPort sink with the DRM non-desktop property set,
and its firmware breaks when a DDC/CI read hits I2C address 0x37, after that it
stops answering EDID reads until the headset is power-cycled.
The user-visible result: the kernel logs "EDID err: 2" / "EDID_NO_RESPONSE",
amdgpu keeps the connector but drops non-desktop=0 and falls back to 640x480,
and the headset is unusable until it is unplugged/replugged. This shows up
around boot/login and on resume.
This is already fixed upstream in ddcutil 3.0.2 (issue rockowitz/ddcutil#632,
PR rockowitz/ddcutil#637). ddcutil now ships a built-in ignore list that
includes the Index, equivalent to --ignore-mmid VLV-Index_HMD-37288. So one fix
is for powerdevil to require/update to libddcutil >= 3.0.2.
The better fix on the powerdevil side is to skip DDC/CI entirely on DRM
connectors whose non-desktop property is 1. VR headsets are always non-desktop,
so that avoids probing any HMD without needing a per-device list.
For users stuck on an older libddcutil, the workaround is:
mkdir -p ~/.config/ddcutil
printf '[global]\noptions = --ignore-mmid VLV-Index_HMD-37288\n' >
~/.config/ddcutil/ddcutilrc
libddcutil reads that file, so powerdevil honors it after a restart.
STEPS TO REPRODUCE
1. Connect and power on a Valve Index HMD on DisplayPort.
2. Run KDE Plasma with powerdevil (default).
3. Boot or log in.
OBSERVED RESULT
The headset stops responding to EDID reads (EDID_NO_RESPONSE), amdgpu falls
back to 640x480 with non-desktop=0, and the headset stays unusable until it is
power-cycled. Stopping powerdevil prevents it.
EXPECTED RESULT
powerdevil should not run DDC/CI brightness probes on non-desktop connectors,
and/or should use libddcutil >= 3.0.2 so the Index is ignored by default. The
headset should come up normally.
SOFTWARE/OS VERSIONS
Operating System: NixOS 26.11
KDE Plasma Version: 6.7.5
KDE Frameworks Version: 6.30.0
Qt Version: 6.11.2
Kernel Version: 7.2.6-zen2 (64-bit)
Graphics Platform: Wayland
Processors: 32 × AMD Ryzen 9 5950X 16-Core Processor
Memory: 64 GiB of RAM (62,7 GiB usable)
Graphics Processor: NVIDIA GeForce RTX 3090
ADDITIONAL INFORMATION
Root cause diagnosed by omus. Upstream:
https://github.com/rockowitz/ddcutil/issues/632 and
https://github.com/rockowitz/ddcutil/pull/637. On ddcutil < 3.0.2 it is needed
to use the ddcutilrc option above.
--
You are receiving this mail because:
You are watching all bug changes.