Force RGB mode in Mac OS X to fix the picture quality of an external monitor

I recently bought a MacBook Pro (with ‘Retina’ screen), but when I hooked it up to my Dell U2410 monitor via HDMI cable I was shocked by the poor picture quality. The contrast was all wrong and text was misshapen. No amount of calibration in the monitor or software would fix it.

Short answer: OS X thinks my monitor is a TV, and is using the YCbCr colour space rather than RGB. I had to override an EDID setting to force the RGB colour space, and it is now working correctly.

Long answer: I haven’t owned a Mac for a while and had forgotten how difficult much of the “Apple community” can be when it comes to anything that can’t be adjusted in System Preferences. Googling for problems with external monitors on MacBooks found dozens of threads on official and unofficial Apple forums, all full of people with the same problem. The most common response was to blame the monitor, despite assurances from the stricken users that the monitor worked beautifully in Linux and Windows, even on the same machine under Boot Camp.

“You just haven’t calibrated it!”, “You are just too used to Retina now!”, “You just need to buy a Thunderbolt display!” Apple people also like to solve problems by throwing more money at it. (I realise that owning a Mac makes me an Apple person, too. Hypocritical self-loather?)

My lucky break was reading that the current colour space was “YCbCr” when I was browsing the monitor’s settings menu. I was sure that it was using RGB when hooked up to my PC, so I started searching instead for forcing RGB mode in OS X. It didn’t appear to be available out-of-the-box, but I have had some experience in overriding EDID settings for similar purposes so I searched instead for that.

I found this thread on the EmbDev.net forums. Mr Schwarz, thanks very much. Your thread and script was incredibly helpful and informative. It was written to fix problems connecting an external monitor via DisplayPort, but it fixed my HDMI issue just the same. I’ve summarised the required steps below.

My last word is to wonder what Apple is playing at. It seems that this problem has been reported by a lot of people for a long time, and I expect it would require a fairly simple software update. Do they just not care about those using third-party components, or are they actively attempting to force people on to Thunderbolt displays?

How to force RGB in Mac OS X

These steps have been updated for Mac OS version 10.11, “El Capitan”. See below for differences for previous versions of the system.

  1. Download the patch-edid.rb script from the forums thread above, or download Andrew Daugherity’s improved patch-edid.rb script from his github page. Put the script in your home directory.
  2. Disable “rootless” mode, you can follow these instructions: How to modify System Integrity Protection in El Capitan.
  3. Reboot.
  4. Connect only the external monitor(s) in question, if you can (I closed my MacBook lid, for example). The script will make override files for any connected monitor.
  5. Type “ruby patch-edid.rb” in Terminal.
  6. A new folder will be created in your home directory. Move it into the “/System/Library/Displays/Contents/Resources/Overrides” folder. You may have to create the Resources and Overrides folders. If Finder tells you that you are overwriting an existing folder, consider backing it up first.
  7. Restart your computer. The picture quality should be fixed from this point.
  8. Re-enable “rootless” mode, the instructions are available on the same guide: How to modify System Integrity Protection in El Capitan.
  9. Reboot. Enjoy your monitor.

To undo the changes, either delete the folder you had copied to the Overrides folder (if it didn’t already exist) or replace it with the folder you had backed up. You will need to re-enable rootless mode to do this.

Earlier versions of Mac OS X

The process is a little more straightforward. There are two differences to the steps above:

  1. You do not need to disable/re-enable rootless mode and perform the subsequent reboots.
  2. The overrides folder location is “/System/Library/Displays/Overrides”.

Updates

I no longer own a Macbook Pro, but if you’re having trouble with any of these steps, please have a look through the comments below (and note that there are multiple pages). Many questions have been answered with helpful tips from others.

Update, 20 Nov 2016: In the comments Marcus has proposed a faster method that doesn’t require SIP to be disabled. Others have had success with it so give it a go if you’re uncomfortable with disabling SIP.

Update, 8 Feb 2016: A comment from nos1609 below, warns about a bootloop that can occur when running other patches (like the pixel-clock patch) simultaneously, and how to get around it.

Update, 23 Nov 2015: According to Peter’s post, you don’t need to disable SIP if you use recovery mode. If others have similar success with this method I’ll update the process.

Update, 3 Oct 2015: I have amended this post to target El Capitan. I have taken the steps from bigmcguire’s process, posted in the comments. Although some are still having issues, it appears to be working for people. Thanks!

Update, 29 May 2015: Mac OS 10.11 El Capitan does things a little differently. You must first disable the new ‘rootless’ mode and then use a different overrides folder: /System/Library/Displays/Contents/Resources/Overrides. Rootless can then be re-enabled if desired, as confirmed by nos1609 in the comments below. El Capitan is still in beta, I’ll update this post if the issue is still apparent afterwards.

Update, 26 May 2014: If you have had trouble with limited resolutions being available after the fix, check out Ibrahim’s comments here.

Update, 28 Nov 2013: If the process appears to work but doesn’t seem to make a difference, consider Tom’s comments below. Depending on your monitor an extra tweak may be required.

Update, 13 Nov 2013: Andrew comments below that he has modified the script to add some useful new features, and provides a link to his GitHub for those wishing to use it instead.

Update, 27 Oct 2013: If you’ve applied this fix before, the OS X Mavericks update will overwrite it. I’ve successfully re-applied the fix by following exactly the same steps, and other commenters below have done so, too.

935 thoughts on “Force RGB mode in Mac OS X to fix the picture quality of an external monitor

  1. I went through all the replies. It seems the script is not working for mid 2014 or later RMBP? Many followed the exact steps but get no improvement

  2. You’re my hero, dude! Just got a new monitor and I was having the fuzzy text issue, as well as the occasional flicker to black and flashing pixels. There seemed to be a woeful lack of support from Apple for the external display issues when I searched around, but this solution fixed it right up for me. Thanks for sharing, and keeping it so up to date!

  3. Hi all. I have tried Petes recommendation however I am at a standstill. When I restart in recovery mode, I cannot access or see the Macintosh HD. I only see the recovery partition. Is there a command or something to change to be able to do so? I am new to MACs and have spent a great deal of time on this, and have searched til I am blue. Some help would be greatly appreciated.
    Thank you.
    JC

    Also, I am using a dual monitor setup. I see two different files created by the Ruby Script. Do I need to move both of them? And which override folder do I place them in? I am getting weary looking at the blurry text. Thanks again.

  4. I’m frustrated with my mid 2014 MBP 15 integrated GPU version. I processed all steps but still not working with my U2414H. Fonts are blurry as before. I tried all types of HDMI and DP. Not working for both Yosemite and EL Capitan. ECID shows it is changed to force RGB mode. Wondering why…. Is the script not working for build-in GPU?

  5. Hi,

    I just wanted to let you know that Peter’s comment concerning SIP is correct. If you are in the recovery mode you can do the move or copy operation without any problem. No need to disable SIP and re-anable it later. A possible complication is FileVault. If FileVault is enabled you have to unlock the System disk. Instructions for that can be found in Rich Troutons blog entry https://derflounder.wordpress.com/2011/11/23/using-the-command-line-to-unlock-or-decrypt-your-filevault-2-encrypted-boot-drive/.

    Thanks to everybody that contributed to solve the problem.

    Matthias

  6. Pingback: ステンレスネックレス vie ダブルクロスペンダント ネックレスチェーン付

  7. There’s no need to disable SIP on “El Capitan”. Just download the script and run it. Then boot into recovery mode (Command+R) and start Terminal from the Utilities menu.
    Your root drive will be mounted under /Volumes/Macintosh HD in writeable mode without SIP.
    Just copy the file generated by the script to the right folder. In my case it was the following:

    mkdir /Volumes/ Macintosh\ HD/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-4c2d
    cp DisplayProductID-902 /Volumes/ Macintosh\ HD/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-4c2d

    and reboot.

      • +1 on Peter’s Recovery mode fix. Which brings the total to three I believe

        And for Jose Ignacio: your boot disk is not “/” under Recovery, it’s (usually) /Volumes/Macintosh HD

        I’m not one of the people who think this is an Apple bug, but OMG they’re making it hard to fix! I think someone got “insanely great” and “insanely hard” mixed up.

        Many, many thanks to Andreas, Mathew and now Peter.

    • Adjusting for the El Capitan update I navigated to /System/Library/Displays/Contents/Resources/Overrides in terminal from recovery mode, however when attempting to copy the generated file I get a Read-Only file system error. So, it seems in El Capitan this work around does not… work.

    • Realized my drive wouldn’t mount by default because it’s a FileVault volume. First, look for the “Logical Volume” number, grabbing it from the last entry with the following command. It’s a long string of hex numbers with some hyphens. (Not “Logical Volume Family” or “Physical Volume”, but “Logical Volume”)

      diskutil coreStorage list

      Then, unlock it:

      diskutil coreStorage unlock

      which should also mount it. (If it doesn’t, try diskutil mount ). Then, make sure you’re using the full paths, i.e., “/Volumes//System/…” and not “/System/…” (Matt, that’s why you were getting read-only errors: you were referring to the Recovery Volume paths.

      • the comment parsing system removed my angle bracket placeholders. The unlock command is:

        diskutil coreStorage unlock (number)

        and the full path should be “/Volumes/(drive name)/System/…”

        • So close to getting this working on my Acer K272HUL with my Macbook Air. Followed directions to a T, including unlocking the filevault part, but when I execute the mkdir command (mkdir /Volumes/ Macintosh\ HD/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-472), I get the No such file or directory error. Help please!

          • Nevermind, I had a silly syntax error which was causing the issue above. /Volumes/Macintosh\ HD (there needs to be a space between the ‘\’ and the “HD”

            Thanks to all for this fix!!

  8. BACK AT THE FIRST POST: “When I hooked it up to my Dell U2410 monitor via HDMI cable I was shocked by the poor picture quality. The contrast was all wrong and text was misshapen. No amount of calibration in the monitor or software would fix it. OS X thinks my monitor is a TV, and is using the YCbCr colour space rather than RGB. I had to override an EDID setting to force the RGB colour space, and it is now working correctly.”

    1) What determines why a monitor IDs themselves as a TVs while another monitor ID themselves as a RGB monitors?

    2) My 3840×2160 RGB monitor supports audio via HDMI. My laptop HDMI works to a TV, but no audio goes to my monitor. My first thought, does the fact it correctly sees it as an RGB monitor mean it assumes monitor does not have audio? The monitor does show-up under Sound Output as HDMI, but no audio goes to the monitor. Anyway to OSX that the monitor does accept audio?

    3) Same problem, but with the monitor connected by Thunderbolt/Displayport 1.2. I assue DP supports at least 2 channels of audio, but no audio flows to the monitor.

    4) Somehow OSX 10.9.5 thinks my 3840×2160 RGB monitor has a resolution of 6400x????. So the QT Player fits a 3840×2160 video into the center quarter of the screen. I can manually make it go Full Screen, but is there some way to tell OSX the correct resolution?

  9. Thanks guys! Awesome it works… still unbelievable that Apple is not able to get this sorted out! For all guys with a Philips monitor, the comment from Phillipp to remove the strange characters from string of the generated file of the script: Philips 272P4^@^@^@�^@^WL^Oc^^^@ – forced RGB mode (EDID override) was the last thing made it work.

  10. Hi all,

    I run the script and no folder is created (no error message). I’ve seen comments of a couple of people in the script link with the same problem and no reply. Any way you can help?

  11. hi, i did the thing ,everything went well.. but my text only got problem…. its text clarity is not as good as in boot camped windows 8.1 …

    Please help me..

  12. I have a Macbook Pro Unibody with Intel HD Graphics 4000 1024 MB and I’m trying to have the correct resolution display on my LG 29um57-p Ultrawide 21:9 monitor. Unfortunately the fix isn’t working as it only shows Resolution Scaled options:

    1920 x 1080
    1600 x 900
    1280 x 720

    Any ideas how to add the maximum 2560 x 1080?

  13. Hi, for anyone still having problems AFTER going through the whole process: I came across a fix by user jkgeyti on github that worked perfectly for me:

    “I just realised what the problem was for me. I hope this will be useful for others.

    Opening the produced config file in nano showed the device name has a bunch of “unsupported” characters Philips 272P4^@^@^@�^@^WL^Oc^^^@ – forced RGB mode (EDID override). I replaced it with Philips 272P4 – forced RGB mode (EDID override), saved, unplugged and reseated the hdmi cable, and success!

    Maybe it was worth adding a line to the script that strips all non-alphanumeric characters from the display name?”

    • Thanks for this tip gea. I have the same monitor and forcing RGB mode with these instructions have always worked before without any monitor swiching offs and ons. Did not even come to my mind to do that.

  14. Did anyone successfully installed El Capitan with a Philips monitor as dual display?
    I ask this because I don’t dare to upgrade to El Capitan after someone told here that the script didn’t work with Philips monitors (I have the Philips 272C4QPJKAB successfully installed using this script on Lion and could do the migration to Yosimite without running the script). Thanks in advance for sharing your experiences with Philips duals screen on El Capitan!!

    • FOR THOSE ONES WHO CANNOT SEE THE DISPLAY FOLDER!!!!
      Hi there. Just want to let you know that I got it work just literately following the steps as described above. The reason I could not see the “DISPLAY” folder was that I was looking at the wrong directory. Yes, there are few “LIBRARY” folders in Mac. The first one I looked at was under my username home directory. You can access there by going to GO tab in Finder and holding ALT(option) bottom that reveals LIBRARY folder. But it’s the wrong one. You need to go to your actual MACINTOSH HD drive. Than skip the library folder in there and go to System/Library/Displays/Contents/Resources/Overrides. If you have been likeminded (lets call it BLIND-STUPID) than you should solve the problem and get your monitor to work properly! THANK YOU!!!!

  15. help me i doan all step but there is no different before i forcing to rgb

    here is my final create file :

    DisplayProductName
    BenQ EW2440L – forced RGB mode (EDID override)
    IODisplayEDID
    AP///////wAJ0Th5RVQAAAwZAQOANR54JjClpFVTnycNUFSla4DRwIHAgQCB
    gKnAswABAQEBAjqAGHE4LUBYLEUAEyohAAAeAAAA/wBUM0YwMTc1MlNMMAog
    AAAA/QAyTB5TEQAKICAgICAgAAAA/ABCZW5RIEVXMjQ0MEwKALQ=

    DisplayVendorID
    2513
    DisplayProductID
    31032

    and put it in right /System/Library/Displays/Contents/Resources/Overrides,and no old file to replaced btw

  16. I disable SIP in recovery mode. I verify status while still in recovery mode and is shows disabled. I reboot normally and check csrutil status, it shows SIP as enabled and denies access to systems folder to copy my new monitor profile. When I reboot in recovery mode and check status, it still shows SIP as disabled.

  17. i finally bought a new display and it works now with el captain. i had the DELL 2410 before and nothing worked :-(
    new model is AOC 2577pwq

  18. I had been using Yosemite with this override trick flawlessly… until El Capital came. Then things went awful again, and with “things” I mean colors, shapes, blurry fonts, etc.
    So I came back here to see if there was a new trick for this new OS or something, and voilà!
    I followed the same steps stated above, i.e.:
    0.- Disconnect all displays but the one is giving you problems. In my case, I use mac mini with an AOC Q2963PM 29″ 2560×1080 as primary display and a Samsung S23B370 1920×1080 as secondary display. Since the problem is with AOC, I unplugged the S23.
    1.- Download the improved script https://gist.github.com/adaugherity/7435890 || Put it on home directory. (For newbies: where is home folder? Is the one it has a “house” icon, and it is named with the user name you created when the first OS was installed on your machine)
    2.- Reboot to disable SIP. See http://www.macworld.com/article/2986118/security/how-to-modify-system-integrity-protection-in-el-capitan.html Go down to “Follow these steps to disable SIP” section. If you use a wireless keyboard, the “Command+R” combo does’t work. I had to plug an USB Keyboard just to make it work.
    3.- Reboot again
    4.- Run the improved script you downloaded in step 1.
    5.- Copy the folder created by the script (in my case it was “DisplayVendorID-5e3”)
    into the “/System/Library/Displays/Contents/Resources/Overrides” folder.
    6.- Reboot
    7.- Notice everything is back to normal again. Enjoy the view.
    8.- Reboot again to enable SIP. Just in case.

    That’s all. I really hope it works for you too.

  19. I have OSX Yosemity 10.10.5

    I can’t seem to move the ruby file (unzipped) to the Home directory. There is an error. Also, In the Recover mode the csrutil disable command doesn’t work at all for me either :(

  20. I didn’t try this fix when running Yosmite but I did when running El Capitan and it doesn’t work.

    I changed the name of the monitor as suggested and that enabled me to see the new profile in the display settings but choosing the new file did not have any effects on the screen so I’m still dealing with blurry fonts and wonky colors.

    After looking around and googling, this problem seems to be isolated to Philips monitors. I can’t test the theory but..the fix supposedly worked on Philips when running Yosmite but once installing El Capitán it doesn’t work anymore.

    It would be amazing if you could find a solution to the problem. :/

  21. Thank you so much for the great post. I am using El Capitan and this works perfectly for my when I close the lib of my rMBP and use the external monitor as the only display; however, when I use my external monitor as the extended desktop, the font on it becomes blurry again :(
    Is there a fix for this situation?

  22. I had to do this in Mavericks and Yosemite and then in worked very well with the same Macbook Pro and Philips 272P monitor. Now I’ve followed the exact steps as described above in El Capitan (including the command+R reboot) and the problem stays: fonts, icons, pictures… it looks awful. Does anyone know why it isn’t working here? I’m considering going back to Yosemite :(

  23. Thank you so much for the post, I followed the steps and it worked for my MacBook Pro Retina with El Capitan, with my monitor samsung S27D850T.
    However, after applied the RGB mode, it says now at 59Hz instead of original 60Hz.
    Can this be changed or forced to 60Hz?

    Cheers.

  24. it’s not working for me.
    when I type “ruby patch-edid.rb”
    patch-edid.rb:9:in `scan’: invalid byte sequence in UTF-8 (ArgumentError)
    from patch-edid.rb:9:in `’

  25. Thank you very much for posting these instructions – these worked perfectly with MacOS X 10.11 and an Acer K272HUL monitor.

  26. Unfortunately it does not work for me:

    patch-edid.rb:9:in `scan’: invalid byte sequence in UTF-8 (ArgumentError)
    from patch-edid.rb:9:in `’

    I got an 5K Retina iMac.
    Please help! The colors on my Philips TV make me crazy!!

    • I am unsure whether the patch would work on an actual TV. After all it is meant to force OS X to recognize a monitor misidentified as a TV. If you do have color problems on your TV, calibration might be the way to go.

  27. Thanks bigmcguire. Your steps saved my 2nd monitor and my eyes, after upgrading to El Capitan. I was furious over not being able to paste to the ‘Overrides’ folder and had even spent hours with Apple Support to fix it( they were useless by the way. All they suggested was to downgrade back to Mavericks!). Thank you again!

  28. Worked perfectly on El Cap (I used the modified ruby script from Github that uses the actual display name). After rebooting, El Capitan even recognized the custom color profiles I generated in Yosemite.

  29. I couldn’t hate Apple any more for doing this every time they do an OS upgrade.

    I’ve been following all the instructions and for me I can’t generated the override folder while in El Capitan. So I’m going to restore to Yosemite and see if I can copy to folder to an external drive. Restore to El Capitan and try again.

    Like tomeek I too have a Dell U2410 and shouldn’t have to suffer like this every time Apple does and update!

  30. Hey, I’ve tried this, it did make “Television” disappear in System information, but reported pixel depth is “still” “CGSThirtyBitColor”, not the usual “32-bit Color”, any ideas?

  31. I restarted normally after step 3 and I stil have grainy text. If I worked for a few minutes on my computer with rootless mode, the computer would reboot automatically telling me it has problems in it.

    • It still works in El Capitan. After installing El Capitan on my MacBook Air I was distraught to see fonts all fuzzy again. So I ran the script again and tried to copy the override folder but it wouldn’t let me copy it. Read the end part of the article he has a way to make it work in El Capitan. You have to disable rootless mode then copy the script again. I turned rootless mode back on and fonts are sharp again. :). Just boot into recovery and run that command in terminal to disable rootless. It works.

    • The exact steps I took (to simplify):
      1. Re run the script to generate the folder to copy to ovverrides.
      2. You’ll notice override in a new location: /System/Library/Displays/Contents/Resources/Overrides and you can’t paste anything to it.
      3. Boot into recovery (pressing Command+R repeatedly as Mac reboots).
      4. Go to Utilities –> Terminal and type: csrutil disable. — Reboot.
      5. Now copy the new file created to /System/Library/Displays/Contents/Resources/Overrides overriding the one already there.
      6. (See 7). Reboot. Text is sharp again!
      7. Boot into recovery (press Command+R repeatedly as Mac reboots).
      8. Go to Utilities –> Terminal and type: csrutil enable. — Reboot.

      You now have Rootless and sharp text!

      • I’ve done exactly like you. But with patched version (DisplayVendorID-469/DisplayProductID-23e1) I’ve got acid colors on my monitor :(
        So i moved back original file to /System/Library/Displays/Contents/Resources/Overrides and now broke my eyes :(

        • Wow that’s terrible. You generated a new DisplayProduct since El Capitan with the “ruby patch-edid.rb” in Terminal” right? Hope you find a fix :( That would drive me nuts.

          • Yep. I generated new DisplayProduct under El Capitan.
            Here is how it looks with patched DisplayProduct – http://s15.postimg.org/esq5fordn/IMG_2720.jpg

            Here is my patching log:

            Pro:csync bash$ ruby patch-edid.rb
            /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin15/rbconfig.rb:213: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040777
            found display: vendorid 1129, productid 9185, EDID:
            00ffffffffffff000469e123010101010a18010380331d78eae595a656529d27105054afcf80714f8180818fb30081409500a9400101023a801871382d40582c4500fe221100001e000000fd00384b1e530f000a202020202020000000fc0056583233390a20202020202020000000ff0045334c4d52533031333033390a014802031df14a900403011412051f1013230907078301000065030c001000023a801871382d40582c4500fe221100001e011d8018711c1620582c2500fe221100009e011d007251d01e206e285500fe221100001e8c0ad08a20e02d10103e9600fe22110000180000000000000000000000000000000000000000000000000000e6
            Setting color support to RGB 4:4:4 only
            Number of extension blocks: 1
            removing extension block

            Recalculated checksum: 0x51
            new EDID:
            00FFFFFFFFFFFF000469E123010101010A18010380331D78E2E595A656529D27105054AFCF80714F8180818FB30081409500A9400101023A801871382D40582C4500FE221100001E000000FD00384B1E530F000A202020202020000000FC0056583233390A20202020202020000000FF0045334C4D52533031333033390A0051

            And this is content of DisplayProduct file:

            Pro:csync bash$ cat DisplayVendorID-469/DisplayProductID-23e1

            DisplayProductName
            Display with forced RGB mode (EDID override)
            IODisplayEDID
            AP///////wAEaeEjAQEBAQoYAQOAMx144uWVplZSnScQUFSvz4BxT4GAgY+z
            AIFAlQCpQAEBAjqAGHE4LUBYLEUA/iIRAAAeAAAA/QA4Sx5TDwAKICAgICAg
            AAAA/ABWWDIzOQogICAgICAgAAAA/wBFM0xNUlMwMTMwMzkKAFE=

            DisplayVendorID
            1129
            DisplayProductID
            9185

      • It worked perfectly for me on El Capitan. I had to do the same on Yosemite and Mavericks before with my DELL U2410 and the display is even sharper on El Capitan with the same override. Kudos! Thanks a lot!

        • Tomek, can you post the steps you took, but step by step. I tried the same thing I did on Yosemite and it did not work in El Capitan.
          1. I created the file
          2. I restarted with command + R and set rootless mode and restarted
          3. I copied the file to the new location and restarted with command + R
          4. I enabled rootless mode and restarted
          5. Same as before, grainy text.

          • The only thing I did different from you was – after step 3 – I restarted NORMALLY without immediately enabling Rootless mode. Upon normal reboot, the text was sharp on my screen. I then proceeded to enable rootless mode (with another reboot) and the text stayed sharp.

            Can you try that? It’s all I can think of at the moment.

Leave a Reply