- Download the patch-edid.rb script from the forums thread above and put it in your home directory.
- Connect only the external monitor(s) in question (I closed my MacBook lid, for example). The script will make override files for any connected monitor.
- Type “ruby patch-edid.rb” in Terminal.
- A new folder will be created in your home directory. Move it into the “/System/Library/Displays/Contents/Resources/Overrides” folder. If Finder tells you that you are overwriting an existing folder, consider backing it up first.
- Restart your computer, enjoy your monitor.
-
-
Save guipacheco2/85ae80660a7ac987c12b to your computer and use it in GitHub Desktop.
| <?xml version="1.0" encoding="UTF-8"?> | |
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| <plist version="1.0"> | |
| <dict> | |
| <key>DisplayProductName</key> | |
| <string>Display with forced RGB mode (EDID override)</string> | |
| <key>IODisplayEDID</key> | |
| <data>AP///////wAebfJZAQEBAQEXAQSlQxx4hsqVplVOoSYPUFSlS4BxT4GAgcCp | |
| wLMAAQEBAQEBfkgA4KA4H0BAQDoApSIhAAAYAjqAGHE4LUBYLEUApSIhAAAa | |
| AAAA/ABMRyBVTFRSQVdJREUKAAAA/QA4Sx5aGAAKICAgICAgAMc= | |
| </data> | |
| <key>DisplayVendorID</key> | |
| <integer>7789</integer> | |
| <key>DisplayProductID</key> | |
| <integer>23026</integer> | |
| </dict> | |
| </plist> |
Follow these steps to disable SIP:
- Restart your Mac.
- Before OS X starts up, hold down Command-R and keep it held down until you see an Apple icon and a progress bar. Release. This boots you into Recovery.
- From the Utilities menu, select Terminal.
- At the prompt type exactly the following and then press Return: csrutil disable
- Terminal should display a message that SIP was disabled.
- From the menu, select Restart.
You can re-enable SIP by following the above steps, but using csrutil enable instead.
| #!/usr/bin/ruby | |
| # Create display override file to force Mac OS X to use RGB mode for Display | |
| # see http://embdev.net/topic/284710 | |
| # | |
| # Update 2013-06-24: added -w0 option to prevent truncated lines | |
| require 'base64' | |
| data=`ioreg -l -w0 -d0 -r -c AppleDisplay` | |
| edid_hex=data.match(/IODisplayEDID.*?<([a-z0-9]+)>/i)[1] | |
| vendorid=data.match(/DisplayVendorID.*?([0-9]+)/i)[1].to_i | |
| productid=data.match(/DisplayProductID.*?([0-9]+)/i)[1].to_i | |
| puts "found display: vendorid #{vendorid}, productid #{productid}, EDID:\n#{edid_hex}" | |
| bytes=edid_hex.scan(/../).map{|x|Integer("0x#{x}")}.flatten | |
| puts "Setting color support to RGB 4:4:4 only" | |
| bytes[24] &= ~(0b11000) | |
| puts "Number of extension blocks: #{bytes[126]}" | |
| puts "removing extension block" | |
| bytes = bytes[0..127] | |
| bytes[126] = 0 | |
| bytes[127] = (0x100-(bytes[0..126].reduce(:+) % 256)) % 256 | |
| puts | |
| puts "Recalculated checksum: 0x%x" % bytes[127] | |
| puts "new EDID:\n#{bytes.map{|b|"%02X"%b}.join}" | |
| Dir.mkdir("DisplayVendorID-%x" % vendorid) rescue nil | |
| f = File.open("DisplayVendorID-%x/DisplayProductID-%x" % [vendorid, productid], 'w') | |
| f.write '<?xml version="1.0" encoding="UTF-8"?> | |
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| <plist version="1.0">' | |
| f.write " | |
| <dict> | |
| <key>DisplayProductName</key> | |
| <string>Display with forced RGB mode (EDID override)</string> | |
| <key>IODisplayEDID</key> | |
| <data>#{Base64.encode64(bytes.pack('C*'))}</data> | |
| <key>DisplayVendorID</key> | |
| <integer>#{vendorid}</integer> | |
| <key>DisplayProductID</key> | |
| <integer>#{productid}</integer> | |
| </dict> | |
| </plist>" | |
| f.close |
Hi, any possible way to force BGR (instead of rgb) with this script?
Since SIP is in charge of /System folder on macOS,
instead of doing it here:
/System/Library/Displays/Contents/Resources/Overrides
do it here:
/Library/Displays/Contents/Resources/Overrides
works for me on macOS 13 Ventura
It works, but limits resolution to 1080p. Which is not pretty on a 4k display. :(
Just came here to say THANK YOU!
Now I can use my OLED monitor in peace
Excellent! It worked on Sequoia. I had to install the RX570 VBIOS on my RX580 video card for the Hackintosh to work with graphics acceleration. The HDMI output was fine. However, when I needed the Dual DVI output for the second monitor, the image had pink and green colors, horrible. I used your method and it solved my problem. Remember that currently the folder to put the generated file is in "/Library/Displays/Contents/Resources/Overrides"
Currently the System folder is protected and does not accept modification.
You saved me! Thank you!
The /System/Library/Displays/Contents/Resources/Overrides folder is read-only.