Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
A script to fix EDID problems on external monitors in macOS

patch-edid.rb

A script to fix EDID problems on external monitors in macOS.

Instructions

  1. Connect only the problem display.

  2. Create this directory structure (if it doesn't already exist):

    sudo mkdir -p /Library/Displays/Contents/Resources/Overrides
  3. Download this ruby script in that directory:

    cd /Library/Displays/Contents/Resources/Overrides
    sudo curl -O https://gist.githubusercontent.com/ejdyksen/8302862/raw/patch-edid.rb

    Note: You may want to use adaugherity's version of the script instead.

  4. Run the script we just downloaded (as root again). This creates a new display override plist file.

    cd /Library/Displays/Contents/Resources/Overrides
    sudo ruby patch-edid.rb
  5. Unplug and replug in the problem display.

Additional reading/acknowledgements

  • The original forum thread
  • An improved version of the script by adaugherity
  • An explaination of the problem from Atomic Object's blog
  • Thanks so much to @stackrainbow for pointing out that this can be done without disabling SIP.
  • This version appears to work in Catalina and Big Sur. See earlier revisions for what worked (with disabling SIP) in earlier versions of macOS, which require the override plist to be in a different directory.
#!/usr/bin/ruby
# Create display override file to force Mac OS X to use RGB mode for Display
# see http://embdev.net/topic/284710
#
# Update 2013-06-24: added -w0 option to prevent truncated lines
require 'base64'
data=`ioreg -l -w0 -d0 -r -c AppleDisplay`
edid_hex=data.match(/IODisplayEDID.*?<([a-z0-9]+)>/i)[1]
vendorid=data.match(/DisplayVendorID.*?([0-9]+)/i)[1].to_i
productid=data.match(/DisplayProductID.*?([0-9]+)/i)[1].to_i
puts "found display: vendorid #{vendorid}, productid #{productid}, EDID:\n#{edid_hex}"
bytes=edid_hex.scan(/../).map{|x|Integer("0x#{x}")}.flatten
puts "Setting color support to RGB 4:4:4 only"
bytes[24] &= ~(0b11000)
puts "Number of extension blocks: #{bytes[126]}"
puts "removing extension block"
bytes = bytes[0..127]
bytes[126] = 0
bytes[127] = (0x100-(bytes[0..126].reduce(:+) % 256)) % 256
puts
puts "Recalculated checksum: 0x%x" % bytes[127]
puts "new EDID:\n#{bytes.map{|b|"%02X"%b}.join}"
Dir.mkdir("DisplayVendorID-%x" % vendorid) rescue nil
f = File.open("DisplayVendorID-%x/DisplayProductID-%x" % [vendorid, productid], 'w')
f.write '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">'
f.write "
<dict>
<key>DisplayProductName</key>
<string>Display with forced RGB mode (EDID override)</string>
<key>IODisplayEDID</key>
<data>#{Base64.encode64(bytes.pack('C*'))}</data>
<key>DisplayVendorID</key>
<integer>#{vendorid}</integer>
<key>DisplayProductID</key>
<integer>#{productid}</integer>
</dict>
</plist>"
f.close
@chiehchu

This comment has been minimized.

Copy link

@chiehchu chiehchu commented Aug 12, 2015

how about roll back?

@PrfsrX

This comment has been minimized.

Copy link

@PrfsrX PrfsrX commented Aug 25, 2015

Anybody?... Would also love a roll back :)

@unknownzerx

This comment has been minimized.

Copy link

@unknownzerx unknownzerx commented Sep 13, 2015

Will it work on El Capitan? With rootless...

@0x62ash

This comment has been minimized.

Copy link

@0x62ash 0x62ash commented Oct 1, 2015

On El Capitan (disabled rootless) after patching I got acid colors.
So Im using apple default profiles for my Asus VX239 with terrible font smoothing :(

@mirfilip

This comment has been minimized.

Copy link

@mirfilip mirfilip commented Oct 22, 2015

No it won't work with El Capitan. /System/Library/Displays/Overrides doesn't exist and cannot be created or modified even by sudo.

I wonder if turning off SIP and adding this path to excluded paths in /System/Library/Sandbox/rootless.conf. Anyone tried that?

EDIT: Just turned off rootless, patch obviously still works as expected. Also, it's worth to new overrides path to excluded paths in rootless cfg.

@aocana

This comment has been minimized.

Copy link

@aocana aocana commented Nov 6, 2015

not works for my asus vx239
:-(

@serefacet

This comment has been minimized.

Copy link

@serefacet serefacet commented Nov 10, 2015

Not works for my asus vx239 too . I nearly try all kinds of these solutions , DELL and Samsung Monitors seems ok , but I have no solution on asus vx239. Any help is appreciated.

@nook-scheel

This comment has been minimized.

Copy link

@nook-scheel nook-scheel commented Nov 14, 2015

Not work in Mac mini 2009 with VGA display

+-o AppleDisplay  <class AppleDisplay, id 0x1000048fa, registered, matched, active, busy 0 (0 ms), retain 8>
    {
      "IOClass" = "AppleDisplay"
      "CFBundleIdentifier" = "com.apple.iokit.IOGraphicsFamily"
      "IOProviderClass" = "IODisplayConnect"
      "DisplayProductID" = 1815
      "IOPowerManagement" = {"CapabilityFlags"=49152,"MaxPowerState"=3,"CurrentPowerState"=3}
      "IODisplayPrefsKey" = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay-756e6b6e-717"
      "IODisplayParameters" = {"bgsc"={"min"=0,"max"=65536,"value"=65536},"pscn"={"min"=8800,"max"=10000,"value"=10000},"rgsc"={"min"=0,"max"=65536,"value"=65536},"cmod"={"min"=0,"max"=4096,"value"=1},"ggsc"={"min"=0,"max"=65536,"value"=65536},"cyuv"={"min"=0,"max"=268435456,"value"=268435456},"vblm"={"min"=0,"max"=196608,"value"=65536},"gsc "={"min"=0,"max"=65536,"value"=65536},"colr"={"min"=0,"max"=18446744073709551615,"value"=257}}
      "IOProbeScore" = 2000
      "IOMatchCategory" = "IODefaultMatchCategory"
      "IODisplayConnectFlags" = <00000000>
      "DisplayVendorID" = 1970170734
      "DisplaySerialNumber" = 0
    }
@maurei

This comment has been minimized.

Copy link

@maurei maurei commented Nov 24, 2015

Maybe you want to update this topic with the following relevant information:

  1. In El Capitan
    /System/Library/Displays/Overrides
    is now located at
    /System/Library/Displays/Contents/Resources/Overrides
  2. Even with sudo, any write operations will not be permitted. To fix this, reboot in recovery mode (cmd+r during reboot), under utils, open up the terminal. Do csrutil disable. Reboot, and run the script in the relocated folder.
@martystack

This comment has been minimized.

Copy link

@martystack martystack commented Dec 2, 2015

Thanks Maurei for the update.

And if ANYONE is interested in why it doesn't work in OSX El Captain, it is because...

OS X 10.11 « El Capitan » introduces a feature called « System Integrity Protection », aka « SIP » or « rootless » . A lot has been said about this feature on several information media.

Because of this SwitchResX isn't working without overriding the SIP- Maurei explained the work around.

You can read more on this issue here:
http://www.madrau.com/support/support/srx_1011.html

@oliviergilloire

This comment has been minimized.

Copy link

@oliviergilloire oliviergilloire commented Feb 10, 2016

Hi

OS X El Capitan, did all of the above (csrutil disable, root enabled) but the ruby patch-edid.rb just doesn't output anything (no error message, no output on terminal...)

macpro:Overrides root# ruby patch-edid.rb
macpro:Overrides root#
No command line output whatsoever?

The command "ioreg -l -w0 -d0 -r -c AppleDisplay" properly works though and outputs the below:

+-o AppleDisplay <class AppleDisplay, id 0x100000c3e, registered, matched, active, busy 0 (0 ms), retain 8>
{
"IOClass" = "AppleDisplay"
"CFBundleIdentifier" = "com.apple.iokit.IOGraphicsFamily"
"IOProviderClass" = "IODisplayConnect"
"DisplayProductID" = 16540
"IODisplayEDID" = <00ffffffffffff0090ac9c404c37303231170104b5351e783a1df5ae4f35b3250d5054000000010101010101010101010101010101014dd000a0f0703e80302035000f282100001a000000ff0030303030303030303030303030000000fc0044454c4c20555032343134510a000000fd001d4b1f8c36000a20202020202000cc>
"IODisplayPrefsKey" = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/GFXB@3/IOPP/GFX2@0/ATY,KaniS@5/AMDFramebufferSI/display0/AppleDisplay-90ac-409c"
"IOPowerManagement" = {"CapabilityFlags"=49152,"MaxPowerState"=3,"CurrentPowerState"=3}
"IOProbeScore" = 2000
"IODisplayParameters" = {"bgsc"={"min"=0,"max"=65536,"value"=65536},"pscn"={"min"=10000,"max"=10000,"value"=10000},"rgsc"={"min"=0,"max"=65536,"value"=65536},"thrm"={"min"=0,"max"=120,"value"=51},"cmod"={"min"=0,"max"=4096,"value"=1},"ggsc"={"min"=0,"max"=65536,"value"=65536},"cyuv"={"min"=0,"max"=268435456,"value"=268435456},"dith"={"min"=0,"max"=1,"value"=0},"vblm"={"min"=0,"max"=196608,"value"=65536},"gsc "={"min"=0,"max"=65536,"value"=65536},"colr"={"min"=0,"max"=268439825,"value"=268439553}}
"IOMatchCategory" = "IODefaultMatchCategory"
"AppleDisplayType" = 2
"IODisplayAttributes" = {"IODisplayAttributes"=<676174760000000073676c6600000000726c6f630100000063706220040000006364670080808000676c666400000000>}
"AppleSense" = 37119
"IODisplayConnectFlags" =
"DisplayVendorID" = 37036
"DisplaySerialNumber" = 842020684
}

What could be wrong here?

@donald-jackson

This comment has been minimized.

Copy link

@donald-jackson donald-jackson commented Mar 1, 2016

May I ask potentially a different question? I have an external GPU with HDMI 2.0 which works running YCBR 4:4:4 when in Bootcamp but I can't seem to force it to do so in OS X. How can I modify this script to force the only mode available to YCBR 4:4:4 (rather than RGB) as this is in fact a TV. Attached is what I currently get (no custom resolutions, only the HDMI pixel clock patch).
screenshot 2016-03-01 09 28 34

@ojczeo

This comment has been minimized.

Copy link

@ojczeo ojczeo commented Apr 9, 2016

Awesome, thanks for sharing!

@cheynewallace

This comment has been minimized.

Copy link

@cheynewallace cheynewallace commented May 23, 2016

Twice now, this script has saved me from basically having to throw away a monitor. After a recent upgrade to El Capitan I thought It was all over, thanks also to @maurei for the info regarding the new file location. Never would of found that

@davidbdeath

This comment has been minimized.

Copy link

@davidbdeath davidbdeath commented Aug 26, 2016

Is there a way to use this to force 10Bit? My display supports it but even after running the patch my Mac doesn't.

@AlexCoderBit

This comment has been minimized.

Copy link

@AlexCoderBit AlexCoderBit commented Aug 29, 2016

Made my day for second time now ))
Though it took a while for me to make it work on a same MBP 13 but with a new monitor.

@ImRob

This comment has been minimized.

Copy link

@ImRob ImRob commented Sep 12, 2016

Not working for me, i'm about to return this monitor. Thanks anyway @maurei

@ghost

This comment has been minimized.

Copy link

@ghost ghost commented Sep 21, 2016

Hi guys, I had this working on El Capitan, but I've updated to Sierra and performed all the process (turned off SIP too). I can download the file into the correct directory, but for some reason it isn't running the script. What could be going wrong?

@aocana

This comment has been minimized.

Copy link

@aocana aocana commented Oct 1, 2016

Hi,

I have ASUS VX239 and OS sierra. I have connected this monitor to my macbook pro and doesn't work, someone can help me to run this monitor with my macbook pro.?

thanks!!

@Zweedeend

This comment has been minimized.

Copy link

@Zweedeend Zweedeend commented Oct 13, 2016

I have to go through this process every time there is a new update for the Mac. Here are the steps I took for Sierra (they are the same for El Capitan)

  1. Reboot into Recovery Mode, by holding ⌘ + R when the computer is booting
  2. Open the Terminal window by going to Utilities -> Terminal
  3. Type csrutil disable; reboot and press Enter
  4. Let the computer boot normally (not Recovery Mode)
  5. Follow the original instructions (on the top of this page), except that the folder in step 2 is changed. It is now /System/Library/Displays/Contents/Resources/Overrides
  6. Don't stop here. It is important on re-enable the System Integrety Protection. Reboot into Recovery Mode, by holding ⌘ + R when the computer is booting
  7. Open the Terminal window by going to Utilities -> Terminal
  8. Type csrutil enable; reboot and press Enter
  9. Let the computer boot normally. Done
@antwake

This comment has been minimized.

Copy link

@antwake antwake commented Oct 28, 2016

for those who have no output when running the script (like @oliviergilloire ) be sure that the file (patch-edid.rb) isn't empty.
I had to download it manually and copy/paste it in /System/Library/Displays/Contents/Resources/Overrides
Worked with my 21:9 AOC Q2963PM

@mickeyklein

This comment has been minimized.

Copy link

@mickeyklein mickeyklein commented Dec 20, 2016

When I type in the script it asks for a password? anyone know what to do with that? I don't have a password on my mac

@joserocha3

This comment has been minimized.

Copy link

@joserocha3 joserocha3 commented Dec 24, 2016

@mickeyklein the password is your user account password, the one you type in when you turn on your mac

@MacMiniUser2017

This comment has been minimized.

Copy link

@MacMiniUser2017 MacMiniUser2017 commented Jan 19, 2017

I have a Mac mini (2011) with Sierra conected on a Philips TV. Because a get sometimes strange colors I try the solution on this webpage. But I think that I do something wrong because I get a error… I hope you can help me.

This is the error I get in the terminal:

patch-edid.rb:11:in match': invalid byte sequence in UTF-8 (ArgumentError) from patch-edid.rb:11:inmatch'
from patch-edid.rb:11:in `

'
I did the steps below. Only I remove the line "sudo curl -O https://gist.github.com/ejdyksen/8302862/raw/patch-edid.rb" because the script wash empty. So I replace it with the script in the download file.

1 Reboot into Recovery Mode, by holding ⌘ + R when the computer is booting
2 Open the Terminal window by going to Utilities -> Terminal
3 Type csrutil disable; reboot and press Enter
4 Let the computer boot normally (not Recovery Mode)
5 I open the terminal and type this:

cd /System/Library/Displays/Contents/Resources/Overrides

(I place patch-edid.rb in the map Overrides)

sudo ruby patch-edid.rb

6 Don't stop here. It is important on re-enable the System Integrety Protection. Reboot into Recovery Mode, by holding ⌘ + R when the computer is booting
7 Open the Terminal window by going to Utilities -> Terminal
8 Type csrutil enable; reboot and press Enter
9 Let the computer boot normally. Done

@juanignaciosl

This comment has been minimized.

Copy link

@juanignaciosl juanignaciosl commented Jan 20, 2017

@MacMiniUser2017 thank you very much, you saved me!

@juanignaciosl

This comment has been minimized.

Copy link

@juanignaciosl juanignaciosl commented Jan 28, 2017

FYI I just upgraded to Beta 4 and the external display stopped working, only a blue screen was disabled. I'm not sure whether it's related with the override or it was caused by a wrong installation. I'll do a full wipe (in a few days) and try again.

@cumanzor

This comment has been minimized.

Copy link

@cumanzor cumanzor commented Mar 29, 2017

Confirming this works on 10.12.4. Just make sure you are using the correct paths (/System/Library/Displays/Contents/Resources/Overrides) and that csrutil is disabled (and then renable it back)

@niewb

This comment has been minimized.

Copy link

@niewb niewb commented May 3, 2017

@ejdyksen how do I undo the patch/revert to how I had things before?

@natefinch

This comment has been minimized.

Copy link

@natefinch natefinch commented May 26, 2017

This fixed my problem (late 2016 Macbook Pro driving a Dell U3014 via Thunderbolt to HDMI). I expected my display to stop being listed as "NTSC" under the refresh rate, but it did not. I almost thought maybe it hadn't worked, except then I noticed the fonts looked a lot better, so I guess it's fine. Wanted to note that for anyone coming here.

@gevariya-ajit

This comment has been minimized.

Copy link

@gevariya-ajit gevariya-ajit commented Jun 18, 2017

Is this new title showing anywhere? I am not getting affected with this changes for new display LG 24MP88HV-S.

Display with forced RGB mode (EDID override)

@faywong

This comment has been minimized.

Copy link

@faywong faywong commented Sep 6, 2017

It doesn't work on Sierra.

faywongdeMBP-2:~ faywong$ sudo ruby ./patch-edid.rb
Password:
./patch-edid.rb:1: unknown regexp option - b
@niewb

This comment has been minimized.

Copy link

@niewb niewb commented Sep 12, 2017

How do I undo the patch? I think it made things worse. @ejdyksen

@GonzaloGM

This comment has been minimized.

Copy link

@GonzaloGM GonzaloGM commented Jan 6, 2018

Late, but might help: to revert it, disconnect your external display, then delete the folder from the Overrides folder (you'll need to disable SIP) and reconnect the display (I restarted after deleting it but not sure it's necessary).

@bennburke

This comment has been minimized.

Copy link

@bennburke bennburke commented Mar 31, 2018

Hello all, I'm running 10.13.2 on my mid 2011 MBA (13") and desperately trying to run a Fujitsu P24W-7 monitor.
I followed all the steps and all I get at the end of these steps is this:

patch-edid.rb:11:in <main>': undefined method []' for nil:NilClass (NoMethodError)

any ideas on what I could be doing wrong here?
many thanks!

@Bootquick

This comment has been minimized.

Copy link

@Bootquick Bootquick commented Apr 4, 2018

Hello all, Same problem as bennburke:
patch-edid.rb:11:in

': undefined method[]' for nil:NilClass (NoMethodError)
Any suggestion?
Many thanks for your support

@MrtnGrdnr

This comment has been minimized.

Copy link

@MrtnGrdnr MrtnGrdnr commented Apr 5, 2018

I have changed a lot of things & want to remove the patch, is there a command I can use to do this?
many thanks in advance

@kelvin22

This comment has been minimized.

Copy link

@kelvin22 kelvin22 commented Apr 30, 2018

@MacMiniUser2017 instructions was previously working on Sierra, but after upgrading to High Sierra 10.13.4 it has reset back to original resolutions, and repeating the instructions doesn't work.

@cron13

This comment has been minimized.

Copy link

@cron13 cron13 commented Jun 17, 2018

hi, it is possible to make script like this one, that enable 5.1 sound and 120hz/200hz mode on external tv that connected via hdmi?

@yarnball

This comment has been minimized.

Copy link

@yarnball yarnball commented Oct 15, 2018

Hi, on Mojava (10.14) there is no /Overrides folder inside of Displays.

Is it possible to work on 10.14? Cheers

@mvtorres

This comment has been minimized.

Copy link

@mvtorres mvtorres commented Oct 27, 2018

Hi, on Mojava (10.14) there is no /Overrides folder inside of Displays.

Is it possible to work on 10.14? Cheers

Its now in /System/Library/Displays/Contents/Resources/Overrides/

@yverbytskyi

This comment has been minimized.

Copy link

@yverbytskyi yverbytskyi commented Dec 25, 2018

Made alive my HP LP2475w, connecting to MBP2018
For High Sierra path is just the same as for Mojave - /System/Library/Displays/Contents/Resources/Overrides/
So, what i've done:

  1. @maurei Even with sudo, any write operations will not be permitted. To fix this, reboot in recovery mode (cmd+r during reboot), under utils, open up the terminal. Do csrutil disable. Reboot, and run the script in the relocated folder.
  2. @antwake for those who have no output when running the script (like @oliviergilloire ) be sure that the file (patch-edid.rb) isn't empty.
    I had to download it manually and copy/paste it in /System/Library/Displays/Contents/Resources/Overrides
  3. sudo ruby patch-edid.rb
  4. Reconnect monitor vs reboot
  5. It really worked) Thanks all
@ionut-movila

This comment has been minimized.

Copy link

@ionut-movila ionut-movila commented Jan 3, 2019

I can confirm this works really great.

Tested on a Hackintosh configuration with AMD RX-560 video card, running macOS 10.13.6 High Sierra.
My display is LG TV 4K 50UK6950.

After upgrading to 10.13.6 I was able to get 4k@60Hz and with this script also chroma 4:4:4 that is really great for text readability.

Chroma test here, last two lines: http://i.rtings.com/images/test-materials/2017/chroma-444.png

No need to look further for other solutions, like paid one SwitchResX that did NOT work for me.

To test refresh rate go here: https://www.testufo.com/framerates#count=3&background=stars&pps=3840

Even if the system report does not show 60Hz, using the link above I can confirm it does output 60Hz.

As for HDMI cable no need to use a special one, I think mine it's an old one with nothing special about HDMI 2.0 support.

But I was able to tell that 4k@60Hz with chroma 4:4:4 does work with this video card + TV display + cable because it did work first on Windows 10.

@haiqibian

This comment has been minimized.

Copy link

@haiqibian haiqibian commented Feb 28, 2019

I tried all the way above, but I only got the highest resolution 1920x1080. How to get higher resolution 2560x1440? I am using MacBook pro Mini Displayport to HDMI.

Thanks a lot

@polyh3dron

This comment has been minimized.

Copy link

@polyh3dron polyh3dron commented May 11, 2019

On a 2017 MacBook Pro running Mojave I’m getting an “Operation not permitted” error when running this script even after disabling csrutil, and giving disk access to terminal. This also just worked for me on another identical model MacBook Pro. Any idea what I can do? On the machine it worked on, I didn’t even need to give terminal full disk access, so I’m wondering if some other tweak I did to my settings somewhere along the way was what allowed me to run the script properly.

@dzhioev

This comment has been minimized.

Copy link

@dzhioev dzhioev commented Sep 9, 2019

I can't beleive this worked! Thank you all so much!
My setup: MacBook Pro (Retina, 13-inch, Early 2015), Mac OS Mojave 10.14.6, Samsung C34J791 display.
I used updated instruction from this comment.

@favorov

This comment has been minimized.

Copy link

@favorov favorov commented Sep 14, 2019

The solution with csrutil disable/enable from the recovery system worked om mojave. Thank you. I left my WiFi switched on when running the system with disabled system integrity check and the network refused to be connected when I return the system to normal life. https://www.ikream.com/2019/09/how-to-fix-macos-mojave-wifi-problems-cannot-connect-to-wifi-33661 (solution3) helped. Now, I think that it is better first to prepare the override folder somewhere at ~ by running the topic-start ruby script (it does not require even sudo) and then to copy it to its /System/Library/Displays/Overrides location using the recovery terminal.

@ersiner

This comment has been minimized.

Copy link

@ersiner ersiner commented Oct 9, 2019

The solution does not work for macOS Catalina because the system files now reside in read-only APFS volume. Any suggestions?

@anderskill

This comment has been minimized.

Copy link

@anderskill anderskill commented Oct 10, 2019

The solution does not work for macOS Catalina because the system files now reside in read-only APFS volume. Any suggestions?

Also struggling with this. 'csrutil disable' does not make it possible to delete or change files within System anymore.
Anyone who's gotten this to work in macOS Catalina?

@anderskill

This comment has been minimized.

Copy link

@anderskill anderskill commented Oct 10, 2019

https://wccftech.com/macos-catalina-runs-on-dedicated-read-only-system-volume/

Guessing this is the end.

If anyone finds a solution please let us know. This new update makes my external monitor useless for photo editing since it's in YPbPr instead of RGB.

@favorov

This comment has been minimized.

Copy link

@favorov favorov commented Oct 10, 2019

There is a clue at https://www.insanelymac.com/forum/topic/339035-pre-release-macos-catalina/?page=57
I did not try it myself yet.


On 9/7/2019 at 9:46 AM, SavageAUS said:
I just did a fresh install of Catalina DP? 19A546d but i cannot figure out how to add my custom resolution back in /System/Library/Displays/Contents/Resources/Overrides/ as macOS tells me it is a read only file system.

In Hackintool under Tools there is a button called "Disable Gatekeeper and mount the disk in read/write mode" which should allow you to write to this location.

In Hackintool under Tools there is a button called "Disable Gatekeeper and mount the disk in read/write mode" which should allow you to write to this location.

@23andreas

This comment has been minimized.

Copy link

@23andreas 23andreas commented Oct 16, 2019

@anderskill @ersiner To mount your volume in read/write mode use sudo mount -uw /

@anderskill

This comment has been minimized.

Copy link

@anderskill anderskill commented Oct 16, 2019

@23andreas

And this makes it possible to still use this fix in Catalina?

@23andreas

This comment has been minimized.

Copy link

@23andreas 23andreas commented Oct 16, 2019

@anderskill I got this problem after updating to Catalina, and it fixed the problem for me. I followed this article using this script. Before moving the folder I ran sudo mount -uw /

@anderskill

This comment has been minimized.

Copy link

@anderskill anderskill commented Oct 17, 2019

Yes I got it to work as well. I Mounted the -Data drive in Disk Utility and was then able to copy the DisplayVendor folder to the Overrides by using Terminal in Recovery Mode. Thanks for the help!

@skramstad

This comment has been minimized.

Copy link

@skramstad skramstad commented Nov 1, 2019

I think I got it working but did a different approach.

I lost my override with the latest Catalina upgrade, and got that read-only system warning. But I found out I can edit the file SwitchResX creates in the /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-XXXX with SIP disabled.

DisplayVendorID-XXXX is your connected display manufacture.

I'll try to explain the steps as best as I can:

  1. Install SwitchResX
  2. Disable SIP and reboot
  3. Open SwitchResX and create a custom custom resolution, I dont think it matter what your settings are since we are gonna overwrite it with the edid override.
  4. Open your old edid override file / or a new one in a text editor/sublime and copy all the text
  5. Open folder /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-XXXX (replace XXX with your manufacture) and you will see SwitchResX created a new file named something like DisplayYearManufacture-2015-DisplayWeek...
  6. Open that file in sublime/text editor, and replace the content with your edid override from step 4.
  7. Save and type your password
  8. Reboot and see if your display changed its name
  9. Remember to enable SIP when done

Hope this helps! Cheers

@Akram-Hassan

This comment has been minimized.

Copy link

@Akram-Hassan Akram-Hassan commented Nov 4, 2019

Worked on Catalina after mounting as explained by @23andreas . Thanks guys!

@jancantor

This comment has been minimized.

Copy link

@jancantor jancantor commented Nov 15, 2019

I just got an old monitor from a friend, DELL U3014t. Like everyone else, I tried connecting it to my MacBook Pro (mid 2012, CatalinaOS) using a Displayport to miniDP but no luck. I get this message on my monitor screen:

There is no signal coming from your computer.
Press any key on the keyboard blah blah blah...

I tried the following instructions above using the edid patch from here. However, after running the patch, I get this message:

No display data found! Are any external displays connected?

I have yet to try @skramstad's instructions but having trouble following, specifically Step 5. I'm not sure where to get my VendorID.

@cappetta

This comment has been minimized.

Copy link

@cappetta cappetta commented Nov 16, 2019

wondering how to completely reset your custom settings after attempting this script. seems I might have disabled my hdmi port - any suggestions?

@skramstad

This comment has been minimized.

Copy link

@skramstad skramstad commented Nov 24, 2019

@jancantor I use SwitchResX to get the VendorID. I open the SwitchResX app, select the display in the left sidebar and from there you are able to identify the VendorID. You may also export the display information to a txt file in SwitchResX. I believe you get the VendorID from the folder name the script generated.

@cappetta I had some trouble with my Samsung c34j791 thunderbolt 3 display and forcing RGB mode. I cant get 100Hz and stuck on 60Hz. So only way to fix that 60Hz problem was to delete the custom settings file. macOS dont have a default file for this display, however I'm not able to get the script working... but on this display 100Hz is a must for me.

@MauroSLOUPE

This comment has been minimized.

Copy link

@MauroSLOUPE MauroSLOUPE commented Jan 15, 2020

@anderskill @23andreas Could you help sorting this out? I've tried multiple times and I can't get it to work.

@23andreas

This comment has been minimized.

Copy link

@23andreas 23andreas commented Jan 15, 2020

@anderskill @23andreas Could you help sorting this out? I've tried multiple times and I can't get it to work.

Need more information. What steps have you tried? Are you able to generate profiles? Any errors?

@MauroSLOUPE

This comment has been minimized.

Copy link

@MauroSLOUPE MauroSLOUPE commented Jan 15, 2020

@anderskill @23andreas Could you help sorting this out? I've tried multiple times and I can't get it to work.

Need more information. What steps have you tried? Are you able to generate profiles? Any errors?

I've tried all the steps but When I try to manually copying the VendorID folder into System/Library/Displays/Contents/Resources/Overrides/ it doesn't let me

My monitor is connected via Thunderbolt 2 with an HDMI adapter

@23andreas

This comment has been minimized.

Copy link

@23andreas 23andreas commented Jan 15, 2020

@anderskill @23andreas Could you help sorting this out? I've tried multiple times and I can't get it to work.

Need more information. What steps have you tried? Are you able to generate profiles? Any errors?

I've tried all the steps but When I try to manually copying the VendorID folder into System/Library/Displays/Contents/Resources/Overrides/ it doesn't let me

disable system integrity protection

open terminal and run this command to mount in write mode.
sudo mount -uw /

Copy folder

Don't forget to enable system integrity protection again when you're done. The disk is mounted in read-only mode automatically next time you reboot if I remember correct.

@MauroSLOUPE

This comment has been minimized.

Copy link

@MauroSLOUPE MauroSLOUPE commented Jan 15, 2020

@anderskill @23andreas Could you help sorting this out? I've tried multiple times and I can't get it to work.

Need more information. What steps have you tried? Are you able to generate profiles? Any errors?

I've tried all the steps but When I try to manually copying the VendorID folder into System/Library/Displays/Contents/Resources/Overrides/ it doesn't let me

disable system integrity protection

open terminal and run this command to mount in write mode.
sudo mount -uw /

Copy folder

Don't forget to enable system integrity protection again when you're done. The disk is mounted in read-only mode automatically next time you reboot if I remember correct.

I had the SIP disabled. do I need to run the "sudo mount -uw /" from recovery mode and then reboot the reboot the system and then copy the folder? or is there a way to do everything from via terminal from the recovery mode?

@23andreas

This comment has been minimized.

Copy link

@23andreas 23andreas commented Jan 15, 2020

I had the SIP disabled. do I need to run the "sudo mount -uw /" from recovery mode and then reboot the reboot the system and then copy the folder? or is there a way to do everything from via terminal from the recovery mode?

You don't need to run the mount command in recovery mode. If I remember correctly the volume is mounted in read-only mode during startup meaning if you reboot you'll lose write permission.

Disable SIP -> restart and boot up like normal -> open terminal -> sudo mount -uw /-> move folder in finder -> re-enable SIP

@MauroSLOUPE

This comment has been minimized.

Copy link

@MauroSLOUPE MauroSLOUPE commented Jan 15, 2020

I've tried an it doesn't let me copy it neither drag and drop it. Is there a way I can get you on Skype or similar?

@MauroSLOUPE

This comment has been minimized.

Copy link

@MauroSLOUPE MauroSLOUPE commented Jan 15, 2020

I had the SIP disabled. do I need to run the "sudo mount -uw /" from recovery mode and then reboot the reboot the system and then copy the folder? or is there a way to do everything from via terminal from the recovery mode?

You don't need to run the mount command in recovery mode. If I remember correctly the volume is mounted in read-only mode during startup meaning if you reboot you'll lose write permission.

Disable SIP -> restart and boot up like normal -> open terminal -> sudo mount -uw /-> move folder in finder -> re-enable SIP

I've also tried this but no luck.

https://www.reddit.com/r/MacOS/comments/dkowz1/instructions_for_forcing_rgb_mode_in_catalina/?utm_source=share&utm_medium=ios_app&utm_name=iossmf

It seems that the read only doesn't let me copy the folder in the system

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Jan 15, 2020

use sudo cp command in Terminal.app to copy file or folder. Or use sudo mv to move a folder from your home directory to the system directory.

@MauroSLOUPE

This comment has been minimized.

Copy link

@MauroSLOUPE MauroSLOUPE commented Jan 15, 2020

use sudo cp command in Terminal.app to copy file or folder. Or use sudo mv to move a folder from your home directory to the system directory.

Could you post the full command? thank you

@cappetta

This comment has been minimized.

Copy link

@cappetta cappetta commented Jan 24, 2020

whats odd for me is I have 2 identical monitors & 2 identical MBP laptops... 1 laptop has an issue with 1 monitor - resolution is 19xx*1200; the other monitor works perfectly @ 2k resolution. The other laptop works fine on both.

Monitor 1 (bad) -> system_profiler SPDisplaysDataType command indicates

Chipset Model: NVIDIA GeForce GT 750M

  Type: GPU
  Bus: PCIe
  PCIe Lane Width: x8
  VRAM (Total): 2 GB
  Vendor: NVIDIA (0x10de)
  Device ID: 0x0fe9
  Revision ID: 0x00a2
  ROM Revision: 3776
  Automatic Graphics Switching: Supported
  gMux Version: 4.0.8 [3.2.8]
  Metal: Supported, feature set macOS GPUFamily1 v4
  Displays:
    HDMI:
      Resolution: 1920 x 1200 (WUXGA - Widescreen Ultra eXtended Graphics Array)
      UI Looks like: 1920 x 1200 @ 60 Hz
      Framebuffer Depth: 24-Bit Color (ARGB8888)
      Main Display: Yes
      Mirror: Off
      Online: Yes
      Rotation: Supported
      Automatically Adjust Brightness: No

Monitor 2 (same brand/model) indicates -- compare / contrast the resolution value...

NVIDIA GeForce GT 750M:

  Chipset Model: NVIDIA GeForce GT 750M
  Type: GPU
  Bus: PCIe
  PCIe Lane Width: x8
  VRAM (Total): 2 GB
  Vendor: NVIDIA (0x10de)
  Device ID: 0x0fe9
  Revision ID: 0x00a2
  ROM Revision: 3776
  Automatic Graphics Switching: Supported
  gMux Version: 4.0.8 [3.2.8]
  Metal: Supported, feature set macOS GPUFamily1 v4
  Displays:
    HDMI:
      Resolution: 2560 x 1440 (QHD/WQHD - Wide Quad High Definition)
      UI Looks like: 2560 x 1440 @ 60 Hz
      Framebuffer Depth: 24-Bit Color (ARGB8888)
      Main Display: Yes
      Mirror: Off
      Online: Yes
      Rotation: Supported
      Automatically Adjust Brightness: No

Cant figure out how to reset the setting for the "bad" monitor - tried the RGB mode multiple times, last time I tried the script, I had to restore to a previous state... wishing I could just reset all settings and start fresh. any suggestions?

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Jan 24, 2020

Swap the cables?
Swap the displays?
Switch the hard drives?

@douira

This comment has been minimized.

Copy link

@douira douira commented Jan 24, 2020

In case anyone is running into problems on Catalina with read-only file system: You need to mount the system folder writeable with sudo mount -uw /

@denicomc

This comment has been minimized.

Copy link

@denicomc denicomc commented Apr 12, 2020

Is there any easier way to fix this? Seems a bit clunky and I am suprised more people don't run into this issue.

@ramilani12

This comment has been minimized.

Copy link

@ramilani12 ramilani12 commented Apr 14, 2020

The people are using Mac OS Catalina and who ran the script. Can you share your desktops ? I have a Mac book mid 2012 retina 15' and an external monitor Dell P2219h I am afraid to run this script

@diasfd

This comment has been minimized.

Copy link

@diasfd diasfd commented Apr 20, 2020

i have a macbook air inch 2019, running catalina 10.15.4, still looking for a solution, my external monitor is an AOC 24P1U.

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Apr 21, 2020

.15.4, still looking for a solution, my external monitor is an AOC 24P1U.

Solution for what? The AOC 24P1U is only 1080p so it probably doesn't have the problem that this script is made to solve.

@jmouka

This comment has been minimized.

Copy link

@jmouka jmouka commented Apr 23, 2020

Cool, still works in Catalina (10.15.4).

@lauti7

This comment has been minimized.

Copy link

@lauti7 lauti7 commented May 5, 2020

@23andreas could you help me? Please. I am following your steps but it seems sudo mount -uw / is not working.

@douira

This comment has been minimized.

Copy link

@douira douira commented May 5, 2020

Usually you need to boot with SIP disabled to get sudo mount -uw / to work

@ejdyksen

This comment has been minimized.

Copy link
Owner Author

@ejdyksen ejdyksen commented Jun 5, 2020

Hi folks. Author of the gist here.

I have long since stopped using the monitor that caused me problems, so I kind of forgot about this. And sometime years ago I muted this thread, so I haven't seen notifications. I was actually helping a friend diagnose a monitor issue and ended up back here through Google, funny enough. I'm surprised to see all this traffic.

For folks who are more up to date on this issue: is there something I can put at the top of the page here to be more helpful to people? Maybe save people some time from having to read the whole thread? This is clearly still a problem, and this page still shows up on Google search results...

Thanks!

@playaz87

This comment has been minimized.

Copy link

@playaz87 playaz87 commented Jun 18, 2020

I have a Mac mini (2011) with Sierra conected on a Philips TV. Because a get sometimes strange colors I try the solution on this webpage. But I think that I do something wrong because I get a error… I hope you can help me.

This is the error I get in the terminal:

patch-edid.rb:11:in match': invalid byte sequence in UTF-8 (ArgumentError) from patch-edid.rb:11:inmatch'
from patch-edid.rb:11:in `

'
I did the steps below. Only I remove the line "sudo curl -O https://gist.github.com/ejdyksen/8302862/raw/patch-edid.rb" because the script wash empty. So I replace it with the script in the download file.

1 Reboot into Recovery Mode, by holding ⌘ + R when the computer is booting
2 Open the Terminal window by going to Utilities -> Terminal
3 Type csrutil disable; reboot and press Enter
4 Let the computer boot normally (not Recovery Mode)
5 I open the terminal and type this:

cd /System/Library/Displays/Contents/Resources/Overrides

(I place patch-edid.rb in the map Overrides)

sudo ruby patch-edid.rb

6 Don't stop here. It is important on re-enable the System Integrety Protection. Reboot into Recovery Mode, by holding ⌘ + R when the computer is booting
7 Open the Terminal window by going to Utilities -> Terminal
8 Type csrutil enable; reboot and press Enter
9 Let the computer boot normally. Done

If I hadn't of read this I would probably have never noticed that using curl to get the script resulted in an empty file. Thank you!

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Jun 18, 2020

If you try the url https://gist.github.com/ejdyksen/8302862/raw/patch-edid.rb in Safari, it is redirected to https://gist.githubusercontent.com/ejdyksen/8302862/raw/patch-edid.rb

So if you try the new URL in your command, then you might get farther.

@stackrainbow

This comment has been minimized.

Copy link

@stackrainbow stackrainbow commented Sep 19, 2020

Just a note (and this is especially important with Big Sur as Big Sur will ignore system partition changes without much extra effort), there is no need to override the macOS security model by placing this in /System.
You also do not need to reboot into recovery.

Instead, run
sudo mkdir -p /Library/Displays/Contents/Resources/Overrides
This will create the structure in the Library folder.
Then copy the generated DisplayVendorID-XXXX into this new folder structure using Finder. (Use Go > Go to folder and the folder we created above).
Reboot and you're done. No need to usurp the macOS security model.

@ejdyksen

This comment has been minimized.

Copy link
Owner Author

@ejdyksen ejdyksen commented Sep 19, 2020

@stackrainbow Thank you so much!! 😀 The requirement to disable SIP has always bothered me, but I haven't used the script in many many years, so I haven't looked too closely. I've mostly updated the instructions as commenters have pointed out bugs.

I'll take a look at this tonight and maybe update the script to make the directory/move the file itself, which would be even simpler.

@3llen

This comment has been minimized.

Copy link

@3llen 3llen commented Sep 22, 2020

My csrutil disable command was successfully executed in the recovery mode, but after rebooting my machine for the next step (copy the file over to "/System/Library/Displays/Contents/Resources/Overrides"), I got the error Read-only file system.
I have macOS Cataline 10.15.6
Anyone has the same problem?

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Sep 22, 2020

You can mount the filesystem with write permission with sudo mount -uw /
but you should use the /Library/Displays/Contents/Resources/Overrides folder instead.

@3llen

This comment has been minimized.

Copy link

@3llen 3llen commented Sep 23, 2020

You can mount the filesystem with write permission with sudo mount -uw /
but you should use the /Library/Displays/Contents/Resources/Overrides folder instead.

Thanks! I will give a try!

@URBANsUNITED

This comment has been minimized.

Copy link

@URBANsUNITED URBANsUNITED commented Oct 2, 2020

Hi!

Does this script work with internal Laptops models too? If not, is there anywhere/anyhow a solution?
Thanks a lot!!!

Cheers

URBANsUNITED

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Oct 2, 2020

Does this script work with internal Laptops models too? If not, is there anywhere/anyhow a solution?
Thanks a lot!!!

This script is for Macs with HDMI connected displays.
What do you need a solution for?

@URBANsUNITED

This comment has been minimized.

Copy link

@URBANsUNITED URBANsUNITED commented Oct 4, 2020

Does this script work with internal Laptops models too? If not, is there anywhere/anyhow a solution?
Thanks a lot!!!

This script is for Macs with HDMI connected displays.
What do you need a solution for?

Hi!
I am working on a Hackintosh laptop, but I struggle with the internal display and need to adjust the edid.
Thanks

URBANsUNITED

@kselby

This comment has been minimized.

Copy link

@kselby kselby commented Oct 10, 2020

@stackrainbow I am running Catalina and don’t have access to recovery mode on my laptop. I attempted your fix but it did not seem to work, is there anything similar I could do for Catalina? Anyone else able to fix this without going to recovery mode?

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Oct 10, 2020

@stackrainbow I am running Catalina and don’t have access to recovery mode on my laptop. I attempted your fix but it did not seem to work, is there anything similar I could do for Catalina? Anyone else able to fix this without going to recovery mode?

For Catalina, the override goes in the /Library... instead of /System/Library... so Recovery is not required.

@tiotdev

This comment has been minimized.

Copy link

@tiotdev tiotdev commented Nov 13, 2020

For Big Sur, the process is a bit different, since step 2 doesn't work.
The solution is creating the folder /Library/Displays/Contents/Resources/Overrides and using that instead of /System/Library/Displays/Contents/Resources/Overrides in step 4.

@matteing

This comment has been minimized.

Copy link

@matteing matteing commented Nov 13, 2020

@tiotdev so it now allows display overrides without disabling SIP?

@minhanhhere

This comment has been minimized.

Copy link

@minhanhhere minhanhhere commented Nov 15, 2020

@matteing

@tiotdev so it now allows display overrides without disabling SIP?

For Big Sur, I have tried @tiotdev method and it works. Just move the generated directory (in my case DisplayVendorID-10ac) to /Library/Displays/Contents/Resources/Overrides (notice without /System)

@jwallyr

This comment has been minimized.

Copy link

@jwallyr jwallyr commented Nov 16, 2020

@tiotdev so it now allows display overrides without disabling SIP?

Just to confirm, I made sure that SIP was enabled, and I was able (with administrator authentication, of course) to create the indicated folders per instructions by @tiotdev, downloaded the script (adaugherity's version) directly to the folder, ran it without issue, and an unplug -> replug later, I have my crisp fonts back.

Thanks a ton, guys!

@AdelDima

This comment has been minimized.

Copy link

@AdelDima AdelDima commented Nov 16, 2020

Just a note (and this is especially important with Big Sur as Big Sur will ignore system partition changes without much extra effort), there is no need to override the macOS security model by placing this in /System.
You also do not need to reboot into recovery.

Instead, run
sudo mkdir -p /Library/Displays/Contents/Resources/Overrides
This will create the structure in the Library folder.
Then copy the generated DisplayVendorID-XXXX into this new folder structure using Finder. (Use Go > Go to folder and the folder we created above).
Reboot and you're done. No need to usurp the macOS security model.

Thank You @stackrainbow

@ipoppo

This comment has been minimized.

Copy link

@ipoppo ipoppo commented Nov 16, 2020

For Big Sur, the process is a bit different, since step 2 doesn't work.
The solution is creating the folder /Library/Displays/Contents/Resources/Overrides and using that instead of /System/Library/Displays/Contents/Resources/Overrides in step 4.

Great skip! Just replug to finish the steps in Big Sur

@ejdyksen

This comment has been minimized.

Copy link
Owner Author

@ejdyksen ejdyksen commented Nov 16, 2020

Even though I don't have a monitor to test this with anymore, updated the instructions for Catalina/Big Sur to reflect the fact that the plist doesn't need to be placed in /System/Library anymore.

@Checkman-spielt

This comment has been minimized.

Copy link

@Checkman-spielt Checkman-spielt commented Nov 19, 2020

Your script gave me a lot of helpful information however it didn't fix my problem. I have a 4k monitor and macOS is weird about available resolutions. This is what I've tried so far: https://www.reddit.com/r/applehelp/comments/jx9bdq/macos_reports_wrong_max_resolution_and_actual/

Now I found your script and as a result the information reported actually changed but was also wrong. After that I removed the DisplayVendorID folder from /System/Library/... via recovery as I thought it would reset the information about my monitor. This didn't work and for some reason the folder doesn't show up anymore (made a backup). The weird thing is that the iMac has the exact same DisplayVendorID folder and works flawlessly.

Long story short: Are the resolutions a monitor supports also saved in the DisplayVendorID/DisplayProductID?

@619

This comment has been minimized.

Copy link

@619 619 commented Nov 22, 2020

I get "No display data found! Are any external displays connected?" when I try to run this on my 2020 M1 Mac mini. Looks like that array is empty when I print it out (edid)�����

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Nov 23, 2020

I get "No display data found! Are any external displays connected?" when I try to run this on my 2020 M1 Mac mini. Looks like that array is empty when I print it out (edid)�����

That error is from the script at https://gist.github.com/adaugherity/7435890

M1 Macs use iPhone graphics instead of Mac graphics. It's totally different. The EDID cannot be found in the ioreg on M1 Macs.
Please post a file attachment of the following (compress the files as a zip using the Finder).

ioreg -fliw0 > ioreg_M1.txt
ioreg -fliw0 -p IODeviceTree > ioreg_M1_devicetree.txt
@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Nov 23, 2020

Are the resolutions a monitor supports also saved in the DisplayVendorID/DisplayProductID?

They may be saved in
/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-4c2d/ProductID-####
/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-4c2d/DisplayYearManufacture-####-DisplayWeekManufacture-##
/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-4c2d/ProductID-####
/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-4c2d/DisplayYearManufacture-####-DisplayWeekManufacture-##

I think /System/Volumes/Data/Library is the same as /Library but you can try looking there too.

@Checkman-spielt

This comment has been minimized.

Copy link

@Checkman-spielt Checkman-spielt commented Nov 23, 2020

Ok, thank you!

@opentermt

This comment has been minimized.

Copy link

@opentermt opentermt commented Nov 23, 2020

I get "No display data found! Are any external displays connected?" when I try to run this on my 2020 M1 Mac mini. Looks like that array is empty when I print it out (edid)�����

That error is from the script at https://gist.github.com/adaugherity/7435890

M1 Macs use iPhone graphics instead of Mac graphics. It's totally different. The EDID cannot be found in the ioreg on M1 Macs.
Please post a file attachment of the following (compress the files as a zip using the Finder).

ioreg -fliw0 > ioreg_M1.txt
ioreg -fliw0 -p IODeviceTree > ioreg_M1_devicetree.txt

I appreciate that you replied to another user, but I have a similar problem in that the script fails for an M1 Macbook Air. It doesn't appear that Github allows .zip files - how would I go about generating the override files from the output of the above?

@abe2np

This comment has been minimized.

Copy link

@abe2np abe2np commented Nov 24, 2020

I get "No display data found! Are any external displays connected?" when I try to run this on my 2020 M1 Mac mini. Looks like that array is empty when I print it out (edid)�����

That error is from the script at https://gist.github.com/adaugherity/7435890

M1 Macs use iPhone graphics instead of Mac graphics. It's totally different. The EDID cannot be found in the ioreg on M1 Macs.
Please post a file attachment of the following (compress the files as a zip using the Finder).

ioreg -fliw0 > ioreg_M1.txt
ioreg -fliw0 -p IODeviceTree > ioreg_M1_devicetree.txt

I have a M1 Mac Mini, Here is what you requested: https://filebin.net/wdtdxhqb9id3fvxr

@opentermt

This comment has been minimized.

Copy link

@opentermt opentermt commented Nov 24, 2020

I get "No display data found! Are any external displays connected?" when I try to run this on my 2020 M1 Mac mini. Looks like that array is empty when I print it out (edid)�����

That error is from the script at https://gist.github.com/adaugherity/7435890
M1 Macs use iPhone graphics instead of Mac graphics. It's totally different. The EDID cannot be found in the ioreg on M1 Macs.
Please post a file attachment of the following (compress the files as a zip using the Finder).

ioreg -fliw0 > ioreg_M1.txt
ioreg -fliw0 -p IODeviceTree > ioreg_M1_devicetree.txt

I appreciate that you replied to another user, but I have a similar problem in that the script fails for an M1 Macbook Air. It doesn't appear that Github allows .zip files - how would I go about generating the override files from the output of the above?

And likewise for my M1 Macbook Air: https://filebin.net/abonx1q4w0auo07v

Is there any way to modify the script in order to have a more "permanent" solution for those with M1 Macs?

@AlessandroC85

This comment has been minimized.

Copy link

@AlessandroC85 AlessandroC85 commented Nov 24, 2020

I have tried the script installing it into /Library/Displays/Contents/Resources/Overrides.

Now my Dell P2421 is forced as RGB (I have seen it in the HUD options), but the text is still blurry.
Any suggests?

Thanks

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Nov 25, 2020

I appreciate that you replied to another user, but I have a similar problem in that the script fails for an M1 Macbook Air. It doesn't appear that Github allows .zip files - how would I go about generating the override files from the output of the above?

From the two examples given, it appears that ioreg of the IOServices and IODeviceTree planes does not contain the EDID for a display. Therefore, you'll need to use another method to get the EDID, and modify the script to use that EDID as a base to create the override. Or you can create the override on an Intel Mac and copy it over to the M1 Mac manually.

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Nov 25, 2020

Now my Dell P2421 is forced as RGB (I have seen it in the HUD options), but the text is still blurry.
Any suggests?

What resolution is your display?
What resolution does the HUD say is being used as the input?
What resolution does macOS say you are using?

Your display is 1920 x 1200. It's not going to do HiDPI unless you like 960x600 so I'm not sure what you are expecting.

@huulbaek

This comment has been minimized.

Copy link

@huulbaek huulbaek commented Nov 25, 2020

Therefore, you'll need to use another method to get the EDID, and modify the script to use that EDID as a base to create the override. Or you can create the override on an Intel Mac and copy it over to the M1 Mac manually.

I have done exactly this but the output is still not RGB. Although, the display is somewhat improved nonetheless on my Dell U3415W.

@opentermt

This comment has been minimized.

Copy link

@opentermt opentermt commented Nov 25, 2020

I appreciate that you replied to another user, but I have a similar problem in that the script fails for an M1 Macbook Air. It doesn't appear that Github allows .zip files - how would I go about generating the override files from the output of the above?

From the two examples given, it appears that ioreg of the IOServices and IODeviceTree planes does not contain the EDID for a display. Therefore, you'll need to use another method to get the EDID, and modify the script to use that EDID as a base to create the override. Or you can create the override on an Intel Mac and copy it over to the M1 Mac manually.

I have some bad news on that front - I've tried method 2, for reference my monitor is a Dell U2719D:

  1. When connecting a 2019 Macbook Pro 16", the override works as expected and both OS and the Dell report RGB. Text is no longer blurry.
  2. When using the same file for the M1 Macbook Air, the OS reports that the override file is being used, but the monitor still reports YCbCr.
  3. When connecting both to an older Dell U2412HM, RGB is correctly applied.

Not sure what the cause of 2) could be, but looks like bad news in terms of getting EDID overrides to work on M1 machines. Any ideas?

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Nov 25, 2020

  1. When using the same file for the M1 Macbook Air, the OS reports that the override file is being used, but the monitor still reports YCbCr.

How does the OS report that the override file is being used? Did you change the product name in the override file so that you can tell the change is being read by the OS when it shows that name?

@opentermt

This comment has been minimized.

Copy link

@opentermt opentermt commented Nov 25, 2020

  1. When using the same file for the M1 Macbook Air, the OS reports that the override file is being used, but the monitor still reports YCbCr.

How does the OS report that the override file is being used? Did you change the product name in the override file so that you can tell the change is being read by the OS when it shows that name?

2

If I change the "Display with forced RGB mode (EDID override)" string to anything else, it correctly reflects the change. It's also correctly passing the display serial number. For whatever reason it seems the override isn't actually forcing RGB, I have no idea why.

On the Intel Macbook, it turns out that the override isn't actually required and RGB is used regardless. On a side note, the M1 chip is very fast at switching displays (for example when you close the lid) compared to the Intel model.

@AlessandroC85

This comment has been minimized.

Copy link

@AlessandroC85 AlessandroC85 commented Nov 25, 2020

Now my Dell P2421 is forced as RGB (I have seen it in the HUD options), but the text is still blurry.
Any suggests?

What resolution is your display?
What resolution does the HUD say is being used as the input?
What resolution does macOS say you are using?

Your display is 1920 x 1200. It's not going to do HiDPI unless you like 960x600 so I'm not sure what you are expecting.

The display has resolution 1920x1200, it's a WUXGA.
With VGA cable connected to an old Windows desktop PC the resolution is perfect with no distorsions.
But with the MacBook Pro with HDMI cable I see a blurry text.
I suspect that the signal received by the monitor it's not a regular 1920x1200 as my Mac says, but or in the connector (original Apple) or maybe in the HDMI cable the signal is corrupted and forced to 1920x1080, but the monitor think that it's 1920x1200 and extend the visual, obtaining a poor and wrong visualizzation.

It's a possibile scenario?
I'm looking for an HDMI cable that officially supports 1920x1200 resolution but it's not so easy, almost all HDMI cables seems to have 1920x1080 maximum resolution...

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Nov 26, 2020

It's a possibile scenario?

Maybe.

I'm looking for an HDMI cable that officially supports 1920x1200 resolution but it's not so easy, almost all HDMI cables seems to have 1920x1080 maximum resolution...

There is no such thing as an HDMi cable that cannot do 1920x1200. Any HDMI cable should be sufficient.
What kind of Mac do you have?
If Intel, then attach AGDCDiagnose output.
If M1, then attach ioreg output.
The output should show what resolution is being used (except maybe if you have an iGPU only MacBook Pro).

@AlessandroC85

This comment has been minimized.

Copy link

@AlessandroC85 AlessandroC85 commented Nov 26, 2020

There is no such thing as an HDMi cable that cannot do 1920x1200. Any HDMI cable should be sufficient.
What kind of Mac do you have?
If Intel, then attach AGDCDiagnose output.
If M1, then attach ioreg output.
The output should show what resolution is being used (except maybe if you have an iGPU only MacBook Pro).

Well, if it's not by the cable fault, maybe it's by the adapter fault.
The Mac is a MacBook Pro 2020 13", I'm using it with the official Apple HDMI adapter with an Amazon Basics HDMI 2.0 cable.
But the result is poor, as reported here:
https://support.apple.com/en-us/HT201177#2

It says:
If you use a monitor or an HDTV connected with an HDMI cable, you might see a difference in video quality if your display is set to television mode. Check your display for a "monitor mode" setting to get the best video quality.

The display is not set in television mode, but for some reasons the quality is not good with HDMI.
So, I have only 3 alternatives:

  1. connect with DVI
  2. connect with DisplayPort
  3. return back the Monitor and choosing for a 1920x1080...
@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Nov 26, 2020

Well, if it's not by the cable fault, maybe it's by the adapter fault.

It would be really hard for an adapter to fail at 1920x1200 since it is a very low resolution.

The Mac is a MacBook Pro 2020 13", I'm using it with the official Apple HDMI adapter with an Amazon Basics HDMI 2.0 cable.

Which MacBook Pro (13-inch, 2020)? Is it the Intel two Thunderbolt or Intel four Thunderbolt or Apple M1?
Which Apple HDMI adapter?

The output from the AGDCDiagnose command (for Intel Mac) or ioreg (for M1 Mac) will show the connection type or what resolution its using.

@sulla123

This comment has been minimized.

Copy link

@sulla123 sulla123 commented Nov 27, 2020

Hi guys, recently bought a LG 35WN75C (35" ultrawide, 21:9, 3440x1440), and I have an MBP 16" running the latest big sur.

Now I tried the above but somehow something went wrong and since then my USB-C connection from the monitor is not working (it previously displayed and charged the mbp). Now nothing - although the USB-C ports on mbp work (they charge and handle dongles just fine).
I did a clean install of big sur - but no dice. I also tried different cables. Its as if I killed the USB-C port on the LG. Any ideas?

I tried the above again with and connected an HDMI -worked fine, except the forced RGB thought my 21:9 monitor was a 16:9 - so it looked pretty silly - any ideas with this one? Thanks a lot.

@IrmaNez

This comment has been minimized.

Copy link

@IrmaNez IrmaNez commented Nov 27, 2020

I appreciate that you replied to another user, but I have a similar problem in that the script fails for an M1 Macbook Air. It doesn't appear that Github allows .zip files - how would I go about generating the override files from the output of the above?

From the two examples given, it appears that ioreg of the IOServices and IODeviceTree planes does not contain the EDID for a display. Therefore, you'll need to use another method to get the EDID, and modify the script to use that EDID as a base to create the override. Or you can create the override on an Intel Mac and copy it over to the M1 Mac manually.

Is there anyone that can modify this scripts so that it works with MacMini M1 2020?

@jslauren

This comment has been minimized.

Copy link

@jslauren jslauren commented Nov 28, 2020

It's works fine.
Thanks :)

@lucatoli

This comment has been minimized.

Copy link

@lucatoli lucatoli commented Nov 28, 2020

I appreciate that you replied to another user, but I have a similar problem in that the script fails for an M1 Macbook Air. It doesn't appear that Github allows .zip files - how would I go about generating the override files from the output of the above?

From the two examples given, it appears that ioreg of the IOServices and IODeviceTree planes does not contain the EDID for a display. Therefore, you'll need to use another method to get the EDID, and modify the script to use that EDID as a base to create the override. Or you can create the override on an Intel Mac and copy it over to the M1 Mac manually.

Is there anyone that can modify this scripts so that it works with MacMini M1 2020?

i'm try to run patch-edid.rb but when i run in terminal the patch i see this error:

Traceback (most recent call last):
patch-edid.rb:11:in

': undefined method []' for nil:NilClass (NoMethodError)

Apple macmini M1 with LG 27EA83

on all intel based macs i nevver see problems and all run prefectly

@sapp3sson

This comment has been minimized.

Copy link

@sapp3sson sapp3sson commented Nov 28, 2020

i'm try to run patch-edid.rb but when i run in terminal the patch i see this error:

Traceback (most recent call last):
patch-edid.rb:11:in

': undefined method []' for nil:NilClass (NoMethodError)
Apple macmini M1 with LG 27EA83

on all intel based macs i nevver see problems and all run prefectly

Same here on a MBA M1 with Lenovo Legion Y27q-20.

@AStroh-edits

This comment has been minimized.

Copy link

@AStroh-edits AStroh-edits commented Nov 30, 2020

I did everything (free) possible I could find online.
This trick, RDM, Resxtreme, some edid override/overwrite from another GitHub, xrandr, etc.
Nothing worked to force refresh rates that I know my monitor supports but in MacOS it only allowed 60hz.

I swapped cables with my two external monitors and all the stars aligned. HDMI vs Display port.
RDM allowed me to select more refresh rates / resolutions. I’m probably still missing a few more settings but I’m tired of it and the 60hz hum is gone.
https://www.tonymacx86.com/threads/adding-using-hidpi-custom-resolutions.133254/
https://medium.com/comsystoreply/force-hidpi-resolutions-for-dell-u2515h-monitor-5304e5506214

@yeluacam

This comment has been minimized.

Copy link

@yeluacam yeluacam commented Dec 1, 2020

Is there anyone that can modify this scripts so that it works with MacMini M1 2020?

i'm try to run patch-edid.rb but when i run in terminal the patch i see this error:

Traceback (most recent call last):
patch-edid.rb:11:in

': undefined method []' for nil:NilClass (NoMethodError)
Apple macmini M1 with LG 27EA83

on all intel based macs i nevver see problems and all run prefectly

Same output here applying the patch in Terminal on M1 MacMini with 11.0.1.
I remembered this patch for my Dell U2913WM worked in the past, so I hope there is a tweak or workaround to get it to work on the new Macs. I connect via mini-DP output from CalDigit Thunderbolt Station 2.

EDIT - Dec 2, 2020

I was able to get the Dell to work properly using the HDMI out of the CalDigit dock, with a second display using the main HDMI out from the M1 MacMini. Only the mini-DP out from the CalDigit is affected (it passes the signal but with the old aliasing problems). HDMI by contrast looks pretty clean.

@crysllewis

This comment has been minimized.

Copy link

@crysllewis crysllewis commented Dec 15, 2020

OMG thank you so much for posting such great instructions...I was struggling with other websites concerning this issue! You saved me from tossing back a very expensive monitor LOL.

@aednichols

This comment has been minimized.

Copy link

@aednichols aednichols commented Dec 19, 2020

Or you can create the override on an Intel Mac and copy it over to the M1 Mac manually

I tried this and the profile shows as active but does not activate RGB

Screen Shot 2020-12-19 at 2 12 35 PM

@aednichols

This comment has been minimized.

Copy link

@aednichols aednichols commented Dec 19, 2020

Filed FB8946046 through Feedback Assistant. I encourage anyone affected to also file, referencing this number.

Make sure your problematic display is connected at the time of writing the feedback so that it is present in the system profile sent to Apple.

@cfenollosa

This comment has been minimized.

Copy link

@cfenollosa cfenollosa commented Dec 28, 2020

Filed FB8946046 through Feedback Assistant. I encourage anyone affected to also file, referencing this number.

Make sure your problematic display is connected at the time of writing the feedback so that it is present in the system profile sent to Apple.

I also reported a Feedback: FB8955006

And I tried to generate the override files on my old mac and copying them to the new mac (m1 macbook air) and the results are the same as @aednichols: the monitor is recognized as "forced RGB" but the image quality does not change, it stays the same blurry mess.

@anshibanov

This comment has been minimized.

Copy link

@anshibanov anshibanov commented Dec 29, 2020

some issue on mac AIR M1 No display data found! Are any external displays connected? any chance to force RGB on M1 ?

@hdtvspace

This comment has been minimized.

Copy link

@hdtvspace hdtvspace commented Dec 29, 2020

ioreg -lw0 | grep -i "DisplayAttributes"

curl -L https://gist.github.com/joevt/0c75b42171b3fb1a5248b4e2bee8e4d0/raw -o ~/Downloads/ioreg.pl

ioreg -filrw0 -k "display-timing-info" > ioreg_M1.txt

cat ioreg_M1.txt | perl -0777 ~/Downloads/ioreg.pl

@anshibanov

This comment has been minimized.

Copy link

@anshibanov anshibanov commented Dec 29, 2020

@hdtvspace what doing this script?

@owl-king

This comment has been minimized.

Copy link

@owl-king owl-king commented Dec 29, 2020

I had the same problem with M1 Pro 13 and my 34inch montior from HKC.
I ran the script and got the same error:
undefined method []' for nil:NilClass (NoMethodError)
It seems like ioreg -l -w0 -d0 -r -c AppleDisplay returns nothing on M1.
Any suggestion on this?

@aednichols

This comment has been minimized.

Copy link

@aednichols aednichols commented Dec 29, 2020

Any suggestion on this?

@owl-king:

Filed FB8946046 through Feedback Assistant. I encourage anyone affected to also file, referencing this number.

Make sure your problematic display is connected at the time of writing the feedback so that it is present in the system profile sent to Apple.

@hdtvspace

This comment has been minimized.

Copy link

@hdtvspace hdtvspace commented Dec 31, 2020

@hdtvspace what doing this script?

Shows the timings known by the Mac M1. --> https://gist.github.com/joevt/0c75b42171b3fb1a5248b4e2bee8e4d0

@whoaizme

This comment has been minimized.

Copy link

@whoaizme whoaizme commented Dec 31, 2020

Can someone confirm if the blurry text issue is a problem with ALL "non-retina/Apple" external monitors using Big Sur?

I recently purchased an M1 MacBook Air along with an ASUS VG27AQ (based off of rtings.com recommending this as the "best" external monitor for a Mac).

I can still return the monitor at this point, so I'm wondering if switching out for a different monitor will help, or if this is an issue will all monitors.

Thanks in advance!

@aednichols

This comment has been minimized.

Copy link

@aednichols aednichols commented Dec 31, 2020

@whoaizme first off, the focus of this gist and comment thread is forcing external displays to run in RGB mode instead of e.g. YPbPr. YPbPr seems to have varying effects on performance depending on the external display model, ranging from "not much" to "colors look all wrong". So far, I have seen/heard that effect on text is that it appears overly sharpened, but not blurry.

Can you please check your monitor's OSD to see whether color mode is listed?


If color mode is not the issue:

The VG27AQ is a 27" 2560x1440 display that makes no attempt to be retina.

The only remedy I'm aware of is this: https://osxdaily.com/2018/09/26/fix-blurry-thin-fonts-text-macos-mojave/

If you're not happy with the result, the cost-effective solution I recommend is a 4K display running in HiDPI "more space" mode for 2560x1440 effective.

@hdtvspace

This comment has been minimized.

Copy link

@hdtvspace hdtvspace commented Jan 1, 2021

The VG27AQ is a 27" 2560x1440 display that makes no attempt to be retina.

The only remedy I'm aware of is this: https://osxdaily.com/2018/09/26/fix-blurry-thin-fonts-text-macos-mojave/

If you're not happy with the result, the cost-effective solution I recommend is a 4K display running in "more space" mode for 2560x1440 effective.

More space? I am sorry, if you want to use 4k resolution on a Mac, you should consider a 24" display. Because 4k at that size produces a pixel density within the range that Apple designs for. 4K at 27" or 32" does not!

Thats also the reason why Apple do not sell 4k displays. 4k is from television.

Sure you can connect an 4K display, if you edit the whole days only 4k vids, but this delivers so small fonts and not so sharp and clear picture, because of the pixel density of 163 ppi with 27". This is wrong between the 110 or 220 dpi.

Linux == 72dpi
Mac == 72dpi
Windows == 96dpi

Thats why fonts with the Mac are smaller. QHD, WQHD are also for the performance of the Mac / PC much much better.

@aednichols

This comment has been minimized.

Copy link

@aednichols aednichols commented Jan 1, 2021

@hdtvspace every Mac notebook introduced since 2016 ships with a "more space" resolution set by default, i.e. non pixel doubled [0].

Apple itself has clearly abandoned this standard, and so has the industry - 5K displays are practically gone [1], except for the lone ugly LG model.

Please don't tell me that a setup I've been using for years, is affordable, and looks wonderful is wrong, because it is very right for me.

[0] https://9to5mac.com/2016/12/02/15-inch-macbook-pro-screen-resolution-blurry/
[1] https://tidbits.com/2018/11/16/what-happened-to-5k-displays/

@hdtvspace

This comment has been minimized.

Copy link

@hdtvspace hdtvspace commented Jan 1, 2021

@aednichols

Some basic things first for you explained:

I use an Apple 5K iMac with 27" (2880p). This is with 217 dpi perfect and a sharp crisp Retina display at 27". Apple use an Lg 5K Display for this model. And an brand-new Mac mini m1 with an 34" DELL (3440x1440) display works here perfekt.

If you recommend an 4K resolution for 27" or higher inch models, sorry, this is very wrong. Got it?
This is why Apple choose 5k for 27" and the Apple Pro Display XDR 32" Retina has: 6K.

BUT 4k (UHD) is not for Macs perfect and not matching the retina standard with higher as 24". That is what I meant. Its for television and not for Macs or PCs.

You can read and inform you more about retina displays (pixel density) at Apples support site.

@aednichols

This comment has been minimized.

Copy link

@aednichols aednichols commented Jan 1, 2021

@hdtvspace I am a long-time Mac user and iOS developer and am aware of Apple’s pixel doubling on the low volume, high end desktop portion of its product line (notebooks are not doubled and massively outsell desktops).

As a programmer, I require an external display with:

  • QHD real estate or higher, i.e. 2560x1440
  • As close to retina as possible
  • $1000 budget

No 5K displays exist in this segment. I’m not about to buy a Pro Display XDR so my code in IntelliJ looks smooth.

@hdtvspace

This comment has been minimized.

Copy link

@hdtvspace hdtvspace commented Jan 2, 2021

@aednichols
macOS != iOS...

When you run unscaled 4K with you Mac system, macOS and applications use their standard art assets, designed for unscaled, non-Retina display scenarios. and that's the problem here with 4k.

You really should know that as iOS developer that 4K is not suitable. Sorry this has nothing to do with the price. These are basic things as developer.. ;-)

@aednichols

This comment has been minimized.

Copy link

@aednichols aednichols commented Jan 2, 2021

@hdtvspace this whole time I am talking about 4K scaled to 2560x1440 HiDPI, I don’t know where you got unscaled from.

We are far off topic and this is my last reply.

@cfenollosa

This comment has been minimized.

Copy link

@cfenollosa cfenollosa commented Jan 5, 2021

@aednichols What monitor are you using right now, and can you confirm it works properly with M1 Macs?

Maybe it's time for me to ditch my old monitor and buy a HiDPI one.

@aednichols

This comment has been minimized.

Copy link

@aednichols aednichols commented Jan 5, 2021

@cfenollosa I have an LG 27GN950 that the M1 runs perfectly at 144 Hz with 10 bit color and HDR thanks to display stream compression (“DSC”).

@hdtvspace

This comment has been minimized.

Copy link

@hdtvspace hdtvspace commented Jan 7, 2021

@hdtvspace this whole time I am talking about 4K scaled to 2560x1440 HiDPI, I don’t know where you got unscaled from.

We are far off topic and this is my last reply.

Yes, you are. Because you are not accepting it, again and again that a down scaled not in native mode running display - / a 27" LG 4k Gaming Display is not perfect. The M1 GPU must always the whole time scale the picture down to 1440p? Sorry, that is really wrong.

@ChristopherPardo

This comment has been minimized.

Copy link

@ChristopherPardo ChristopherPardo commented Jan 16, 2021

Thank you VERY much ! You saved my life !!!!

@drone1

This comment has been minimized.

Copy link

@drone1 drone1 commented Jan 18, 2021

Also getting patch-edid.rb:11:in `<main>': undefined method `[]' for nil:NilClass (NoMethodError) – ioreg w/o the params returns only the 'AppleDisplayCrossbar' if I run ioreg | grep AppleDisplay: AppleDisplayCrossbar(display-crossbar0) <class AppleDisplayCrossbar, id 0x100000289, registered, matched, active, busy 0 (7 ms), retain 18>
I've got an LG monitor and this command worked previously on Catalina/etc. :/

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Jan 20, 2021

The script doesn't work on M1 Macs because it doesn't store the EDID in the ioreg like on Intel Macs. Create the override file on an Intel Mac, then copy it to the M1 Mac.

@mateuszkrasucki

This comment has been minimized.

Copy link

@mateuszkrasucki mateuszkrasucki commented Jan 20, 2021

The script doesn't work on M1 Macs because it doesn't store the EDID in the ioreg like on Intel Macs. Create the override file on an Intel Mac, then copy it to the M1 Mac.

@joevt You can do that and it does load override fail but it doesn't actually override EDID I believe, at least it's unable to force RGB.

@aednichols

This comment has been minimized.

Copy link

@aednichols aednichols commented Jan 20, 2021

it does load override fail but it doesn't actually override EDID I believe, at least it's unable to force RGB

Tested & confirmed, unfortunately

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Jan 21, 2021

The override file on M1 Macs can only override the display name?

@mateuszkrasucki

This comment has been minimized.

Copy link

@mateuszkrasucki mateuszkrasucki commented Jan 21, 2021

The override file on M1 Macs can only override the display name?

Override is more than just EDID. You can specify other keys which can be seen in Apple provided overrides or on the web. Or, for example, you can add:

<key>DisplayIsTV</key>
<false/>

And this one actually is a also read and seems to be respected but does not force RGV either (my display [P2415Q] is actually correctly recognized as not-TV anyways but setting DisplayIsTV to true changes that).

I actually tried to find another way of forcing RGB without EDID override using some override key that would do the job. I did not succeed unfortunately ;/

@SFrost007

This comment has been minimized.

Copy link

@SFrost007 SFrost007 commented Feb 8, 2021

I've subscribed to this Gist in the hopes that some similar fix can resolve my M1 issue..

I have a Dell U2412M (1920x1200) connected to my Mac(s) via a HDMI switch, which allows me to hook up my Mac, PC and console while splitting out the audio feed to my speakers, as the monitor has no audio handling (it's actually connected to the monitor's DVI input). Connecting the monitor directly to a Mac via the HDMI port on my USB-C hub and a HDMI->DVI cable works fine on both Intel and M1.

On Intel Macs, using the HDMI switch introduces a strong pink tint to the whole image (not the fuzzy text usually reported), but applying the EDID patch to force into to RGB mode always fixed this.

On my M1 Air, using the HDMI switch results in no display output at all (the monitor claims the signal is not 1920x1200@60, but macOS System Information claims it is). The perl script above shows that macOS is actually using 59.95Hz (the only timing listed for 1920x1200), but the identical timing is shown as active when connected directly which works, so I don't think that's the problem.

From diffing the ioreg output, the other differences I can spot (without a patched EDID, but that doesn't fix the issue) are:

  • DisplayAttributes -> HasHDMILegacyEDID is "yes" with switch and "no" without
  • Transport -> Downstream is "HDMI" with switch and "DVI" without
  • Large diffs in ColorElements and TimingElements

Any suggestions before I resign myself to buying a more modern monitor that removes the need for this switch?

@kselby

This comment has been minimized.

Copy link

@kselby kselby commented Feb 11, 2021

I have tried this patch on Catalina with my LG monitor that outputs at 2560x1080 with no success. I tried it using a displayport to usb c as well as hdmi and same result. When I set up the RGB override, how do I check it is actually utilizing RGB?

Here is what is showing in the graphics/display settings:

Display with forced RGB mode (EDID override):
Resolution: 2560 x 1080 (UW-UXGA - Ultra Wide - Ultra Extended Graphics Array)
UI Looks like: 2560 x 1080 @ 60 Hz
Framebuffer Depth: 30-Bit Color (ARGB2101010)
Mirror: Off
Online: Yes
Rotation: Supported
Automatically Adjust Brightness: No
Connection Type: DVI or HDMI
Adapter Firmware Version: 7.55

Screen Shot 2021-02-11 at 11 03 38 AM

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Feb 13, 2021

I have tried this patch on Catalina with my LG monitor that outputs at 2560x1080 with no success. I tried it using a displayport to usb c as well as hdmi and same result. When I set up the RGB override, how do I check it is actually utilizing RGB?

Does the LG display have an onscreen menu that shows the type of input signal?

Do you have a GPU that reports the color format in the output of the AGDCDiagnose command?

@filipenobrerc

This comment has been minimized.

Copy link

@filipenobrerc filipenobrerc commented Feb 15, 2021

Hi! Will this allow me force ARGB2101010 mode on MacBook pro 15" Late 2013? (the graphics card and the monitor supports it, connected through thunderbolt2). Thanks.

@filipenobrerc

This comment has been minimized.

Copy link

@filipenobrerc filipenobrerc commented Feb 16, 2021

Update:

BenQ-EW3270U + Macbook Pro 15" Late 2013 (Geforce GT 750M, 16GB, i7-4850HQ, Catalina 10.15.7), connected via Thunderbolt/DP cable (mdp - dp1.4 cable that came w/screen)

-> Upon first connection, limited to ARGB8888 as was to be expected.
-> Installed SwitchResX -> Allowed me to choose "Billions of collors" aka ARGB2101010 / 10-Bit-per-pixel / 30-Bit color. You can check it worked by dragging a terminal window w/transparency enabled to the 10-Bit screen. Background color will go crazy.
-> Still, SwitchResX list of available resolutions was displaying "NTSC" and "PAL" which annoyed me. So I chose to override the EDID of the screen only allowing the good stuff.
-> Reboot in Recovery. Disable Integrity protection by running "csrutil disable" in terminal. Reboot.
-> Don't forget to "mount -uw /" to mount system partition in R/W or you wont be able to write to /Overrides
-> Overides folder (Catalina) is located at: /System/Library/Displays/Contents/Resources/
-> Follow this: https://gist.github.com/ejdyksen/8302862 , using adaugherity's script.
-> Reboot in Recovery. Re-enable Integrity protection.

Everything working great.

@pattyland

This comment has been minimized.

Copy link

@pattyland pattyland commented Feb 17, 2021

Hello, I recently got a 4k monitor that I just can't use under macOS.
My setup: MacBook Air Mid 2013 running Big Sur <-> miniDisplay Port to Display Port Cable <-> Xiaomi Gaming Monitor.
According to Apple support homepage the 2013 MacBook can't do 4k, but that's a lie: Under Windows on the MacBook it works wonderfully with 60Hz. Under macOS the display just stays black, no matter what I try. So the problem seems to be only something on the software side in macOS.
Here is the result of this script:

pattyland@Air Overrides % sudo ruby patch-edid.rb

found display: vendorid 25001, productid 13380, EDID:
00ffffffffffff0061a9443400000000281d0104b55021783b64f5ad5049a322135054adcf00714f81c0814081809500a9c0b300d1c0226870a0d0a02950302035001d4e3100001a20fd70a0d0a03c50302035001d4e3100001e000000fd003090a0a03c010a202020202020000000fc004d69204d6f6e69746f720a20200295020320f44c010203040590111213141f3f2309070783010000e6060701605d29023a801871382d40582c96001d4e3100001e20ac00a0a0382d40302035001d4e3100001ef0d270a0d0a03c50302035001d4e3100001ea348b86861a03250304035001d4e3100001ef57c70a0d0a02950302035001d4e3100001e00000000006b7012790000030014bf2f01046f0d9f002f001f009f053b000280040007000a0881000804000402100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e190
Setting color support to RGB 4:4:4 only
Number of extension blocks: 2
removing extension block

Recalculated checksum: 0xaf
new EDID:
00FFFFFFFFFFFF0061A9443400000000281D0104B55021782364F5AD5049A322135054ADCF00714F81C0814081809500A9C0B300D1C0226870A0D0A02950302035001D4E3100001A20FD70A0D0A03C50302035001D4E3100001E000000FD003090A0A03C010A202020202020000000FC004D69204D6F6E69746F720A202000AF

Does anyone have any other ideas what I could try? I have already tried unsuccessfully various reboots, different resolutions and "Display Menu" on the Mac App Store.

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Feb 18, 2021

Hello, I recently got a 4k monitor that I just can't use under macOS.
My setup: MacBook Air Mid 2013 running Big Sur <-> miniDisplay Port to Display Port Cable <-> Xiaomi Gaming Monitor.
According to Apple support homepage the 2013 MacBook can't do 4k, but that's a lie: Under Windows on the MacBook it works wonderfully with 60Hz. Under macOS the display just stays black, no matter what I try. So the problem seems to be only something on the software side in macOS.

Does anyone have any other ideas what I could try? I have already tried unsuccessfully various reboots, different resolutions and "Display Menu" on the Mac App Store.

Does Windows show the Bit depth and Color format and Color space in "Advanced display settings"? Is it RGB 8-bit or something else?

For macOS,
If it's a bandwidth issue, then maybe enabling 4:2:2 (if it's not already enabled) would work. If it's a pixel clock issue in the driver then a patch may be required.

Have you tried the pixel clock patches in earlier macOS versions? Before doing that, try WhateverGreen first because they won't modify your OS files.
https://github.com/Floris497/mac-pixel-clock-patch-V2

Does WhateverGreen and Lilu work in Big Sur? Do they have an option to allow 4K? Maybe they don't work in Big Sur yet. Do they work in Catalina or earlier? The -igfxmpc option might be applicable.
https://github.com/acidanthera/WhateverGreen

@pattyland

This comment has been minimized.

Copy link

@pattyland pattyland commented Feb 18, 2021

@joevt First of all, thank you for your detailed answer! I'll try to answer everything:

This all the infos from the "Advanced display settings":
Bit depth: 8-Bit
Color Fomat: RGB
Color ‎Space: SDR

How do I get my current croma value or how do I change it? This script set it to 4:4:4?

Regarding pixel clock: I already found that Link in various places, according to this issue it will not work on Big Sur: Floris497/mac-pixel-clock-patch-V2#370

On the subject of Lilu: I'm hearing this name for the first time, if I see it correctly I have to install kernel extensions for it, is that still possible with Big Sur? If so, I would try that tomorrow!

Unfortunately, I have only had the monitor for a short time and had already updated to Big Sur, so I don't know if it would have worked with Catalina.
What I found out is that the monitor with an old Displayport to HDMI adapter can display Full-HD without any problems!

@kselby

This comment has been minimized.

Copy link

@kselby kselby commented Feb 18, 2021

I have tried this patch on Catalina with my LG monitor that outputs at 2560x1080 with no success. I tried it using a displayport to usb c as well as hdmi and same result. When I set up the RGB override, how do I check it is actually utilizing RGB?

Does the LG display have an onscreen menu that shows the type of input signal?

Do you have a GPU that reports the color format in the output of the AGDCDiagnose command?

My display shoes the input is hdmi at 2560x1080 correctly, I do not see anywhere that says RGB though.

I am not sure how to use the agdc diagnose command properly? I am on a 2017 macbook pro with intel iris plus graphics.

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Feb 19, 2021

How do I get my current croma value or how do I change it? This script set it to 4:4:4?

RGB is always 4:4:4. Chroma sub sampling (4:2:2 or 4:2:0) requires YCbCr.

On the subject of Lilu: I'm hearing this name for the first time, if I see it correctly I have to install kernel extensions for it, is that still possible with Big Sur? If so, I would try that tomorrow!

You can install kernel extensions to /Library/Extensions. Then you use the Security and Privacy preferences panel to allow it and restart the computer (after setting Lilu/Whatever green boot-args). When I tried Lilu and WhateverGreen with Big Sur, I had to make some changes to the code to make my Intel patches work. I don't know if Lilu and WhateverGreen have been updated since. I want to get back to finishing my patch one day but I don't know when (my patch is not related to the patch you need).

What I found out is that the monitor with an old Displayport to HDMI adapter can display Full-HD without any problems!

Full HD is only 1920x1080, not the 4K 60Hz that you want.

@joevt

This comment has been minimized.

Copy link

@joevt joevt commented Feb 19, 2021

To get WhateverGreen and Lilu to work with Big Sur, you may need to use Open Core to inject it? I have not read the current documentation or tried WhateverGreen and Lilu with Big Sur recently.

@hackvan

This comment has been minimized.

Copy link

@hackvan hackvan commented Feb 24, 2021

In my case (Macbook Pro 13' Mid 2015 and Samsung 24' LF24T400FHLXZL) the steps to force to use RGB worked (which in my case I didn't see any improvement so I assume my settings were already as RGB) but I hate Apple for forcing me to lower my screen resolution from 1920x1080 to 1600x900 so I could read the text clearer and it wouldn't look so pixelated.

@quantosapplications

This comment has been minimized.

Copy link

@quantosapplications quantosapplications commented Mar 10, 2021

I have two mac mini, one m1 and one intel, so i have copied the Overrides made on the intel one to the m1.
It detect the overrided change but it does not display the hidpi resolutions...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment