EDID stands for Extended Display Identification Data. It's a 128 byte value which describes a displays properties and features. It can be utilized as a last resort measure to fix display issues in macOS if all other attempts of fixing the issue (modifying the Framebuffer, using Whatevergreen boot arguments, etc.) fail.
- Fixing Black Screen on Wake
- Fixing 8 Apples Glitch and scrambled screen
- Issues when a second Monitor is connected
- Unlocking additional resolutions and refresh rates
- Dump EDID
- Open/modify EDID
- Export EDID
- Get EDID Hex Value
- Inject it via
DeviceProperties
- Download and unzip DarwinDumper
- Run the App
- In "Save Path", select a path like "Documents"
- Click on "Deselect All Dumps"
- Select "EDID":
- Click on "Run"
- Once the process is completed, a Finder Window will open and show the dumped files:
:
- Download FixEDID (click on "Code" and select "Download ZIP")
- Unzip the file
- Open FixEDID App (located under "FixEDID-master/Release_10.7 and +"). If macOS won't let you run it, open it wia right-click menu.
- Click on "Open EDID binary file":
- Navigate to the dumped
EDID.bin
file and open it - Select "Apple iMac Retina Display (16:9)" if your display supports HD and High DPI, otherwise use whatever is appropriate for your display.
- Optional: click on "Add/Fix the monitor ranges" (if your EDID doesn't have them or they are bad)
- Optional: add scaled resolutions by entering the resolution and clicking add. For adding them to the list click the "Add Resolution" button.
- Finally, click on "Make":
- This will output 3 files on the desktop:
- A modified
EDID.bin
DisplayMergeNub.kext
DisplayVendorID-XXX
folder, containing a display override file (without extension)
- A modified
- Enter the
DisplayVendorID-XXX
folder - Open the
DisplayProductID-…
file with a Plist Editor like ProperTree - Copy the value under
IODisplayEDID
to the clipboard:
- Open your
config.plist
- Go to
DeviceProperties/Add
- Locate the Framebuffer Patch for your iGPU in
DeviceProperties
:PciRoot(0x0)/Pci(0x2,0x0)
- Add Key
AAPL00,override-no-connect
, Type:Data
- Press CMD+V to enter the EDID as hex in the
Value
field: - Save your
config.plist
and reboot - Verify that the EDID has been applied. Open Terminal and enter:
ioreg -lw0 | grep -i "IODisplayEDID" | sed -e 's/.*<//' -e 's/>//'
- The output should be identical to the value in your config.
Hopefully this will resolve the issue!
Important
If you added additional/custom resolutions, you also need to copy the DisplayVendorID-XXX
folder containing the display override to /System/Library/Displays/Overrides
or install the DisplayMergeNub.kext
in /System/Library/Extensions
. Since S/L/E
is write-protected in macOS 10.15 and newer by default, doing this is not recommended.
- Default resolutions for my laptop's display (before injecting EDID):
- After injecting EDID (with "Add/Fix the monitor ranges" option enabled):
Note
Injecting the EDID only makes sense, if you need a specific resolution and/or display refresh rate (higher or lower) that is supported by the display panel but is not available in the display settings menu!
If the above method doesn't work to fix black screen issues after wake, try HibernationFixup.kext
in combination with boot-arg -hbfx-disable-patch-pci
instead.
- For fixing purple/magenta screen issues, try this fix
- Acidanthera for OpenCore, Whatevergreen and HibernationFixup
- Blackosx for DarwinDumper
- andyvand for FixEDID
- Daliansky for original guide