Force rgb mode apple silicon

SalGnt / force-rgb-mode-in-mac-os-x-to-fix-the-picture-quality-of-an-external-monitor.md

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

Update: I have heard that 10.8.3 has solved this problem for some people, so I rolled back my changes and installed the update. No change on my monitor. Nevertheless, it’d be a good idea to update OS X before trying this, since it may fix the issues with your particular hardware.

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 useless most of the “Apple community” is 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 responses from the Apple geniuses 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.

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.

Источник

Как настроить режим RGB для внешнего монитора в macOS Big surf?

Оказывается описанный на reddit способ подгрузки RGB профиля для внешнего монитора является довольно «костыльным», все делается гораздо проще:
1) генерим файл профиля с помощью скрипта Create display override file to force Mac OS X to .
2) и копируем полученную папку и файл в папку Библиотека, которая в корне диска «Macintosh HD»! Т.е. не в системной папке «/Volumes/Macintosh\ HD/System/Library», и именно в корне «/Volumes/Macintosh\ HD/Library».
В моём случае это выглядит так «/Volumes/Macintosh\ HD/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-22f0/DisplayProductID-302f»
3) Мне даже перезагружать систему не понадобилось, подключил монитор и все отображается норм.

Итог — не надо отключать sip, не надо менять системные файлы, делая для этого кучу манипуляций, жалко что на reddit такой корявый способ.

Отключите SIP и попробуйте скопировать файл, находясь в Recovery.

SIP отключил, выключил комп, загрузился в рековери, но копировать по прежнему не получается — пишет Read-only.

на скрине ниже видно что SIP отключен, и последовательность команд, скрин сделан в обычном режиме, но тоже самое происходит и в рековери.

Читайте также:  Что делать когда запретят айфоны

Походу нашел ответ на вопрос почему не получается изменить системные файлы с отключенным sip в big surf.
sip in big sur

Источник

GetVladimir / Force-RGB-Color-on-M1-Mac.md

Force RGB Color on M1 Mac

How to Force RGB Color Output instead of YPbPr on your M1 Apple Silicon Mac for an External Monitor.

This step-by-step video tutorial will guide you through the procedure of forcing RGB color output on your M1 Mac.

The video also has Closed Captions (Subtitles) that you can enable, to make it easier to follow if needed.

Please note that you’re doing any changes on your own risk.

Here are each of the Terminal commands mentioned in the tutorial, so that you can just copy and paste them:

plutil -convert xml1

plutil -convert binary1

The end result is having your M1 mac output RGB color to your external monitor instead of YPbPr, potentially making the colors more accurate and the text a bit more crisp, even on older 1080p monitors.

Hopefully this tutorial would be useful to someone.

Please feel free to ask in the comment section if you have any questions regarding this procedure.

While doing a lot of testing on how the Dual-Cable workaround makes RGB to work on M1, I’ve discovered what changes it makes to macOS, and managed to create a more streamlined workaround without the need to use a second cable.

To make things easier, I’ve created a step-by-step video tutorial of the whole procedure that should force RGB color output on your M1 Mac connected to an external monitor, and works on an HDMI-to-HDMI cable connection.

Big thanks goes to the amazing community and all their help over the years to solve issues like this:
https://gist.github.com/ejdyksen/8302862
https://gist.github.com/adaugherity/7435890

Apps based on this method

@sudowork has created an awesome script written in Phyton that automates the steps and checks for duplicate files.
You can find more info about it here: https://github.com/sudowork/fix_m1_rgb

Multiple PixelEncoding and Range keys in the same plist file
Note that there might be multiple instances of the PixelEncoding and Range keys in the same file, one for each output of your monitor and for different AirPlay devices. You might need to update the integer on each one to get RGB color output on all displays.

Getting RGB color only before login
There might be multiple duplicate plist files with the same name in different locations.

Make sure that you only have the main modified file in:
/Library/Preferences

Then make a backup and remove duplicate displays plist files from these locations (if any):

/Library/Preferences
or
/Users/username/Library/Preferences
and
/Users/username/Library/Preferences/ByHost

Updates regarding macOS Monterey

USB-C to DisplayPort
From what I’ve seen, it seems that macOS Monterey 12.0.1 finally outputs RGB color by default on some monitors when using USB-C to DisplayPort cable on M1 Apple Silicone Macs.

You might need to make a backup and delete these 2 files:
/Library/Preferences/com.apple.windowserver.displays.plist
and
/Users/yourname/Library/Preferences/ByHost/com.apple.windowserver.displays.[UDID].plist

Restart your Mac and it should properly output RGB color on the monitor on the next boot.

HDMI to HDMI
The situation with HDMI seems to got a bit more complicated. Now the whole section for the LinkDescription might be missing from the com.apple.windowserver.displays.plist on a clean install and doesn’t seem to be recreated when rotating the screen either.

Luckily, the solution still works, but you might need to manually add this whole section in the displays plist file:

The section usually goes right under the CurrentInfo key, and it should look something like this:

This should get your RGB color output working on M1 Mac mini, even when connected with HDMI to HDMI cable.

Multiple monitors when one them is using HDMI to HDMI
Additional thanks goes to @somogyi-ede who tested this with multiple monitors and confirmed that the LinkDescription key needs to be added under each monitor instance in order for all of them to receive RGB color output. Link to the comment

If you have any additional questions, please feel free to contact me.

somogyi-ede commented Oct 28, 2021 •

This method used to work perfectly, but upgrading to Monterey seems to have broken it. I checked all the PixelEncoding and Range variables and even though they were all fine, I’m now getting YCbCr on one of my Dell monitors (interestingly on the one connected via HDMI — the USB-C one is still fine).

GetVladimir commented Oct 28, 2021

This method used to work perfectly, but upgrading to Monterey seems to have broken it. I checked all the PixelEncoding and Range variables and even though they were all fine, I’m now getting YCbCr on one of my Dell monitors (interestingly on the one connected via HDMI — the USB-C one is still fine).

Thank you for your comment, @somogyi-ede

I’m happy to say that the procedure still works, although it might require a few more steps now:

Update regarding macOS Monterey 12.0.1 on 2021-10-28

Monterey and USB-C to DisplayPort
From what I’ve seen, it seems that macOS Monterey 12.0.1 finally outputs RGB color by default on some monitors when using USB-C to DisplayPort cable on M1 Apple Silicone Macs.

You might need to make a backup and delete these 2 files:
/Library/Preferences/com.apple.windowserver.displays.plist
and
/Users/yourname/Library/Preferences/ByHost/com.apple.windowserver.displays.[UDID].plist

Restart your Mac and it should properly output RGB color on the monitor on the next boot.

Monterey and HDMI to HDMI
The situation with HDMI seems to got a bit more complicated. Now the whole section for the LinkDescription might be missing from the com.apple.windowserver.displays.plist on a clean install and doesn’t seem to be recreated when rotating the screen either.

Luckily, the solution still works, but you might need to manually add this whole section in the displays plist file:

The section usually goes right under the CurrentInfo key, and it should look something like this:

This should get your RGB color output working on M1 Mac mini, even when connected with HDMI to HDMI cable.

Читайте также:  Как поставить живые обои для айфона

If you have any additional questions, please feel free to contact me.

somogyi-ede commented Oct 29, 2021

I can confirm that this works wonderfully, thank you very much!

GetVladimir commented Oct 29, 2021

I can confirm that this works wonderfully, thank you very much!

Thank you so much for the reply and for the confirmation, @somogyi-ede! I’m glad to hear that it’s working good again

mahenzon commented Oct 30, 2021 •

Hey!
Thank you very much for this!
I used https://github.com/sudowork/fix_m1_rgb and it helped!

My LG 34WK95C got washed out colors once I checked and unchecked HDR box on my M1 MacBook Pro (connected by USB-C).
This script fixed the issue!
macOS Big Sur 11.4

GetVladimir commented Oct 30, 2021

Hey @mahenzon, thank you for your comment and I’m glad to hear that you got RGB color output working

57382 commented Nov 7, 2021 •

Hey @mahenzon, thank you for your comment and I’m glad to hear that you got RGB color output working

com.apple.windowserver.displays.plist was broken at macOS 12.0.1
com.apple.windowserver.displays.plist cannot be found now. But I found com.apple.windowserver.plist
The contents of the com.apple.windowserver.plist file have changed. I copy and paste it out. This is original unmodified.

GetVladimir commented Nov 7, 2021

com.apple.windowserver.displays.plist was broken at macOS 12.0.1 com.apple.windowserver.displays.plist cannot be found now. But I found com.apple.windowserver.plist The contents of the com.apple.windowserver.plist file have changed. I copy and paste it out. This is original unmodified.

@57382 thank you for your comment.

From the details that you’ve posted, this doesn’t look like a plist file created on an M1 based Mac. It looks like a x86 plist file. I’m afraid you won’t be able to use that to get RGB color output working on M1.

If you have a M1 based Mac, you might want to go through the Force RGB Color Output step-by-step procedure from the beginning: https://www.youtube.com/watch?v=Z1EqH3fd0V4

Make sure to do a backup beforehand, and please know that you’re doing any changes at your own risk.

57382 commented Nov 8, 2021

—————————————————————————————————————————————————————-—————
com.apple.windowserver.displays.plist was broken at macOS 12.0.1 com.apple.windowserver.displays.plist cannot be found now. But I found com.apple.windowserver.plist The contents of the com.apple.windowserver.plist file have changed. I copy and paste it out. This is original unmodified.

@57382 thank you for your comment.

From the details that you’ve posted, this doesn’t look like a plist file created on an M1 based Mac. It looks like a x86 plist file. I’m afraid you won’t be able to use that to get RGB color output working on M1.

If you have a M1 based Mac, you might want to go through the Force RGB Color Output step-by-step procedure from the beginning: https://www.youtube.com/watch?v=Z1EqH3fd0V4

Make sure to do a backup beforehand, and please know that you’re doing any changes at your own risk.

I tried everything here and there. None of these scripts work for me. The EDID is loaded correctly. I checked the EDID content and found no exceptions and errors. I use the HDMI cable to establish a direct connection. I don’t use a signal converter. My Dell U2414H OSD always works at YPbPr. I can’t get RGB. Thank you for everything.

somogyi-ede commented Nov 8, 2021 •

Hello @GetVladimir, I previously confirmed that your updated solution works (M1 Mac Mini, 1x USB-C monitor + 1x HDMI monitor) and that still is the case, but only when both monitors are connected (RGB on both Dell monitors).
After I disconnected the USB-C one, however, leaving only the HDMI monitor connected (a restart may be necessary), I could no longer switch it to RGB. Followed your instructions to the letter, verified everything, everything seems to be in order, but still YCbCr.
It’s not that big a deal for me as I’m not planning on leaving only the HDMI one connected long-term, just wanted to give some feedback and I’m hoping that it helps diagnostically. Thank you for all your work, keep it up! If I can help with any info or testing, please let me know.

GetVladimir commented Nov 8, 2021

@57382 thank you for your comment.
From the details that you’ve posted, this doesn’t look like a plist file created on an M1 based Mac. It looks like a x86 plist file. I’m afraid you won’t be able to use that to get RGB color output working on M1.
If you have a x86 based Mac, there are script that already work great for it: https://gist.github.com/ejdyksen/8302862 https://gist.github.com/adaugherity/7435890
If you have a M1 based Mac, you might want to go through the Force RGB Color Output step-by-step procedure from the beginning: https://www.youtube.com/watch?v=Z1EqH3fd0V4
Make sure to do a backup beforehand, and please know that you’re doing any changes at your own risk.

I tried everything here and there. None of these scripts work for me. The EDID is loaded correctly. I checked the EDID content and found no exceptions and errors. I use the HDMI cable to establish a direct connection. I don’t use a signal converter. My Dell U2414H OSD always works at YPbPr. I can’t get RGB. Thank you for everything.

@57382 thank you for the update.

I’m sorry, I still don’t understand what type of Mac do you have. From the EDID in the previous comment, it seems that you don’t have an M1 based Mac. Is that correct?

Please note that this procedure only works for M1 based Macs.

If it is an M1, then there must be something else that we’re missing

GetVladimir commented Nov 8, 2021

Hello @GetVladimir, I previously confirmed that your updated solution works (M1 Mac Mini, 1x USB-C monitor + 1x HDMI monitor) and that still is the case, but only when both monitors are connected (RGB on both Dell monitors). After I disconnected the USB-C one, however, leaving only the HDMI monitor connected (a restart may be necessary), I could no longer switch it to RGB. Followed your instructions to the letter, verified everything, everything seems to be in order, but still YCbCr. It’s not that big a deal for me as I’m not planning on leaving only the HDMI one connected long-term, just wanted to give some feedback and I’m hoping that it helps diagnostically. Thank you for all your work, keep it up! If I can help with any info or testing, please let me know.

Hey @somogyi-ede, thank you for the update. It’s good info to know.

Читайте также:  Небезопасная сеть вай фай айфон как подключиться

I’ll be happy to help with testing this further if needed, so that we can find a solution when you only have one monitor connected.

Could you tell me if you mirror the displays when you have them both connected?

If yes, it’s very possible that the USB-C monitor has RGB color output and the HDMI one gets it thanks to it. When you disconnect them, it might revert back to YPbPr.

First step to testing would be to connect only the HDMI monitor, making a backup of both plist files and removing them. Then starting the procedure from the beginning, and getting a new plist file to work with the HDMI monitor.

Let me know if you need any additional info regarding this.

57382 commented Nov 9, 2021

@57382 thank you for your comment.
From the details that you’ve posted, this doesn’t look like a plist file created on an M1 based Mac. It looks like a x86 plist file. I’m afraid you won’t be able to use that to get RGB color output working on M1.
If you have a x86 based Mac, there are script that already work great for it: https://gist.github.com/ejdyksen/8302862 https://gist.github.com/adaugherity/7435890
If you have a M1 based Mac, you might want to go through the Force RGB Color Output step-by-step procedure from the beginning: https://www.youtube.com/watch?v=Z1EqH3fd0V4
Make sure to do a backup beforehand, and please know that you’re doing any changes at your own risk.

I tried everything here and there. None of these scripts work for me. The EDID is loaded correctly. I checked the EDID content and found no exceptions and errors. I use the HDMI cable to establish a direct connection. I don’t use a signal converter. My Dell U2414H OSD always works at YPbPr. I can’t get RGB. Thank you for everything.

@57382 thank you for the update.

I’m sorry, I still don’t understand what type of Mac do you have. From the EDID in the previous comment, it seems that you don’t have an M1 based Mac. Is that correct?

Please note that this procedure only works for M1 based Macs.

If it is an M1, then there must be something else that we’re missing

Intel Hackintosh X86. I tried a script for X86. But none of them are valid. I can only get RGB under the DP link line. But I asked to use HDMI. My U2414H is EDID1.3. Could this be the reason for the invalidity?

GetVladimir commented Nov 9, 2021

Please note that this procedure only works for M1 based Macs.
If it is an M1, then there must be something else that we’re missing

Intel Hackintosh X86. I tried a script for X86. But none of them are valid. I can only get RGB under the DP link line. But I asked to use HDMI. My U2414H is EDID1.3. Could this be the reason for the invalidity?

@57382 thank you for the clarification.

There are so many variations what could be the issue in that case, I’m afraid. If you can get RGB color output using DisplayPort already (which even some genuine Macs can’t), you most likely should use that.

The U2414H is not the limitation in this case. However, your machine might assign the HDMI port on the monitor to have a different ID each time, and since the override scripts depend on it to work, that could be the cause why the x86 scripts don’t work for you.

The solution above will not work in your case at all also, since it needs M1/Arm SoC to even use the plist file. Otherwise macOS just disregards it and uses the defaults.

somogyi-ede commented Nov 10, 2021

Hello @GetVladimir, I previously confirmed that your updated solution works (M1 Mac Mini, 1x USB-C monitor + 1x HDMI monitor) and that still is the case, but only when both monitors are connected (RGB on both Dell monitors). After I disconnected the USB-C one, however, leaving only the HDMI monitor connected (a restart may be necessary), I could no longer switch it to RGB. Followed your instructions to the letter, verified everything, everything seems to be in order, but still YCbCr. It’s not that big a deal for me as I’m not planning on leaving only the HDMI one connected long-term, just wanted to give some feedback and I’m hoping that it helps diagnostically. Thank you for all your work, keep it up! If I can help with any info or testing, please let me know.

Hey @somogyi-ede, thank you for the update. It’s good info to know.

I’ll be happy to help with testing this further if needed, so that we can find a solution when you only have one monitor connected.

Could you tell me if you mirror the displays when you have them both connected?

If yes, it’s very possible that the USB-C monitor has RGB color output and the HDMI one gets it thanks to it. When you disconnect them, it might revert back to YPbPr.

First step to testing would be to connect only the HDMI monitor, making a backup of both plist files and removing them. Then starting the procedure from the beginning, and getting a new plist file to work with the HDMI monitor.

Let me know if you need any additional info regarding this.

Hello @GetVladimir, I don’t have them mirrored. Some additional info for reproducibility’s sake:
When I have both of them connected, I’m getting RGB on both with your solution above. When I disconnect the USB-C one (without restarting), I still get RGB on the HDMI one. After a restart though (leaving only the HDMI one connected), it reverts to YCbCr.

I’m going to try starting over with only the HDMI one connected as you suggested and will be back with my findings.

Источник

Оцените статью