A script to fix EDID problems on external monitors in macOS.
-
Connect only the problem display.
-
Create this directory structure (if it doesn't already exist):
sudo mkdir -p /Library/Displays/Contents/Resources/Overrides
-
Download this ruby script in that directory:
cd /Library/Displays/Contents/Resources/Overrides sudo curl -O https://gist.githubusercontent.com/ejdyksen/8302862/raw/patch-edid.rb
Note: You may want to use adaugherity's version of the script instead.
-
Run the script we just downloaded (as root again). This creates a new display override plist file.
cd /Library/Displays/Contents/Resources/Overrides sudo ruby patch-edid.rb
-
Unplug and replug in the problem display.
- The original forum thread
- An improved version of the script by adaugherity
- An explaination of the problem from Atomic Object's blog
- Thanks so much to @stackrainbow for pointing out that this can be done without disabling SIP.
- This version appears to work in Catalina and Big Sur. See earlier revisions for what worked (with disabling SIP) in earlier versions of macOS, which require the override plist to be in a different directory.
@tsujp Thank you so much for the detailed explanation and for checking this! I appreciate it a lot.
There must be something that we're missing.
Do you have any custom Display Override file created by an app in
/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-[xxxx]/DisplayProductID-[xxxx]
the [xxxx] is the hex of the Manufacturer and Model of your Monitor.
If nothing else works, the other thing that comes to mind is to check if setting the resolution to 1920x1080 at 60Hz before making the plist change would make any difference. This is just for reference, to make sure that the resolution or the high 144Hz refresh rate doesn't prevent the HiDPI.