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.
Hehe no worries mate thank you for the help.
So in my prior message what I did was completely delete both the
apple.com.windowserver.displays
plist file in/Library/Preferences
as well as in~/Library/Preferences/ByHost
. I then rebooted and it recreates only the plist file in/Library/Preferences
which contains noCurrentInfo
until I do the rotation trick; that gives me a new fresh plist.Yep, the resulting file (with the scale edited) looks like this: note it doesn't work even if I set the scale in the UnmirrorInfo too.
I'm sanity checking this UUID using the ColorSync Utility app which shows the displays UUID, you can see here they are the same:
No laptop dock or VM is being used here; the VM from before was to see what a default
/Library/Preferences/com.apple ...
plist looked like. I'm using the HDMI port which is part of the laptop shell. I've also tried this at different refresh rates too (but that shouldn't matter I think since the scaling is local to the machine only, there are still only 2560x1440 pixels going over the wire).There is none.
Gotcha. Well after a fresh reboot there is no effect for me: