Is there any persistent files of stored EDID information from previously plugged in monitors?
1
vote
0
answers
489
views
**TL/DR:**
I have an ACER GN246HL monitor with HDMI port which stopped working properly, probably due to corrupted monitor EEPROM. As a work-around on my Ubuntu 22.10 machine I need to figure out the correct monitor EDID by retrieving and verifying the EDID data from sources other then the monitor itself (in it's defective state). Is there a process in UBUNTU 22.10 that persistently stores monitor EDID data on disk so it survives reboot? If the answer is yes, I hope I could potentially retrieve the EDID for my monitor as it was stored in the past when the monitor was still working correctly.
**What I know/suspect so far:**
The monitor is not recognized anymore by the BIOS or the kernel during boot up (both on Ubuntu and Win10, irrespective of GPU or GPU driver). I suspect the monitor EEPROM has somehow been corrupted or is malfunctioning so that either the monitor EDID is garbage or the DDC/I2C communication between PC and monitor is not working properly anymore. However, the monitor is not completely dead or unusable. On my Ubuntu 22.10 machine, despite staying 100% black during boot-up sequence, it comes back to live after boot-up by displaying the Ubuntu log-in page. From there, log-in and everything else works and the monitor performs (almost) as usual. The resolution is correct and there is no lag, image noise or stutter when playing videos, for example. While displayed colors seem basically OK, there is still some problem with the color gamut as manifested mainly by noticeably "burnt out" highlights in video playback. On Windows things are a bit worse, one machine with Win10 boots (without displaying anything) but fails to display any log-in page. On a second Windows10 box, the BIOS complains (most likely about a missing monitor) and refuses to boot.
**What I think might be the solution (for Ubuntu):**
All the above suggests the problem can be fixed by instructing the kernel to read correct monitor EDID from a file during boot-up instead of trying to get it from the monitor EEPROM.
**What is still missing to fix the problem:**
I need to find the correct EDID data for my monitor, but I cannot get it from the monitor itself. Tried various tools, but all seem to indicate that I2C bus address for the monitor is missing/not working. I found three potential routes to obtain EDID from other sources than the monitor:
1) A github [repository](https://github.com/linuxhw/EDID) has EDID data for the ACER GN246HL. But the EDID varies with manufacturing date and there is no EDID for the manufacturing date of my monitor in the repository. I don't know, maybe one of the existing EDID can be modified to suit my monitor but I have not yet tried to figure out if and how this could be done.
2) I have installed a tool called Monitor Asset Manager v9.2 on a Windows10 machine. It can read the EDID of attached monitors and potentially also create INF files to modify EDID data on Windows. Interestingly, the tool indicates that Windows stores EDID data permanently in registry. There are clearly registry entries with EDID data for all monitors that have been plugged into this Windows box in the past, including the ACER GN246HL. However, I don't know yet how to extract this EDID data (and convert it to a binary) and then how to make sure that extracted EDID is still from the time the monitor was working correctly and wasn't changed by accident when the same but now defective monitor was plugged in at a later point in time.
3) This is pretty much speculation, but given that there is persistent EDID data stored in registry on Windows machines I was wondering if something similar occurs on Linux machines.
The answer is probably no, but how is it possible that the monitor comes back to life after boot-up and correctly displays the log-in page?
**Finally, the question to the forum:**
I think the EDID data is temporarily stored in a xorg.0.log file. But this does not work in my case since the kernel fails to access the EDID data of my ACER GN246HL monitor due to corrupted monitor EEPROM. Therefore my question, is there a process in UBUNTU 22.10 that persistently stores EDID data on disk? If the answer is yes, I assume I could potentially retrieve the EDID for my monitor that was stored in the past when the monitor was still working correctly.
**Background or "Why did the monitor stop working properly?":**
I do not know what exactly did happen. The monitor worked fine for years in single and dual monitor set-ups on Windows and Linux using a variety of GPUs and GPU drivers. It also worked in a set-up with two PC and a KVM switch. It seems like the circuitry of this monitor got corrupted when I recently swapped out one of the PC's in the KVM set-up to temporarily work on an SBC with an X86 intel processor. When I manually switched the KVM to the SBC machine the ACER monitor in the dual monitor set-up went immediately black and the second monitor changed resolution. I don't think I will ever find out what exactly went wrong, but it might be related to poor firmware on the SBC which I had only used in headless mode until then.
Asked by yesno
(341 rep)
Apr 16, 2023, 06:02 PM