How to override monitor EDID on intel gfx using registry

Warning: before trying to override the EDID using this registry mod, please note that adding a wrong EDID value in registry is going to make the monitor not work past the windows startup, until the registry value is removed, and to make the monitor working again you will need to remove the added registery settings, and to do that, you will need to have another monitor to be able to use the computer, or, you should know how to edit the registry settings offline using WinPE CD or some sort of recovery environment.

What this mod does is:
– make a HDMI display act as if it is a DVI display
– change the label in intel graphics control panel from ‘Digital Television’ to ‘Digital Display’
– disable YCbCr or limited RGB (16-235) and enabled full range RGB (0-255) for better contrast
– returns back saturation and hue control in intel graphics control panel
– removes audio capabilities of the monitor (there maybe alternative method mentioned at the bottom to preserve audio, but not tested)

Step 1.
first, you need to create a file containing the current EDID, in this case, will have the full 256 bytes, which include the EDID + CEA Extension, although this might work fine for 128 bytes EDID only.

You will need an application “Monitor Asset Manager”, run moninfo.exe, from the left select the correct monitor, and save the EDID as bin file.

Step 2.
using a hex application, like HexDen, you need to modify the EDID data, in this example, what we will do is make an HDMI display appears as-if it is a DVI display.

What we will edit are the bytes 7E and 7F, the last 2 bytes of the 128 bytes EDID.

byte 7E should be changed from 01 to 00 , which will make the computer ignores the CEA extension block completely
byte 7F should be increased by one, if it is 9C change to 9D, if it is FF change to 00, this is the checksum of the EDID block

Step 3.
find the registry instance of the intel graphics under:
where XXXX could be 0000 or 0001 ..etc, it was 0001 on my computer.
Create a dword value of ‘ReadEDIDFromRegistry’ , and set it to ‘1’.

Create a binary value named FakeEDID_%a_%b_%c%d_%e%f
%a = not sure what it should be, might be input id, in my laptop setting ‘2’ worked, if this mod didn’t work, try to create new binary values while setting %a differently 0,1,2..etc.
%b = 0
%c = byte 09 of the EDID
%d = byte 08 of the EDID, while removing preceding zeros
%e = byte 0B of the EDID
%f = byte 0A of the EDID, while removing preceding zeros

if the bytes 08 to 0B = 4C 2D 51 0A
the value name = FakeEDID_2_0_2d4c_a51

put in that above value the first 128 bytes of the EDID hex.
(adding binary data to registry the outside the scope of this post, one idea you may try, 1. create a new key with binary values and fill the binary data with dummy hex, 2. export the .reg file of that key, 3. edit the .reg file with the correct EDID hex, 4. load the .reg file, 5. copy-paste the binary data from within regedit from your dummy create value to the FakeEDID_..)

Create a second binary value, same as above, but with %b = 1, and insert in it the remaining 128 bytes of the EDID.

Step 4.
restart the computer.

What if you want to run in RGB mode while still having audio from the screen ?

This is not tested, but I suppose you need to edit the EDID to make the screen appears as if it doesn’t have YCrCb support.
using An EDID editor, like ‘AW EDID Editor’, open the EDID data, and under the CEA Extension, remove YCrCb 4:4:4, and YCrCb 4:2:2.