Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?

This Gist contains the script and generated output file for an Acer B276HUL.

The pre-generated file below is known to work with:

  • OS X Mavericks
  • OS X Yosemite
  • OS X El Capitan

For El Capitan:

  1. Restart your Mac while holding Command-R: this puts your Mac into Recovery Mode.

  2. When in Recovery Mode, select Utilities > Terminal from the menu bar.

  3. In the Terminal type csrutil disable: this disables System Integrity Protection

  4. Restart your Mac and log in.

  5. Issue the following instructions:

    sudo mkdir /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-472
    sudo cp DisplayProductID-361 /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-472
  6. Restart your Mac while holding Command-R for Recovery Mode

  7. When in Recovery Mode, select Utilities > Terminal from the menu bar.

  8. In the Terminal type csrutil enable: this reenables System Integrity Protection

  9. Restart your Mac

For Yosemite and Mavericks:

  1. Issue the following instructions:

    sudo mkdir /System/Library/Displays/Overrides/DisplayVendorID-472
    sudo cp DisplayProductID-361 /System/Library/Displays/Overrides/DisplayVendorID-472
<?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>Acer B276HUL - forced RGB mode (EDID override)</string>
<key>IODisplayEDID</key>
<data>AP///////wAEcmEDs0xgMhoXAQS1PCJ4Ikt1p1ZLoyUKUFS9SwDRANHAgYCV
D5UAswCBwKlAVl4AoKCgKVAwIDUAVVAhAAAeAAAA/QAXTA9jFgEKICAgICAg
AAAA/wBMWjJFRTAwMTQyMDAKAAAA/ABBY2VyIEIyNzZIVUwKAGM=
</data>
<key>DisplayVendorID</key>
<integer>1138</integer>
<key>DisplayProductID</key>
<integer>865</integer>
</dict>
</plist>
#!/usr/bin/ruby
# Create display override file to force Mac OS X to use RGB mode for Display
# see http://embdev.net/topic/284710
require 'base64'
data=`ioreg -l -d0 -w 0 -r -c AppleDisplay`
edids=data.scan(/IODisplayEDID.*?<([a-z0-9]+)>/i).flatten
vendorids=data.scan(/DisplayVendorID.*?([0-9]+)/i).flatten
productids=data.scan(/DisplayProductID.*?([0-9]+)/i).flatten
displays = []
edids.each_with_index do |edid, i|
disp = { "edid_hex"=>edid, "vendorid"=>vendorids[i].to_i, "productid"=>productids[i].to_i }
displays.push(disp)
end
# Process all displays
if displays.length > 1
puts "Found %d displays! You should only install the override file for the one which" % displays.length
puts "is giving you problems.","\n"
end
displays.each do |disp|
# Retrieve monitor model from EDID data
monitor_name=[disp["edid_hex"].match(/000000fc00(.*?)0a/){|m|m[1]}.to_s].pack("H*")
if monitor_name.empty?
monitor_name = "Display"
end
puts "found display '#{monitor_name}': vendorid #{disp["vendorid"]}, productid #{disp["productid"]}, EDID:\n#{disp["edid_hex"]}"
bytes=disp["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" % disp["vendorid"]) rescue nil
f = File.open("DisplayVendorID-%x/DisplayProductID-%x" % [disp["vendorid"], disp["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>#{monitor_name} - forced RGB mode (EDID override)</string>
<key>IODisplayEDID</key>
<data>#{Base64.encode64(bytes.pack('C*'))}</data>
<key>DisplayVendorID</key>
<integer>#{disp["vendorid"]}</integer>
<key>DisplayProductID</key>
<integer>#{disp["productid"]}</integer>
</dict>
</plist>"
f.close
puts "\n"
end # displays.each
@larschinkel

This comment has been minimized.

Copy link

larschinkel commented Aug 11, 2014

You saved my day ... thank you very much!

@fredjean

This comment has been minimized.

Copy link

fredjean commented Feb 24, 2015

👍 This is making a huge difference for me. Thank you!!!

@jankob

This comment has been minimized.

Copy link

jankob commented Sep 9, 2016

also works in macOS Sierra! Thanks!

@naomik

This comment has been minimized.

Copy link

naomik commented Sep 20, 2016

👍 works in macOS Sierra

@gchaturvedi

This comment has been minimized.

Copy link

gchaturvedi commented Sep 30, 2016

I'm on macOS Sierra..everything seems larger for me though..can it not support the 2560x1440 resolution?

@johnmjoyce

This comment has been minimized.

Copy link

johnmjoyce commented Oct 30, 2016

How do I create the same thing for a different monitor? I'm using an HP Pavilion 27XW.

Thanks,

  • John
@matt3036

This comment has been minimized.

Copy link

matt3036 commented Nov 14, 2016

Hi,
nice work since it's suitable also for Sierra!
I would also be interested in how to use this for another monitor (I have an Asus VX279Q).
Also is there an explanation how these overrides work and why there is an executable I only have to copy paste and not execute?
And how would I revert the change?

Regards,
Matt

@matt3036

This comment has been minimized.

Copy link

matt3036 commented Nov 14, 2016

Hi,
I found out how to use this for every other monitor:

  1. right-click open URL(!) and download script: http://embdev.net/topic/284710#3027030
  2. run in terminal: ruby patch-edid.rb
    Important: ONLY the targeted (external) monitor should be connect (maybe even internal display has to be deactivated)!
  3. Copy/Merge generated Folder into /System/Library/Displays/Contents/Resources/Overrides/
  4. Reboot

Regards,
Matt

@nodupe

This comment has been minimized.

Copy link

nodupe commented Sep 7, 2017

I've just like to thank you. My ASUS monitor suddenly became usable in Mac OS X!

@dberzano

This comment has been minimized.

Copy link

dberzano commented Nov 13, 2017

Thank you. You saved my day. For the record, I have an Acer B276HUL (like yours) and El Capitan instructions work with High Sierra too.

@jpage4500

This comment has been minimized.

Copy link

jpage4500 commented Nov 14, 2017

Much appreciated! Every time I upgrade my Mac I realize that I need to run this again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.