Navigate / search

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

  1. Download the patch-edid.rb script from the forums thread above and put it in your home directory.
  2. Connect only the external monitor(s) in question (I closed my MacBook lid, for example). The script will make override files for any connected monitor.
  3. Type “ruby patch-edid.rb” in Terminal.
  4. A new folder will be created in your home directory. Move it into the “/System/Library/Displays/Overrides” folder. If Finder tells you that you are overwriting an existing folder, consider backing it up first.
  5. Restart your computer, 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.

Updates

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, 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.

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, 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.

Comments

fernando
Reply

i can’t run the script on maverick.

i get “command not found”

help!

ninaundmomo
Reply

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

maiky
Reply

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!

fernando
Reply

ok. this works but it sets my resolution to 1080i. there is no P option unless i go to 720.

fernando
Reply

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.

Joanna
Reply

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..

skylife88
Reply

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!

gavin
Reply

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 :)

tommy
Reply

works on late retina macbook pro 15″ w/Dell U2713H

Sundeep
Reply

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

Shawn
Reply

Thank you so much!!!

Works perfectly on a Dell U2414H connected to an 21.5″ iMac (mid-2011).

Hopemeister
Reply

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.

mkvstheworld
Reply

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!

Leave a Reply