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.
Look for the DisplayLink USB device in System Information.app. DisplayLink uses USB 3.0. USB 3.0 is ≈ 4 Gbps (5 Gbps times 8/10 for the 8b10b encoding = 4 Gbps).
Video data rate is pixel clock times bits per pixel. 4K60 usually has a pixel clock of 533 MHz. 533 million pixels per second x 30 bits per pixel = 15.9 billions bits per second (Gbps). The CPU must compress video to transmit to the DisplayLink video controller at reasonable refresh rates (60 Hz).
I don't think there are any faster DisplayLink devices. The CPU is doing all the work. A faster DisplayLink would require the CPU to do more work.
To lessen the work required by the CPU, reduce the resolution and/or refresh rate.