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 for the update.
You can try making a backup of the displays plist file and deleting it completely. After a restart, macOS should recreate that file with only the UUID of your monitor.
If the CurrentInfo key is not in the newly created file, you can do the rotation trick (rotate your monitor to 180 in System Preferences > Displays and rotate it back to 0) and it should create it too.
If you use a VM or a Dock, it will not create the UUID of the monitor, so that might be the cause of the issue.
Please check to make sure that there is no duplicate displays plist file in /Users/[YourUsername]/Library/Preferences/ByHost
If there is, you can make a backup of it and delete it (or you'll need to modify that one as well)
Also, please note that the scaling slider doesn't appear in the System Preferences > Displays. It just works with the applied settings in the plist file (until you manually change the resolution again).