Skip to content

Instantly share code, notes, and snippets.

@bastibense
Last active September 28, 2020 03:53
Show Gist options
  • Select an option

  • Save bastibense/6549835 to your computer and use it in GitHub Desktop.

Select an option

Save bastibense/6549835 to your computer and use it in GitHub Desktop.

Revisions

  1. bastibense revised this gist May 26, 2015. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -4,9 +4,9 @@ It seems that graphcis and fonts look rather blurry on some monitors when hooked

    1. Download patch-edid.rb from http://embdev.net/attachment/168316/patch-edid.rb
    2. Execute in Terminal (without the $):
    <pre>
    $ ruby genedid.rb
    </pre>

    $ 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
  2. bastibense revised this gist Sep 13, 2013. 1 changed file with 0 additions and 1 deletion.
    1 change: 0 additions & 1 deletion README.md
    Original file line number Diff line number Diff line change
    @@ -5,7 +5,6 @@ It seems that graphcis and fonts look rather blurry on some monitors when hooked
    1. Download patch-edid.rb from http://embdev.net/attachment/168316/patch-edid.rb
    2. Execute in Terminal (without the $):
    <pre>
    $ cd Downloads
    $ ruby genedid.rb
    </pre>
    3. Copy produced folder (example: DisplayVendorID-22f0) to /System/Library/Displays/Overrides (authorize if needed, if the folder exists, backup it before)
  3. bastibense revised this gist Sep 13, 2013. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -3,10 +3,10 @@
    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:
    2. Execute in Terminal (without the $):
    <pre>
    cd Downloads``
    ruby genedid.rb
    $ cd Downloads
    $ ruby genedid.rb
    </pre>
    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
  4. bastibense revised this gist Sep 13, 2013. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -4,10 +4,10 @@ It seems that graphcis and fonts look rather blurry on some monitors when hooked

    1. Download patch-edid.rb from http://embdev.net/attachment/168316/patch-edid.rb
    2. Execute in Terminal:

    <pre>
    cd Downloads``
    ruby genedid.rb

    </pre>
    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
  5. bastibense revised this gist Sep 13, 2013. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -4,8 +4,10 @@ It seems that graphcis and fonts look rather blurry on some monitors when hooked

    1. Download patch-edid.rb from http://embdev.net/attachment/168316/patch-edid.rb
    2. Execute in Terminal:

    cd Downloads``
    ruby genedid.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
  6. bastibense created this gist Sep 13, 2013.
    11 changes: 11 additions & 0 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    # 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:
    cd Downloads``
    ruby genedid.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
    49 changes: 49 additions & 0 deletions genedid.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,49 @@
    #!/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