4 ms·
I came across a monitor with an EDID that was out of the spec for what constitutes a valid EDID, and it actually exposed a bug in the linux i915 driver, I had a
by nickysielicki 9y ago
I came across a monitor with an EDID that was out of the spec for what constitutes a valid EDID, and it actually exposed a bug in the linux i915 driver, I had all this corrupted output.
While the patch was getting merged, I was able to dump the EDID, edit it to be within spec, and then was able to actually flash it BACK to the monitor by using nothing other than this program on github [1], and the HDMI port on a Dell E6430.
I was amazed that was possible to write an EDID from simply connecting to the port, didn't need to open anything up, was able to do it without any special equipment, etc.. I never realized how complicated some of these display protocols can be, but part of it is just i2c, and I guess the hardware is not very restrictive on how that i2c controller can be used outside of display purposes.
Someone with a Raspberry Pi could go around a college campus and wreak havoc if they wanted. Goes to show you that you should not trust any public peripheral, not ever. That's especially important in the age of USB-C and mobile devices where charging and data are put on the same port.
[1]: https://github.com/bulletmark/edid-rw https://github.com/bulletmark/edid-rw
- kens 9y agoEditing a monitor's EDID data would be a sneaky attack. Someone might never figure out why their monitor suddenly became monochrome or only supported 640x480. Or you could gaslight someone by making the resolution a bit worse every day.
- fra 9y agoOh it's so much worse than that. The EDID is typically implemented with an I2C EEPROM connected directly to the AUX lines. The "edid read" procedure is no more than reading "0xA0", the standard EEPROM I2C address, over AUX. The first time I ever sniffed that bus and saw a simple "read" command to that address I'd seen in so many other places before I almost fell off my chair.
- deleted 9y ago[deleted]
- pro_zac 9y agoThere should be a write protect for the EDID on displays. A display I was working with didn't have the write protect enabled and my Nvidia graphics card decided to overwrite the EDID for me. Had to reprogram it before my PC would recognize the display again.