Create a gist now

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Fix blurry fonts on some external monitors when using MacBook Pro Retina

How to fix blurry fonts on some external monitors when using MacBook Pro Retina

It seems that graphcis and fonts look rather blurry on some monitors when hooked up to a MacBook Pro (Retina). This might fix the issue for you:

  1. Download patch-edid.rb from http://embdev.net/attachment/168316/patch-edid.rb

  2. Execute in Terminal (without the $):

    $ ruby patch-edid.rb

  3. Copy produced folder (example: DisplayVendorID-22f0) to /System/Library/Displays/Overrides (authorize if needed, if the folder exists, backup it before)

  4. Reconnect the Display

  5. Enjoy

#!/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
@jimhavrilla

This comment has been minimized.

Show comment
Hide comment
@jimhavrilla

jimhavrilla Jan 12, 2016

didn't make a difference.

didn't make a difference.

@bitbut

This comment has been minimized.

Show comment
Hide comment
@bitbut

bitbut Jun 3, 2016

ruby patch-edid.rb
patch-edid.rb:11:in <main>': undefined method[]' for nil:NilClass (NoMethodError)

On mac os X El Capitan

bitbut commented Jun 3, 2016

ruby patch-edid.rb
patch-edid.rb:11:in <main>': undefined method[]' for nil:NilClass (NoMethodError)

On mac os X El Capitan

@caiceA

This comment has been minimized.

Show comment
Hide comment
@caiceA

caiceA May 23, 2017

i have mac siri will this work for me ? i just bought samsung curved 27" F396 the font is not shart enough

caiceA commented May 23, 2017

i have mac siri will this work for me ? i just bought samsung curved 27" F396 the font is not shart enough

@da1z

This comment has been minimized.

Show comment
Hide comment
@da1z

da1z Dec 25, 2017

I can not create folder under /System/Library/Displays/
having
mkdir: Ovverides: Operation not permitted

please advise

da1z commented Dec 25, 2017

I can not create folder under /System/Library/Displays/
having
mkdir: Ovverides: Operation not permitted

please advise

@askarsyzdykov

This comment has been minimized.

Show comment
Hide comment
@askarsyzdykov

askarsyzdykov Jan 11, 2018

@da1z
see https://stackoverflow.com/a/32661637/2571249:
you need to reboot your mac and press ⌘+R when booting up. Then go into Utilities > Terminal and type the following commands:

csrutil disable
reboot 

askarsyzdykov commented Jan 11, 2018

@da1z
see https://stackoverflow.com/a/32661637/2571249:
you need to reboot your mac and press ⌘+R when booting up. Then go into Utilities > Terminal and type the following commands:

csrutil disable
reboot 
@anirudha

This comment has been minimized.

Show comment
Hide comment
@anirudha

anirudha Jan 17, 2018

step 3 for el capitan and above /System/Library/Displays/Contents/Resources/Overrides/

eg.
sudo cp -R DisplayVendorID-5e3 /System/Library/Displays/Contents/Resources/Overrides/.

anirudha commented Jan 17, 2018

step 3 for el capitan and above /System/Library/Displays/Contents/Resources/Overrides/

eg.
sudo cp -R DisplayVendorID-5e3 /System/Library/Displays/Contents/Resources/Overrides/.

@saurabhsawant

This comment has been minimized.

Show comment
Hide comment
@saurabhsawant

saurabhsawant Mar 11, 2018

I got error too, but looks like patch needs some change

patch-edid.rb:11:in <main>': undefined method[]' for nil:NilClass (NoMethodError)

I tried this and got a bit of improvement

saurabhsawant commented Mar 11, 2018

I got error too, but looks like patch needs some change

patch-edid.rb:11:in <main>': undefined method[]' for nil:NilClass (NoMethodError)

I tried this and got a bit of improvement

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment