(GUIDE) Add your custom retina / HiDPI resolution for your desktop display

Hi. Excuse me for my English. I'm trying to make it simple.

1, Prepare SwitchResX, PlistEdit Pro and IORegExplorer. SwitchResX is not a must but I recommend it.

2, Enable HiDPI if you haven't done it


Code:
sudo defaults write /Library/Preferences/com.apple.windowserver DisplayResolutionEnabled -bool YES;
sudo defaults delete /Library/Preferences/com.apple.windowserver DisplayResolutionDisabled;
Log out and log back in if you'd like to be sure. Also works if you have Quartz Debug.

3, Extract EDID in SwitchResX. Or from IOReg as in Picture A.

                                 

4, In Terminal, run
Code:
 ioreg -l
Use Edit - Find to get your DisplayProductID and DisplayVendorID. In my case, I got
Code:
DisplayVendorID = 14499
DisplayProductID = 26609
You also need to find IODisplayPrefsKey but it would must easier to get that in IOReg, as shown in Picture A. In my case I got this

Code:
 IODisplayPrefsKey = IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG0@1/IOPCI2PCIBridge/PEGP@0/ATY,Ipomoea@0/ATIFramebufferNI/display0/AppleDisplay-38a3-67f1
Hence the value: AppleDisplay-38a3-67f1

5, Create a folder on the desktop and name it DisplayVendorID-****. In my case it was
Code:
DisplayVendorID-38a3
And then create a blank text file named DisplayProductID-***. In my case it was
Code:
DisplayProductID-67f1
Use the Get Info panel to make sure this text file HAS NO EXTENSION.

6, Edit this DisplayProductID-*** file in PlistEdit Pro. Add the following children and edit their values with your own DisplayProductID DisplayVendorID and EDID data.

Code:
<key>DisplayProductID</key>
 <integer>****</integer>
Code:
 <key>DisplayVendorID</key>
 <integer>****</integer>
Code:
 <key>IODisplayEDID</key>
 <data>
****
 </data>
In my case, it was like

Code:
        <key>DisplayProductID</key>
        <integer>26609</integer>
        <key>DisplayVendorID</key>
        <integer>14499</integer>
        <key>IODisplayEDID</key>
        <data>
        AP///////wA4o/FnAQEBAQYWAQOAMBt4KpLFollVnicOUFS/7wCBQIGAlQCzANHAAQEB
        AQEBAjqAGHE4LUBYLEUA3QwRAAAeAAAA/QA4Sx5QEQAKICAgICAgAAAA/ABWRTIyMDFY
        RwogICAgAAAA/wAyMjExMTUzME5DCiAgAFM=
        </data>
7, To add your custom resolution, create a new child like this
Code:
 <key>scale-resolutions</key>
 <array>
 </array>
And add a new sibling
Code:
<data></data>
8, Convert your custom resolution with a Hexadecimal Converter/Decimal Converter

My GPU supports 2560 x 1600 max. My display supports 1920 x 1080 max. So I will need 2560 x 1440 for retina.

Code:
00000A00 000005A0 00000001
00000A00 = 2560
000005A0 = 1440
00000001 This one doesn't really matter.

I also added 1366 x 768 because I could not stand 1360 x 768 provided by OS X.
Code:
00000556 00000300 00000001
Someone with 780 SLI or 7990 Cross-Fire may set 3840 x 2160 for 1920 x 1080 HiDPI. lol

Therefore, in your PlistEdit Pro it should look similar to mine:

Code:
<?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">
<dict>
        <key>DisplayProductID</key>
        <integer>26609</integer>
        <key>DisplayVendorID</key>
        <integer>14499</integer>
        <key>IODisplayEDID</key>
        <data>
        AP///////wA4o/FnAQEBAQYWAQOAMBt4KpLFollVnicOUFS/7wCBQIGAlQCzANHAAQEB
        AQEBAjqAGHE4LUBYLEUA3QwRAAAeAAAA/QA4Sx5QEQAKICAgICAgAAAA/ABWRTIyMDFY
        RwogICAgAAAA/wAyMjExMTUzME5DCiAgAFM=
        </data>
        <key>scale-resolutions</key>
        <array>
                <data>
                AAAKAAAABaAAAAAB
                </data>
                <data>
                AAAFVgAAAwAAAAAB
                </data>
        </array>
</dict>
</plist>
9, Copy your DisplayVendorID folder to /System/Library/Displays/Overrides

Now you can take a look in SwitchResX. Your custom resolutions should show up as "scaled" and "system-inactive". If you don't have SwitchResX it doesn't matter either.

Restart and voila!
                                   
                                                                                Picture B
                                 
Picture C

Do NOT try to choose 2560 x 1440, though. You will get a white screen or worse. Choose 1280 x 720 HiDPI instead.


Note:

A. Some other tutorial shows how to add custom resolutions with Switchres and Quartz Debug. It seems for laptops only. I was unable to add resolutions on my Hackintosh. Instead I got irrelevant DisplayVendorID folders in /System/Library/Displays/Overrides . Make sure you delete these folders before applying this tutorial.

B. I have not tested it with multiple displays, laptops or even TV. It is possible to be the same and, following this tutorial, you can add multiple EDID profiles to /System/Library/Displays/Overrides

C. Known issues: Lag a tiny bit when switching spaces. Also white screen for less than a second after logging in but before your retina desktop shows up. But it works fine on my Hackintosh now.

D. Do tell me if it would burn your GPU when you play games. lol

A lot of thanks to Apple, Steve, Hackintosh hackers, this forum, and especially authors of these two posts


Fixing Scrambled,Stretched, or Wrong Resolution Laptop Display Problems


HOW TO: Advanced EDID Injection


Ciao

Henry

Pentium G840
Gigabyte H61M-DS2 rev.2.2 F8
Samsung DDR3 1600 4G
MSI R6670-MD2GD3v2
Hitachi 320 GB (WIN 7 X86 SP1)
Seagate 500 GB (10.8.4)
NEC VE2201XG Display 1280x720 HiDPI

Post a Comment

0 Comments