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. After running through the process and rebooting I’ve got a garbled screen (see pic in the link):

    https://lh6.googleusercontent.com/ZXrT6U4wd0XJMBcP6eZ3zuvLk_RpAvHhfS_tOkg7sibT=w816-h612-no

    I can get back to normal by restoring the original folder I backed up from /System/Library/Displays/Overrides. Anyone else ever seen anything like this? I’m using a pretty new monitor (the LG 34UM95 21:9 3440×1440). My understanding was that the script should extract the existing profile and just override to force RGB. Time for some more EDID research I guess.

    • That is exactly what I had! You can “fix” it by selecting 50Hz, but I choose to restore the old VendorID. I also don’t think that a patch is necessary for this display, colors and gradients seem fine, I think it’s running in RGB mode even though OS X think it’s a TV.
      I’m running it in Cinema picture mode by the way.

  2. Do anyone know how to force YUV mode . the patch-edid.rb is a bit obscure for me. Specific necessity to output to a Blackmagic Hdmi to SDI 4K.
    thanks

  3. First of all, Thanks for sharing this. It really worked after 2 years of searching and struggling.
    You are guys just awesome.

    Secondly, I had to face a problem that was mentioned by some others in the comments but no clear cut solution has been provided. I guess.

    Here it is:

    When I pasted the file in the ” Overrides ” folder. It didn’t replace any folder. Just beeing added to the bunch of folders.
    What happened is:
    Colors were perfectly corrected.
    But, Resolution choices were narrowed to: ( 1080 – 1600*900 – 1360*768 ) ONLY and scaling has disappeared and the maximum resolution I can get is 1360 * 768 other wise the scale will outfit the screen ( larger).

    Here what I did, thanks to people who mentioned that but indirectly.

    1- I deleted the file I generated and pasted from the folder “Overrides”.
    2- I went to the file I generated in the ” Home directory ” and rename it by a name of one of the files present already in the “Overrides” folder. In my case it was this ” DisplayVendorID-4d10 “.
    3- I pasted the generated and renamed file to the folder ” Overrides ” again, then it asked to replace I clicked OK ( N.B I backed up that folder present already to the desktop in case something happened).
    4- Then, restarted the monitor and it worked.

    Regards
    Ibrahim

  4. Hi,

    this was the only thing that worked for my MacBook Pro retina late 2013 and external HP LP2475w with HDMI.
    Thanks very much.

  5. Hi,

    I’ve find this thread through this http://forums.macrumors.com/showthread.php?t=1699375

    Where was a question:

    “I have MacBook Air 13″ 2012, OSX Mavericks 10.9.1 and just got a Dell U2414H monitor. Settings in OSD are: RGB color, Mac Gamma, sRGB color preset and in OSX Dell U2414H color profile. It is connected with mDP to DP cable, works good and image appears good, but it is recognized as HDTV by the OS. This annoys me and I am not sure if the OS sends full (0-255) or limited (16-235) RGB.”

    I’ve the the same situation: hakintosh with OS X 10.9.2 and dell U2414H monitor. In OSD menu it shows RGB signal and in OS X information about this monitor: 32-bit Color (ARGB8888).

    I have applied this fix, no error when it was run, but it’s still 32-bit Color (ARGB8888), and I don’t see any changes.

    How to understand that this fix worked or it has been applied.

    Thanks.

  6. Hello everybdy, i’m trying to run the script (ruby patch-edid.rb) and i get this
    answer

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.
    0/universal-darwin13/rbconfig.rb:212: warning: Insecure world writable
    dir /usr/local in PATH, mode 040777
    patch-edid.rb:11:in `’: undefined method `[]’ for nil:NilClass
    (NoMethodError)

    Any help on this issue?

    Thanks in advance

    I have a MBP 13 early 2013 retina running 10.9.3

  7. Hi Friends,

    I’m not certain this fix is what I need, but I’m not a programmer and will need someone to counsel me and if it is necessary, walk me thru it. I’m a designer, and getting the clearest onscreen image out of the equipment I have is important.

    I have a brand spanking new 13″ MBPr running 10.9.2, with an external HP 23bw IPS HD 1920×1080 LED display. I’m seeing what I would consider a blurry image on the larger remote display. Text for sure is noticeably out of focus. I realize it won’t ever be as crisp as the Retina display, but I was hoping that it would be clear enough to get my work done on. It really isn’t very good currently.

    The monitor is currently connected directly HDMI to HDMI port using the HP cable. I also tried connecting with a Rocketfish TB Mini to HDMI adapter, and see no difference. Is there something else I should try?

    Thanks in advance!
    Ivan

  8. Pingback: Monitoren half jaar oude hp 23xi schermen te koop ( 4 stuks )

  9. @calumbas

    I finally get my resolution thanks these files:
    -> http://embdev.net/topic/284710

    I get the file present in the zip file and change the name of the file “DisplayProductID-a092″ to the filename generated by the script above.

    Everything working well now !

    Finally get the expected 2560×1440 resolution on my U2713HM on MacBook Pro late 2013 with this cable:
    Mini DisplayPort to Dual-Link DVI Adapter.
    -> http://store.apple.com/us/product/MB571Z/A/mini-displayport-to-dual-link-dvi-adapter
    Hope it helps someone ;-)

  10. Hi All,
    I tried the hack, and it did not work! I have an MBP 13 inch, I use a connection thunderbolt (instead of mini dislay port) to VGA.
    Here is the output of the file in the overrides directory:

    DisplayProductName
    ASUS MS246 – forced RGB mode (EDID override)
    IODisplayEDID
    AP///////wAEafckAQEBARMUAQMKNB14JjWFplZImiQSUFS/7wDRwLMAqUCV
    AAEBgYCBQHFPAjqAGHE4LUBYLEUA3QwRAAAeAAAA/wBBNUxNSVowMzk3NTkK
    AAAA/QA3Sx5VEwAKICAgICAgAAAA/ABBU1VTIE1TMjQ2CiAgAHw=

    DisplayVendorID
    1129
    DisplayProductID
    9463

    Does this look OK? I still see blurry text, and when I use parallels, the letters are crystal clear.

  11. @Calumbas; Are you perhaps using an HDMI adapter and cable?
    HDMI can only display up to 1920×1080 (or 1920×1200 on a 16:10 monitor). You really need a mini display port to DVI cable to get higher resolutions.

  12. Even after following these steps and even using the updated script from github my monitor still looks terrible (asus ve278q) and it seems to think it is a TV (1080p pal/ntsc ). Anyone have any idea how to fix this ? My eyes hurt and im considering just getting rid of the monitor as its painful to read text on it.

  13. Guys, sorry if you have already gone through this, but I still can’t make the images on my brand new Dell U2713HM look sharp at all.

    Before doing the “override”, there were several resolution options, but the max resolution available read “1080p”; now that the Display Preferences show “DELL U2713HM – forced RGB mode (EDID) Override”, there are only 3 resolutions available:
    – 1920 x 1080
    – 1600 x 900
    – 1360 x 768

    Even after the override, all these options look horrible (blurry); feels similar to when I use Airplay do project images from the computer on my AppleTV (and consequently to my FlatScreen TV). Seems as if the issue is more connected to the resolution than with RGB color…

    Do you guys have any suggestions? What do I have to do to use my DELL Display at max capacity (2560 x 1440) with my MacBook Pro?

    Thanks a lot!

  14. Thanks for the Hack, however I have a new problem that might be easy to fix. I have TWO Dell U2414H monitors, connected to my 2012 mac mini. One is connected with the supplied mini display port to display port cable, and the other monitor is connected with an hdmi cable.

    I got the second monitor later and was using the fist one quite happily with your hack. When I connected the second monitor and selected the profile for the Dell U2414H that was made for my first monitor I got no results. I then disconnected my first monitor and did the hack, I rebooted and my second monitor looked great! Only my first monitor looked bad again… So I disconnected the second monitor and ran the hack on the first monitor, I rebooted and my first monitor was fine, but my second monitor was bad again! I then ran the hack with both monitors turned on, I saw in the terminal window that the hack detects 2 monitors, i removed the old color profiles and put the new one in the display folder, in the folder there are 2 color profiles, but only one shows up in the settings window.. I now have one nice and one not so nice monitor and Im really bummed out :-( Does anyone know how to get it working on both monitors at the same time?

    • Oke here is an update, I could not get my second monitor to be less yellowish of warm if you will. I contacted Amazon.de and they replaced it with a new one. Too bad that this monitor had the same problem. For the record all the U2414H’s I had (including the good one) where Rev 00. So I contacted Amazon.de again and I returned the monitors and got 2 Samsung S24C750 monitors instead. When connected they both registered as TV’s but the hack on this page quickly fixed that, I connected both monitors and they were both on during the hack. Needless to say the Dells were crap and the Samsung’s are great. There are no H IPS but the are MVA, I think there better, their black levels are amazing, its almost like watching an OLED display. I can recommend the Samsung monitors to anyone.

      So if your having a DELL U2414H that has a yellow glow to it, return that thing and get a different brand. :)

  15. Phil T, same here.
    I have the same monitor as yours.
    Tried numerous font smoothing configurations and this fixed the RGB issue too, but fonts still look blurry.

  16. I solved that, if you have problem like that unplug and plug in again the adapter. Now i have other problem can’t find Displays folder or Overrides

  17. Can’t find the folder that should be created after Ruby patch-edid.rb any help?
    Checked the folder where patch-edid.rb is but nothing there …

  18. Hey there,
    I applied this script using a dell u2312hm when using mini display port to display port adapter on a haswell retina macbook pro. The monitor gets the rgb signal but the fonts still look fuzzy. It’s like if one letter is sharp and the next isn’t. Sometimes I even see like some reddish or bluish shadow around some letters. especially when the same letters are following each other like : ll or tt. When I zoom in and the font gets bigger, the shadows go away.

    The same thing happens when using a mini display port to dvi adapter.

    I have put the terminal command to AppleSmoothing -int 2 .

    Could it be the monitor?? The monitor was fine under mavericks connected to my old 2008 macbook pro with dvi cable.

    I just ordered a viewsonic vp-2770 and im afraid to have the same result on such a quality monitor.

    • Unfortunately you are not alone. I have a Dell 2312HM and I have the same problem. Sometimes letters are okay, and sometimes not so much. I have a specific ‘m’ that looks awful in my terminal. I applied script, restarted, and no luck

  19. Very grateful for this!!! Worked like a charm on a 2014 13″ MacBook Pro (Retina) running OSX 10.9.2, connected to an LG 29EA93 monitor.

  20. Dear Sandergovaers

    I just control clicked and chose download. Choose “Go” “Home” from menu bar and drop the file from the downloads into this. Then “Go”, “Utilities” and open “Terminal” and type “ruby patch-edid.rb”

    Thanks i reckon. Hadn’t had any problem with Asus and LG monitors, just this HP Pavilion 23xi. Patch worked brilliantly. Had to switch to lower resolution and back again after restart. I have a 2013 MacBook Pro.

    Thanks again.

  21. Just wanted to say thanks for this! I can’t believe you have to do a custom hack on a Mac for a second display to display correctly. For me, the problem was simply faint red (or pink) dots that were only visible on white screens or objects. I could use the display correctly though. My Viewsonic was detected as a “Television” as well. I just got the Viewsonic VP2770-LED on a Woot deal and at first thought there was something wrong with my iMac, the mini displayport cable, or the monitor itself. Turns out that it’s Apple as I was able to use the monitor with the same Mac in Bootcamp on Windows 8.1 without any issues. I could tweak the monitor on a different User Mode, but that was sort of a setting workaround. This fix is more permanent and long-term. Thanks again!

  22. Pleased to say this worked for me. My setup is a Mac Mini with two displays. LG Flatron E2290 connected via mini display (thunderbolt) and HP 25xi via HDMI. When I first connected the HP, it was awful to work with. I made sure I disconnected the LG, followed the instructions and rebooted – worked like a charm. Thanks for your help.

  23. skylife88, you literally saved us from blurry text forever!! thank you, thank you!! for anyone with a Samsung this will solve your textual problems

  24. One important thing if you have a Samsung SyncMaster monitor!

    * Using the Samsung remote press the ‘source’ button
    * Now press the ‘Tools’ button
    * Highlight ‘Edit Name’ and press the ‘OK/Accept’ button
    * Move the selected input to HDMI and press the ‘OK/Accept’ button again.
    * Move the selection to ‘PC’ and again OK your selection.

    After that, in order to fix any color issues press the Menu button from your remote and in the Picture Tab go down to Picture Options and change to these settings:
    *Colour Tone : Normal
    *HDMI Black Level : Normal

    That did it for me! Hope it was helpful.
    Thank you!

    • Unbelievable! Thanks, skylife88 – I wish I’d seen your comment 3 hours ago. That was exactly it – I’d swapped the HDMI inputs around on my SyncMaster, and relabelled them accordingly. My rMBP is now plugged into a splitter, and the input was labelled HD STB (which is its primary use). I thought it was only a label, and not also a function setting! The STB and PS3 which are also plugged into that splitter work just fine with its name set to “PC”, so now I can breathe a sigh of enormous relief.

      Thankyouthankyouthankyou :)

    • You sir, are awesome!! Thanks so much for posting that, and thanks to Mathew for generating this thread in the first place. I didn’t realize the Samsung ‘source’ actually made changes to the settings.

  25. Thank you!! You saved my eyes from that horrendous shit that was on my screen before I applied this fix. You are awesome! Although after restarting, I did have to go back to system preferences and select the resolution that’s less than 1080p then reselect 1080p..

  26. so i dugg around other override profiles and found one that works. now i got 1080p, 1080i, 720p, 900×1600, 50 and 60 hz and pal and ntsc

    i used the data from DisplayVendorID-4d10

    hope that helps someone.
    for me i was having a hard time playing games on my tv with the interlaced image.

  27. you make my day!

    works perfect for a DELL3014 on a new MacPro

    first i had some issue with the terminal. nothing happend after typing “ruby patch-edid.br”.

    i checked the user – set the Administrator again on read+write.

    i verfiy disk permisson – repair disk permisson

    i restart – and the the terminal line works.

    put the new folder into the library like above in the description.

    restart the mac – runs perfect.

    thank you for sharing this!

    btw. the DELL support has in germany not nearly an idea what the problem is!

  28. Pingback: Problem z wyświetlaniem w 1920 × 1080 na zewnętrznym monitorze.

  29. Yeah thanx Apple, this is the user experience we know and love. Feels like patching Macs to use DVD-drives all over again. ;-) btw: works with HP LP2475w and DisplayPort and Macmini 2012

Leave a Reply