write-edid – writes custom EDID data into HDMI adapter over I2C on Linux
github.com
github.com
Can it just do that out of the blue? How did you even nail down that as the root cause?
If anyone knows how to apply this to a specific monitor, please tell me how!
This thankfully never happens if the monitor is connected before the laptop boots. But I have no idea if this is fundamentally a problem with the laptop or the monitor since my previous computer never triggered this issue.
I'm glad EDID tools and resources exist for Linux. If I ran Windows exclusively I'm pretty sure I wouldn't ever have figured out how to write to I2C.
Reviewing my investigation notes from a year ago when I enabled I2C tracing, the issue is somehow caused by Xorg writing 0x00 to chip-address 0x54, data-address 0x20 when the monitor is connected. Although, I'm pretty sure I wasn't able to manually write to this location using i2cset, possibly due to the write-protection mechanism - my memory's hazy here. This is where I'd have to continue investigating if I ever get around to it again. But I'd expect this to not even be possible - the write-protection _should_ block a write through the wrong address.
Bit of a tangent rant here - The LG77CX has a native res of 3840x2160, but the damned display's edid lists 4096x2160 as the "maximum", even though it causes skewing of the image on the display.
If you want to use DSR on nvidia cards, it bases it to the highest res, NOT the native res, which... causes skewing. If you then manually override the EDID data for the display via EITHER the windows registry or an unsigned monitor profile ( which requires you to disable driver signing overall! ), the nvidia control panel disables basically all configurable functionality; presumably so that you can't force DSR with a faked display resolution, because it used to work in older driver versions ( which are now too old to support 3k or 4k series cards )
It's also possible to do this by probing with the appropriate i2c EEPROM driver and using that to dump the EEPROM, program it, and verify the contents.