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. If people have success with this I’ll update this post.

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.

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

  1. Hello!

    Will this procedure override the color space for any external display? I have an external LG monitor to which I intend to apply this fix so it forces full RGB… But I also occasionally connect my macbook to my living room TV, which do not require full RGB.

    Will this fix be applied specifically to the display connected during the procedure, or it will override the color space for all external displays?

    Thanks in advance for your work!

  2. I was having major problems with a 2016 13″ MBP and a Dell U2410 monitor, and this guide fixed it for me. I didn’t have to enable rootless mode, I was able to copy the folder created by the script to the location specified, and enter my password to authenticate the change

  3. My Retina, 13″ Early 2015 MacBook Pro seems to have lost the highest “retina” resolution on it’s built-in-display. The original EDID file seems to be intact, but I’m just having trouble finding the resolution. (Even tried option+clicking the “Scaled” radio button and found nothing. Is there a script in existence to bring it back?
    Thank you!

  4. Hi all,

    i have macbook pro 13 early 2015 and lg 24mp88hv-s display. i wanna use my macbook with external display but text und pictures is blurry when I connect via hdmi port it to an external monitor. I tried patch edid and switchrex but still same problem. Can anyone help me ?

    Thanks.

  5. Hi!

    I’ve executed everything written in this guide, except closing the lid of my MBP, and text is still blurry on the external monitor. Is this lid closing that important during the process?

    Thanks!

  6. I was able to copy the necessary files without disabling System Integrity Protection, or booting into Recovery mode, by simply using “sudo cp…” from Terminal, as an Admin user. Alas, it hasn’t helped me get my HP 27vx monitors working acceptably on a Late 2016 MBP w/ Sierra.

  7. Hi, I found this article and yes it is very painful now.
    I have a Thunderbolt display connected to a Retina Macbook pro and the text is very blurry, before that I connected thunderbolt display to a normal macbook pro and everything is perfect. But now it looks crappy on Thunderbolt display. Do you have any idea of this because it is a thunderbolt display and why Macbook still think it is a TV ?

  8. Thanks a bunch for the guide! Saved me from needlessly returning my MacBook, the HDMI Adapter, or my TV.

    I have a few recommendations to speed up the process, which saves one boot to recovery and you never have to actually disable the System Integrity Protection (SIP), thus never really leaving the system potentially vulnerable.

    1.) Start by running the .rb script.

    It only generates a couple of files in your user’s directory and does not require any special rights to read the current monitor / tv configuration. (TV must be connected).

    2.) Boot to into the recovery system (Cmd+R during boot).

    All your files are accessible here and you have write permissions to the “Overrides” folder. Your system disk is just not mounted to / but to /Volumes/ (e.g. “/Volumes/Macintosh HD/”)

    3.) Open a terminal and copy the DisplayVendor-directory. Remember that every path is now prefixed by “/Volumes/Macintosh HD/”.

    E.g. I had the Ruby script in a folder “EDID-Fix” on my desktop.
    -bash-3.2# cp -r /Volumes/Macintosh\ HD/Users/marcus/Desktop/EDID-Fix/DisplayVendorID-* /Volumes/Macintosh\ HD/System/Library/Displays/Contents/Resources/Overrides/

    4.) Reboot to your system

    Hope you find that useful.

    Cheers,
    Marcus

      • for those of us not computer programmers, how do you add a script to the “home directory”? I don’t understand where to find this and if I need to create a separate folder

    • Hi Marcus,

      Could you break this down into even simpler steps if possible. I have a Mac Pro (2013) running Yosemite that I am trying to connect up to an external Full HD monitor but the colours and contrast are terrible.

      I am trying to follow your instructions but even “Start by running the .rb script” is not easily understood by someone with no programing knowledge at all. Do you just double click on it or something more? The same goes for the other steps.

      It would be really great to be able to give this a go so I don’t have to return the monitor but struggling to understand the steps right now.

      Many thanks,

      Simon

  9. Thanks so much for your article. I am running Sierra on a mid-2015 Macbook Pro 15″ Retina (OSX 10.12.1), with a brand new (2016 model) Samsung 4K UHDTV to work as a monitor. It’s a curved 49″ TV so yeah, it’s huge, but I’m replacing two old monitors with the one for simplicity.

    I am a ruby developer and had no trouble following your directions and they worked perfectly, though I still had to play with the TV advanced picture settings before the fonts looked like they should. For some reason the “Movie” preset made the fonts look best by a significantly visible margin.

    But it’s awesome! Your script saved me from returning the TV!

    Thanks again!

    SAMSUNG – forced RGB mode (EDID override):
    Resolution: 3840 x 2160 @ 30 Hz
    Pixel Depth: 32-Bit Color (ARGB8888)
    Main Display: Yes
    Mirror: Off
    Online: Yes
    Rotation: Supported
    Automatically Adjust Brightness: No

  10. I have an Acer K272HUL. I just wanted to add that for this display (and apparently other Acer displays based on my research) you’ll need to change the monitor to use DP 1.1 via the monitor’s on screen configuration. When running with the display in DP 1.2 mode, you’ll get RGB color (no more jaggy text), but you wont be able to run it at the full 2560×1440. Changing back to DP 1.1 will then give you full resolution and a great picture!

  11. Hello. I dont really get this. I have the U2414H display connected to my MBP 15″ mid-2012 (Display port – Display port) and I see absolutely no problems on my screen exept for the info given that it is found as a TV. It also shows TV when using Airplay. But the colors and the screen looks fine. is it just me?

  12. I run the script mentioned on this website following the instructions above and it worked without problems on Sierra 10.12.1. I copied the RAW script (RAW button in the upper right corner of the frame with script text, pasted it to nano, saved, and run. No need to worry about the built in display, it is omitted by the script).

    I can easily confirm the effect with my Dell U2515H, which actually displays the input mode.

    I did the hack to improve font rendering, which is very nice on retina, but not on the external display. Unfortunately, I cannot really see a difference – I guess I would need to have a side by side comparison. That said, the screen look fine to me now.

  13. I upgraded to Sierra before remembering I had to do this hack to get my old Mac mini to work well with an external display. So glad this page still exists!

    Here are the steps I had to follow, since I don’t have a Recovery Partition on this computer, and Internet Recovery uses a very old version of OS X that doesn’t have the csrutil utility.
    1. Download Sierra installer again.
    2. Follow the steps on Apple’s site to make a bootable USB drive.
    3. Reboot and hold down Option and then select the USB drive.
    4. Wait forever for it to boot.
    5. Use the Terminal to run csrutil disable.
    6. Follow the steps above.
    7. Rejoice in my white windows actually being white instead of gray!!!!
    8. Try to remember to re-enable SIP.

    • Thanks Scott,
      I tried to do the same steps in Sierra but I have a issue with ruby

      davids-MacBook-Pro:~ disiei$ ruby patch-edid.rb
      ruby: No such file or directory — patch-edid.rb (LoadError)

      My ruby version
      davids-MacBook-Pro:~ disiei$ ruby -v
      ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]

      Thnaks in advance !!

      David

  14. I’m running Sierra (MacBookPro) and trying to use this solution for my Asus monitor. I’ve downloaded and unzipped the .rb file and placed it in my home directory, but when I run the ruby patch-edid.rb in Terminal, nothing appears to happen. A new Terminal line appears, and no new folder is created in my home directory. Does anyone know what I might be doing incorrectly? Thanks!

  15. Hi – I sent these instructions to someone and they had a little trouble. For step 6, I’d suggest clarifying that they may have to create the Resources and Overrides folders. There is an Overrides directory under a slightly different path that seems to be confusing. Path has to be exact and I think is overlooked sometimes due to the presence of a similar path.

    Also, for being able to close your laptop without it turning off, (as suggested in step 4), there is a free package called SetResX by Paul Griffin (thanks!) that can help accomplish this. Sometimes hosted on some spammy websites though, so be careful.

    These steps work though.

  16. Works for me.. awesome!
    I had my monitor connected with serial port initially. Switched to HDMI but the text looked all blurry.
    This solution works for me on Mac OS Sierra. Thanks

  17. What I got. Maybe help somebody .
    Mac mini 2012,Osx 10.10.5 // display PIONEER KURO PRO 110FD.
    I can options on TV ,control input signal . you can see from manual \Pioneer KURO .

    Problem not in MAC or TV ( monitor)
    problem in cable.
    HDMI send YCbCr colour space . Check different HDMI cable like 1.2 1.4 2.0 My all HDMI pick from Mac YCbCr colour space .
    and now DP (thanderbolt) to HDMI :
    My old chip from Ebay DP to HDMI send RGB signal.
    I got brand new DP to HDMI from eBay and this cable send on the same system YCbCr colour space .
    I have control option on my Pioneer KURO and can see what signal arrived in my tv.
    From KURO manual :
    • If you select “Auto”, an attempt will be made to identify the type of digital video signals when digital video signals are received.
    This is option for input signal:
    

    Auto (default) Automatically identifies input digital video signals/////////////////////////////any cable you never know
    Color-1 Digital Component Video signals (4:2:2) locked/////////////////////////////////////HDMI-HDMI, new DP-HDMI
    Color-2 Digital Component Video signals (4:4:4)locked///////////////////////////////////////HDMI-HDMI, new DP-HDMI
    Color-3 Digital RGB signals (16 to 235) locked////////////////////////////////////////Old DP to HDMI
    Color-4 Digital RGB signals (0 to 255) locked///////////////////////////////////// Old DP to HDMI cable
    4K*2K HD TV To HDMI Adapter Cable 6ft 1.8m Mini DisplayPort DP Thunderbolt Cord
    This is DP -HDMI cable new one send YCbCr colour space:

    

  18. This resolved my monitor issue as well. Also, I just upgraded to macOS Sierra, and it still works. I have an Acer K272HUL, which is a good monitor, but I could not get rid of the jaggy text. This solution worked and the difference is like night and day. The text looks absolutely great. I also noticed in my System Preferences -> Displays – Refresh Rate is not 60 Hz as before. It is now 59.88 Hz. Thanks again to everyone who contributed to finding and posting the solution!

  19. MBP Mid-2012 non-retina, hooked up with Dell U2414H. GeForce 650M. Closed lid, therefore running on the 650M and not the built in graphics.

    Im not sure if my screen shows weird colours. Would it be easy to notice? Should text look weird too, you say. My screen is found as a TV by OS X, and when I had El Capitanthius “trick” removed the shown as aTV-problem, but I cant say if the colours, graphics etc looks different.

    Now using Sierra (not preview), it seems like the settings have been restored and my screen is found as A TV again. Did or did it not work to do this trick in Sierra, and what is the benefit if the screen shows, from what I cat tell, the right colours?

    How to tell if things are OK or not, and could it be fixed even in Sierra?

  20. I am trying this with a BenQ GW2765, connected to a 2012 Mac mini via HDMI. The script seems to run OK, and I get the new display profile, bit it makes no difference. Text is still fuzzy, and I can’t get the max resolution.

  21. The resolution seems to work fine, but it the monitor (ASUS PA279Q) still shows up as Television in my Display Systems Report (Apple Menu). Would this be considered a full use of the Adobe aRGB on my monitor?

  22. I’ve followed the steps to step 5. When I type the “ruby patch-edid.rb” in terminal it says command can’t be found or something like that. I’m not a programmer or anything of the sort. Is there something I’m doing wrong?

  23. I got a CX271 EIZO monitor, and when using it in windows bootcamp displays pures blacks and pure whites (Full dynamic range 0-255 enabled in nvidia driver) while in macosX blacks and white are faded.
    Is there a solution to fix that ?
    I tried to force recognition of my screen and nothing append (just a profile created in my display panel in macosx preferences). Blacks and white are always dead.

  24. This worked on a MacBook Air 13 ince Early 2014 that was having strange text issues on a Dell P2815Q. Thanks a bunch! Saved me some moolah

  25. So this used to work PERFECTLY for me, but now since updating to the latest version of OS X (10.11.6) it seems to not be working fully. System information doesn’t show it as being a TV anymore: http://schoal.es/1lh6R

    But in the display preference pane it’s still only giving me TV resolution:
    http://schoal.es/101KN

    I even recently bought a Mini Display Port to Mini Display Port cable to try and fix the problem.

    This is so absurdly frustrating, and I don’t know who’s to blame – Apple or Dell – but I am ready to pull my hair out (and sell this monitor for one that works reliably).

Leave a Reply