Post Reply
EDID/DisplayID Writer
04-04-2022, 07:00 PM
Post: #1
EDID/DisplayID Writer
EDID/DisplayID Writer is a tool for writing a new EDID or DisplayID to the display.

Download: EDWriter-beta.zip

Warning: This program modifies the EEPROM data in the display. If something goes wrong, it can make the display unusable until the data is corrected. NVIDIA in particular will not recognize a display with invalid data, so you would need to use an AMD GPU or some other method to fix the data. Use at your own risk.

A message from ToastyX:

Over the years, I have created various monitor-related software and provided support for free. I would like to continue providing updates and work on new ideas, but I need your support. If you find my software useful, please consider supporting me through Patreon:

[Image: patreon.png]

Requirements:
  • Windows Vista or later
  • AMD/ATI or NVIDIA GPU with appropriate driver installed (Intel is currently not supported)
EDID usage:
  • To save the current EDID to a file, click the "Read EDID" button, and then click the "Save File..." button.
  • To write a new EDID to the display, click the "Load File..." button to choose a file, and then click the "Write EDID" button.
If the EDID has a corrupted header, invalid extension block, or invalid checksum, it will offer to fix the data. No changes are made to the display until clicking the "Write EDID" button.

DisplayID usage:
  • To save the current DisplayID to a file, click the "Read DisplayID" button, and then click the "Save File..." button.
  • To write a new DisplayID to the display, click the "Load File..." button to choose a file, and then click the "Write DisplayID" button.
DisplayID monitors typically have two data banks, one for EDID backward compatibility, and one for DisplayID. It's possible for the DisplayID to be in the EDID bank with no backward compatibility, but this is not currently common.

Notes:

Most monitors have the EEPROM write-protected. Some monitors allow writing by accessing the service menu and enabling burn-in mode or some other setting. Another method is to physically disconnect the write-protect pin on the EEPROM chip as described in this guide: https://blurbusters.com/zero-motion-blur/hardware-mod/

Due to driver limitations, this program can only read and write up to 256 bytes. That is enough for an EDID with one extension block or one DisplayID block.
Find all posts by this user
Quote this message in a reply
04-23-2022, 12:07 PM (Last edited: 04-23-2022, 12:11 PM by bderleta)
Post: #2
RE: EDID/DisplayID Writer
Thank you! Your tool allowed me to fix my old Dell 1704FPV with corrupted DVI EDID (apparently wrong checksum, I know no reason). Of course, the EEPROM was write-protected, but having it dumped made things a lot easier. I crafted an EEPROM writer using NodeMCU and modified the checksum to calculated one using a simple pieces of LUA software (I can provide more details if anyone interested).

https://photos.app.goo.gl/W5GERTXfE64rXBP97

One note regarding the guide linked: it seems (and probably is) dangerous to desolder WP pin of EEPROM as a first approach. I would recommend first measure Vcc-WP resistance - that's because some vendors don't tie WP to Vcc directly, but via some pull-up resistance (to enable, for example, pulldown controlled via some GPIO). In that case it's perfectly sufficient to temporarily bridge WP to Vdd (GND), without any serious soldering/cutting.

I used W10 x64, DVI-HDMI cable and MSI RX5700XT (I have two of these in MGPU conf.) for reading, unfortunately, didn't test the writing. Also perfectly read EDID from Dell U2718Q and U2720Q.
Find all posts by this user
Quote this message in a reply
04-24-2022, 02:48 AM
Post: #3
RE: EDID/DisplayID Writer
(04-23-2022 12:07 PM)bderleta Wrote:  One note regarding the guide linked: it seems (and probably is) dangerous to desolder WP pin of EEPROM as a first approach. I would recommend first measure Vcc-WP resistance - that's because some vendors don't tie WP to Vcc directly, but via some pull-up resistance (to enable, for example, pulldown controlled via some GPIO). In that case it's perfectly sufficient to temporarily bridge WP to Vdd (GND), without any serious soldering/cutting.
I haven't done any hardware mods, so if you have a better guide, I can link to it. I saw someone mention connecting the write-protect pin to ground, but I don't know if that's safe. I saw another site mention soldering a resistor: https://www.imsolidstate.com/archives/879

In the case of the ASUS VG248QE, it's possible to disable write protection for DVI by enabling "BURNIN" mode in the service menu (press and hold the menu button down while powering on the monitor, and then press the menu button to open the service menu). On many monitors, the service menu can be enabled by holding down one or two buttons while powering on the monitor.

I've also been looking for ways to bypass the GPU because NVIDIA GPUs will not recognize a monitor with a bad EDID. AMD GPUs are fine as you've noticed. Do you know of any USB to I2C devices that can be programmed with C or C++?
Find all posts by this user
Quote this message in a reply
05-12-2022, 06:28 PM (Last edited: 05-12-2022, 06:30 PM by surfacedockguy)
Post: #4
RE: EDID/DisplayID Writer
Thanks for this tool. I was able to correct a checksum error on one of my DisplayPort monitor simulator dongles that I use for testing hubs and docking stations.

The Synaptics VMM6210 MST chipset inside one of my docking stations did NOT like the checksum error and refused to sync up to the dongle. Once the EDID was corrected, it worked fine.


Now I'll try to edit the EDID to have some more resolutions Smile


Can you explain the 256 byte driver limitation? It is because of one of the Microsoft APIS not allowing a larger payload? Is it plausible to write more than 256 in Linux?
And any chance of releasing this tool open source?
Find all posts by this user
Quote this message in a reply
05-13-2022, 01:19 AM
Post: #5
RE: EDID/DisplayID Writer
(05-12-2022 06:28 PM)surfacedockguy Wrote:  Can you explain the 256 byte driver limitation? It is because of one of the Microsoft APIS not allowing a larger payload? Is it plausible to write more than 256 in Linux?
And any chance of releasing this tool open source?
Microsoft doesn't have any APIs for EDID reading/writing. I'm using NVIDIA's NVAPI and AMD's ADL SDK to communicate with the display. Setting the segment pointer and reading/writing must happen in the same transaction with a repeated start, but NVIDIA and AMD don't provide a way to do a repeated start, so it can only access the first 256-byte segment. The segment pointer resets after every stop, so I can't split the transactions. It might be possible to do this in Linux, but I don't know if there are any tools that can.

I was planning to release the source code with the final version, but I've uploaded the beta source code for you here: https://www.monitortests.com/download/ED...ta-src.zip
Find all posts by this user
Quote this message in a reply
 Post Reply


Forum Jump:


User(s) browsing this thread: 1 Guest(s)