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 That's a good point. Let's see if there are any other users that can get this to work on their specific setup.
I do have an older Mac mini (Late 2014), but that one is not M1 based and has completely different plist file. This solution will not work on it.
For reference example, I'm attaching my working M1 display plist file here:
As a last resort, you can replace the UUID's with your own and test it, but it's not something I can recommend. This is just for a reference example.
Thank you again for all your help for testing this workaround and for posting your detailed findings.