I've spent the last 4 hours (at least) fixing that issue on macOS Sierra. The way I managed to do it is based on Dan Grove's reply to himself in this same thread, but with more DIY (thanks Dan!).
Few things I think are important to understand about EDID files:
- For one given screen device, EDID files are different depending on the OS.
- DO NOT retrieve the EDID from the computer where you have the issue (as suggested by chiara in this thread) – it did not work for me and gave me corrupted data.
- You will need need a computer where the screen works (typically running Windows) to retrieve the correct EDID to then port it to Mac.
Now, following Dan Grove list of steps (see his post above), I would bring some clarifications as follow:
Step 1 – I used a real Windows computer to do that, not a Virtual Machine.
Step 2 – There was no option to export the EDID data as an RTF file in MonitorInfoView when I did it, probably because the software got updated since. I had to click on View > Lower Pane > EDID Hex Dump to actually see the Hex part.
Step 3 – For those who don't know what Hex is, below is a screenshot. You will have to remove the surrounding parts (highlighted in red) to only keep the Hex part (highlighted in green).
You can then copy and paste the green part in EDID Reader as Dan explained. You don't necessarily need to have the 3 boxes ticked, just click on Parse Edid and check if the information on the right reflect what your screen device should be – e.g you should be able to see the resolution you're trying to make work.
Step 4 – This is the tricky part which got me confused. The tutorial is asking for you to output the result of the following Terminal command in a text file
ioreg -lw0, and search for various strings within the said file.
Unless I'm mistaken,
ioreg stands for Input/Output Register, meaning it's basically listing all the devices of your machine. However, having 2 screen devices (the native Macbook screen + the external one I was trying to make work), you need to be careful not to be mistaken with your native screen.
The tutorial asks you to look for the
IODisplayEDID string but my external screen did not have any in the
ioreg output (which is certainly why is was not working). The correct
IODisplayEDID data to create is the one we found in the Hex part, highlighted in green above. This is the string you need to port into a mac Overrides file (just follow the tutorial if you have no idea what I'm talking about).
To avoid mistakes, just be aware that the DisplayVendorID for the Apple native screens seems to be 1552. If during the tutorial you end up using this ID, you're about to change the settings of your native screen, not the external one :)
I hope this brings some clarification to the very useful steps from Dan Grove.