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

I’m not running OS X any more, 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, 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.

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

Comments

Kitty Bessie
Reply

I thought I would have to do this, but I didn’t. Instead I used the big fancy dual cable Mini Display Port to DVI Adaptor (purchased by my company when the MPB was bought recently and didn’t work on my 24) to connect to my Dell P2314H as it worked fine, and used my partner’s spare basic single cable Mini Display Port to DVI adaptor to connect my Dell U2413, which was the one that didn’t work originally on the bigger, fancier MDP to DVI. So now, without having to rewrite anything, I have my dual monitors up and running and looking sweet! So, if you don’t want to fiddle around for hours with the code, ask around and try a few different cables and connectors that people have lying around in their desks and cupboards. Worked for me, might work for you too! :)

Conrad Rodas
Reply

Thank you for your file. Unfortunately it didn’t work for me.

I have a MacPro (new model) with Thunderbolt to HDMI and a Dell 2711.
This setup worked with 10.9 Mavericks. I had to press “Alt” while
pressing “scaled” in preferences in order to get 2556×1440 as an option.
As soon as I upgraded to 10.10 (currently on 10.10.3 beta) the
resolution went away and the highest I can reach is 1920×1080.

I downloaded all 3 scrips, even the alternative. I put the Ruby file in
my home folder, run the script, create the new folder with the new text
file with I name DisplayProductID-a055, restart my computer and nothing.
I still only see 1920×1080 as my highest resolution possible. I am putting it
in the correct folder System<Library<Displays<Overrides

What can I be doing wrong?

Please please help!

Thank,

Teryl Boothe
Reply

thanks a ton. This worked on a Acer K272HUL, retina MacBook Pro.

Pissed Mac User
Reply

This doesn’t work for me. I am running OSX Mavericks with a Dell 2407WFP and after running the Ruby script, replacing in Overrides, also doing the font smoothing with -2, my screen still looks blurry. Very frustrating when this display worked perfectly with an older MBP (non-Retina, 10.8) and also works perfectly with Linux. I’m going Thunderbolt to DVI-D, I guess I’ll try other combinations … Thunderbolt to VGA … HDMI to VGA … this is just stupid.

John
Reply

The patch-edid Ruby script worked perfectly for me and my dual Dell 2413 monitors. Because I have a new (spring 2014) MacBook Pro (with retina display), I have one monitor connected via HDMI and the other via Thunderbolt / Display port. The problem affected only the monitor connected via HDMI.

I played the swap game trying to isolate the problem (swapped cables, swapped monitors, swapped MacBooks) … eventually proving that it ONLY occurs with a Dell U2413 monitor connected via HDMI to a new MacBook running Mavericks. The problem does not occur with a) an old MacBook, or b) connection via Display Port, or c) using a Dell U2410 monitor.

Thanks again!

–John

Nazar M
Reply

Thank YOU!!!!! SO MUCH!!! Worked on my Dell U2713H – amazing!

Jordan Harrop
Reply

Hello,

Does anyone know how to force RGB on an iMac. I have an HP DreamColor Monitor, but unlike a laptop, I can not seem to shut off the main monitor to the iMac for the override to work.

Thanks,
Jordan

Griff
Reply

Great work everyone, but especially to Andrew for making it foolproof for non-coders like me!

John
Reply

I hit the same problem again today with a brand new-out-of-the-box Mac Mini running OS X Server 10.9.5 and a Dell U2413 connected via HDMI. I ran patch-edit, moved the DisplayProductID to the Override folder, rebooted and presto chango! Thanks again Andrew!

(I also submitted this problem and the fix to Apple, asking them to fix it in the OS so that we don’t have to patch every machine …)

–John

Nisse
Reply

Thanks! Works perfectly with Macbook Pro Retina, mid 2014 with OS X 10.9.5 and Acer B296CL display

Dave
Reply

I’m using a HP 2509m with a mid-2014 retina macbook pro and this worked great for me, thanks!

Colin
Reply

Thank you very much! I used Andrew’s modified script and proceeded through all the steps while my MacBook’s lid was closed. After the fix was applied, I re-opened my lid and the external screen momentarily flashed black signifying the MacBook’s connection.

When I checked the color space on the monitor’s control panel it was RGB. I didn’t have to do a restart, but I assume that’s because the display’s override files were reloaded when the lid was opened.

For reference, I used this on a Dell S2340L (HDMI) and a MacBook Pro Mid 2012 running OSX 10.10 Public Beta 4.

Teryl Boothe
Reply

Update: I loaded Yosemite Beta 4 onto my rMBP and lost the resolution. Found the directory created by the script under Mavericks and, after a couple of tries, got it moved into the Overrides subdirectory. Got my nice resolution back.

Danilo
Reply

Also I have the same problem.
MBP (mid 2010) – MiniDisplayPort to HDMI – 1080p – Tv Haier 22 “Full HD 200Hz LE22m600.
The resolution is correct (1920×1080 60Hz) but the colors and fonts are bad.
Applying the patch nothing has changed ….
Today I try with the modified version.

Gaurav Varshney
Reply

Great solution it worked for my HP 2509 monitor. Thanks a lot!!!

Nick Mowinski
Reply

Danilo, I’ve had the same issue with a TV (Bravia 40D3000, see page 5), however I suspect, that unless it’s an actual monitor the chances of getting the correct EDID is slim to none. Nobody here seems to have success here beyond dedicated PC monitors.

I’ve essentially given up, but Google this issue occasionally in the faint hope that Apple get their finger out of their collective arse and fix this.

Sadly, this is still the number one hit when I search.

Brady
Reply

I don’t know if anyone can help me with this however…. I stupidly came on here thought I knew what I was doing. So I copied that long ass command this into terminal and pressed enter. Now my second monitor is really laggy and grainy. Is there a reverse command so I can get it back to normal?

Mocha Gromurph
Reply

Just updated to newly released Yosemite.. and it overrode the rgb fix. Fortunately I remembered that I’d done it and the ruby script described above still works.

psbrubaker
Reply

Upgrading to OSX Yosemite caused my display to revert back. Tried running the script again and it does not create and override file. Any idea what to do?

psbrubaker
Reply

Found the override file… got it fixed.

thohow
Reply

I have the same trouble after upgrading to OS X Yosemite. My previous setting for my Monitor LG 29EA73 worked fine with the script under the OS X Mavericks. Now it´s all gone. Can anyone give me some advice which script to run and how to do it under Yosemite? Thanks

SL
Reply

Still works for Yosemite. Same script as above. Look in the home folder for the file created.

ludwig70
Reply

It seems to me that Yosemite now recognizes my Philips 272C4, and I don’t need the script anymore.
That’s the way it should be. I hope this will be the case with all other (your) monitors in the near future.

Christan Fergus
Reply

For Mavericks this worked perfectly right away. Upgrading to Yosemite erased the script, but on reinstallation I haven’t been able to get it to work for my Asus PA248. Any ideas? I also tried replacing and renaming the script to an existing script…but nothin’.

Christan Fergus
Reply

Got it to work the third time. To start over each time, I replaced the Overrides folder with my back up, and started the entire process over again. Finally, by the third try, it worked. Most likely user-error.

Philipp
Reply

My Dell U2412M still looks like sh*t. The script hepled a little, but it still doesn’t look crisp at all. No matter how it’s connected (VGA, DP, DVI). I tried different screen (Asus VW266H) via HDMI and it was soo much better.

Brian Schell
Reply

Just wanted to mention that I have a brand new Mac Mini *Late 2014… the stores just got them in yesterday) and an HP2509m monitor. I had the blurry font problem, and this script fixed it instantly. Thanks to whoever came up with this, but I';m having a hard time understanding why Apple hasn’t fixed the problem since it’s obvisouly been going on for so long.

reiiz
Reply

Worked on 2012 iMac with the new OS X Yosemite + Dell U2410. Thanks once again!

Caleb Liau
Reply

Hello, I’m using a retina macbook pro 13′ late 2012 with intel HD graphics 4000, running Yosemite, 10.10 hook to a DELL 3007WFP with dual link DVI to mini display port cable. Ran patch-edid.rb, replace the folder in system, reboot but it doesn’t work. :(

Pat
Reply

Thanks, I installed the script and now I can use full 2560×1440 on my new Asus K272HUL. I am using via HDMI on my 15″ MBP Retina late 2013.

Yas
Reply

Patch was working fine until the yosemite update. Tried process again and did not work. Any ideas as to what I can do? Screen looks terrible. Not crisp at all. The screen I’m using is a Dell U2413.

Any help will be very much appreciated.

Dembo
Reply

As expected I lost the RGB on an Acer K272HULbmiidp connected via HDMI when I moved from Mavericks to Yosemite. Re-ran the Ruby script (the improved version that correctly names the display), put the folder into the right folder as instructed, rebooted and… it work like charm.

I really find it quite embarrassing for Apple that you have to jump through so many hoops to get things up and running but at least it is working as expected.

Leave a Reply