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.
Here is the direct link to the video tutorial: https://www.youtube.com/watch?v=Z1EqH3fd0V4
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:
open /Library/Preferences
plutil -convert xml1
plutil -convert binary1
plutil -lint
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
Apple Open Source Project Files for Displays and Graphics
https://opensource.apple.com/source/IOKitUser/IOKitUser-1445.60.1/graphics.subproj/IODisplayLib.c
https://opensource.apple.com/source/IOGraphics/IOGraphics-517.17/IOGraphicsFamily/IOFramebuffer.cpp.auto.html
How to Edit and Convert binary plist files
http://hints.macworld.com/article.php?story=20050803111126899
https://apple.stackexchange.com/questions/155393/how-to-beautify-binary-dict-files
https://discussions.apple.com/thread/1768480
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:
open /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
