Jump to content

[Guide] [10.8] Add your custom retina / HiDPI resolution for your desktop display


29 posts in this topic

Recommended Posts

UPDATE

 

Hm sorry I forgot to update this topic. This tutorial works only in 10.8 here on my hackintosh. I have read that some people made it work in 10.9, but only with Intel's intergrated GPU.

 

Cheers

 

--------------------------

 

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
 

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

 ioreg -l

 
Use Edit - Find to get your DisplayProductID and DisplayVendorID. In my case, I got

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
 

 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

DisplayVendorID-38a3

 
And then create a blank text file named DisplayProductID-***. In my case it was

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.
 

<key>DisplayProductID</key>
 <integer>****</integer>
 <key>DisplayVendorID</key>
 <integer>****</integer>
 <key>IODisplayEDID</key>
 <data>
****
 </data>

 
In my case, it was like
 

        <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

 <key>scale-resolutions</key>
 <array>
 </array>

And add a new sibling

<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.
 

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.

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:
 

<?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
 
http://www.insanelymac.com/forum/topic/208410-fixing-scrambledstretched-or-wrong-resolution-laptop-display-problems/
Fixing Scrambled,Stretched, or Wrong Resolution Laptop Display Problems
http://www.insanelymac.com/forum/topic/281412-how-to-advanced-edid-injection/
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

  • Like 6
Link to comment
Share on other sites

With the 10.8.4 update, apple added more mechanism to check if the overridden resolution is compatible with the EDID read from monitor. So it won't work, if your monitor doesn't really support the resolutions. up until 10.8.4 you would get upscaled resolutions with this method...

Link to comment
Share on other sites

With the 10.8.4 update, apple added more mechanism to check if the overridden resolution is compatible with the EDID read from monitor. So it won't work, if your monitor doesn't really support the resolutions. up until 10.8.4 you would get upscaled resolutions with this method...

I am in 1084 and it works. If it did not work for you, maybe you added a wrong resolution

Link to comment
Share on other sites

I am in 10.8.3, but I can't find a lot of these things... My DisplayVendorID and DisplayProductID have hexidecimal numbers instead of regular numbers like yours (0x469 and 0x2498). When I search for IODisplayPrefsKy I don't find anything. Also, I don't understand the data section under IODisplayEDID that you have, where did that come from? There's also a data section under scale-resolutions and I don't know where that comes from either. What am I doing wrong, is my computer just not compatible with this hack?

Link to comment
Share on other sites

I am in 10.8.3, but I can't find a lot of these things... My DisplayVendorID and DisplayProductID have hexidecimal numbers instead of regular numbers like yours (0x469 and 0x2498). When I search for IODisplayPrefsKy I don't find anything. Also, I don't understand the data section under IODisplayEDID that you have, where did that come from? There's also a data section under scale-resolutions and I don't know where that comes from either. What am I doing wrong, is my computer just not compatible with this hack?

If you take your time diving into this topic, I think you'd have a better understanding of the technique being discussed here.

http://www.insanelymac.com/forum/topic/281412-how-to-advanced-edid-injection/

Link to comment
Share on other sites

I am in 1084 and it works. If it did not work for you, maybe you added a wrong resolution

The reason, why I'm telling, that up until 10.8.4 is, because with the same override file I had 3840x2160, (1920x1080(HiDpi)). After updating to 10.8.4 I lost all resolutions. I have the same result on my macbook pro _and_ on my hackintosh.

 

Here some screens up until 10.8.4:

3840x2160 http://i.imgur.com/SRUsQQY.jpg

1920x1080 (HiDPI) http://i.imgur.com/KEFTyB1.jpg

1920x1080 http://i.imgur.com/OxQ453f.jpg

 

Another screenshot on 10.8.3 http://i.imgur.com/PElXpyz.jpg

If it is true, what you are saying, it could be some Samsung problems, which is being discussed in apple-support forums too.

I am in 10.8.3, but I can't find a lot of these things... My DisplayVendorID and DisplayProductID have hexidecimal numbers instead of regular numbers like yours (0x469 and 0x2498). When I search for IODisplayPrefsKy I don't find anything. Also, I don't understand the data section under IODisplayEDID that you have, where did that come from? There's also a data section under scale-resolutions and I don't know where that comes from either. What am I doing wrong, is my computer just not compatible with this hack?

With `ioreg` you can get everything you want. With the argument "-x" you can print the values on hex-base too.

For example:

 

$ ioreg -l | grep DisplayProductID

would return it in decimal

$ ioreg -lx | grep DisplayProductID

would return it in hexadecimal

 

The information between <data> key is the hexadecimal value encoded in base64. You can use online converter or use plist editor from Xcode.

Link to comment
Share on other sites

The reason, why I'm telling, that up until 10.8.4 is, because with the same override file I had 3840x2160, (1920x1080(HiDpi)). After updating to 10.8.4 I lost all resolutions. I have the same result on my macbook pro _and_ on my hackintosh.

 

Here some screens up until 10.8.4:

3840x2160 http://i.imgur.com/SRUsQQY.jpg

1920x1080 (HiDPI) http://i.imgur.com/KEFTyB1.jpg

1920x1080 http://i.imgur.com/OxQ453f.jpg

 

Another screenshot on 10.8.3 http://i.imgur.com/PElXpyz.jpg

If it is true, what you are saying, it could be some Samsung problems, which is being discussed in apple-support forums too.

 

With `ioreg` you can get everything you want. With the argument "-x" you can print the values on hex-base too.

For example:

 

$ ioreg -l | grep DisplayProductID

would return it in decimal

$ ioreg -lx | grep DisplayProductID

would return it in hexadecimal

 

The information between key is the hexadecimal value encoded in base64. You can use online converter or use plist editor from Xcode.

I will try that, thank you.
Link to comment
Share on other sites

  • 4 weeks later...
  • 4 weeks later...
  • 1 month later...

Hi, I'm trying to do this on a 1920x1080 laptop display. The only hidpi resolution that shows up is half that of 1920x1080 (Not optimal to say the least) I'm trying to get a grip on how this works. I'm pretty sure I did the tutorial right but more than likely wrong resolutions added. :P

Link to comment
Share on other sites

Hi, I'm trying to do this on a 1920x1080 laptop display. The only hidpi resolution that shows up is half that of 1920x1080 (Not optimal to say the least) I'm trying to get a grip on how this works. I'm pretty sure I did the tutorial right but more than likely wrong resolutions added. :P

 

you can't go past beyond of what your monitor natively supports. 

Link to comment
Share on other sites

  • 4 weeks later...

Hello,

 

Has anybody been able to get this guide working on 10.9? I had it working well in 10.8.5, but on 10.9, I don't see my custom resolutions in Display Preferences. I know the override is being "read" because when I added a "DisplayProductName" (? forget the exact name) key with a test string, that showed up in System Info. I've enabled HiDPI resolutions and do see one that comes up by default (without me needing to provide an override) in Preferences.

 

SwitchResX shows my custom resolutions and I am able to select my custom HiDPI ones there. If I do that, I am at the right resolution and no resolution shows up as selected in Display Preferences. When I uninstall SwitchResX, it seems to undo the set though.

 

Does anybody know what SwitchResX does to switch resolutions? Or why my custom resolutions don't show up in Display Preferences? Any help appreciated.

 

Thanks,

/vv

Link to comment
Share on other sites

Hello,

 

Has anybody been able to get this guide working on 10.9? I had it working well in 10.8.5, but on 10.9, I don't see my custom resolutions in Display Preferences. I know the override is being "read" because when I added a "DisplayProductName" (? forget the exact name) key with a test string, that showed up in System Info. I've enabled HiDPI resolutions and do see one that comes up by default (without me needing to provide an override) in Preferences.

 

SwitchResX shows my custom resolutions and I am able to select my custom HiDPI ones there. If I do that, I am at the right resolution and no resolution shows up as selected in Display Preferences. When I uninstall SwitchResX, it seems to undo the set though.

 

Does anybody know what SwitchResX does to switch resolutions? Or why my custom resolutions don't show up in Display Preferences? Any help appreciated.

 

Thanks,

/vv

What is your graphics card?
Link to comment
Share on other sites

I've tried with both the onboard Intel HD3000 and a GTX 660. The resolution I was attempting to reach is within the max resolution supported by both cards.

 

When I had it working on 10.8.5, my monitor was powered off my GTX 660 with the default OSX drivers

 

/vv

Link to comment
Share on other sites

I've tried with both the onboard Intel HD3000 and a GTX 660. The resolution I was attempting to reach is within the max resolution supported by both cards.

 

When I had it working on 10.8.5, my monitor was powered off my GTX 660 with the default OSX drivers

 

/vv

And which resolution might that be?

Link to comment
Share on other sites

2048x1280 for a 1024x640 (HiDPI)

Well, all I know is, they(nvidia and nvidia team in apple) added new mechanism in nvidia drivers onwards the 10.8.4 and later (including 10.9), to check the added or overridden resolutions. I had to revert to the older nvidia drivers from 10.8.3 while I'm being on 10.8.4 and 10.8.5 and it did work. But for 10.9 I'm out of luck. The old drivers aren't even linking on the 10.9… I already tried the nvidia web drivers too.

Link to comment
Share on other sites

  • 2 months later...

OSX 10.9.1 / UX301LA / Intel Iris 5100 / 13-Inch 2560 x 1440 native resolution

 

All things are to small, but sharp...

 

I tryed to add 1920x1080, 1600x900 hidpi resolutions...

 

Doesn't working...

<?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>5126</integer>
	<key>DisplayVendorID</key>
	<integer>19728</integer>
	<key>IODisplayEDID</key>
	<data>
	AP///////wBNEAYUAAAAAAAXAQSlHRF4Bt5Qo1RMmSYPUFQAAAABAQEBAQEBAQEBAQEB
	AQEBVl4AoKCgKVAwIDUAJqUQAAAYAAAAEAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAA
	AAAAAAAAAAAA/ABMUTEzM1QxSlcxNAogAKU=
	</data>
	<key>scale-resolutions</key>
	<array>
		<data>
		AAAHgAAABDgAAAAB
		</data>
		<data>
		AAAGQAAAA4QAAAAB
		</data>
		<data>
		AAAFVgAAAwAAAAAB
		</data>
	</array>
</dict>
</plist>

Working: sudo defaults write /Library/Preferences/com.apple.windowserver DisplayResolutionEnabled -bool YES;
Not Working: sudo defaults delete /Library/Preferences/com.apple.windowserver DisplayResolutionDisabled;

 

"Domain (/Library/Preferences/com.apple.windowserver) not found"

 

Thank you :-)

Link to comment
Share on other sites

  • 3 months later...

Ok, not need anymore, i found out how to get HiDPI on Retina Macbook Smbios:

 

You need to use

00000B40 00000654 00000001 00200000

instead of

00000B40 00000654 00000001

in the description. (just add 00200000 at the end)

 

Example as Picture (Attached)

post-735125-0-40351600-1397163639_thumb.jpg

Link to comment
Share on other sites

  • 9 months later...

hi! i tried this in 10.10.1 to get my external TV to work. i want it to run at 1360x786 and 2040x1180 (both resolutions run fine with windows)

 

so i created this file:

 
<?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>1815</integer>

        <key>DisplayVendorID</key>

        <integer>1970170734</integer>

        <key>IODisplayEDID</key>

        <data>

        AP///////wAAABcHAAAAAAoKAQEMHhe+6C3JoFdHmCcSSEwAAAABAQEBAQEBAQEBAQEB

        AQEBAAAA/gBTUlhGYWtlRURJRAogAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB

        AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAFo=

        </data>

        <key>default-resolution</key>

        <data>

        AAAFUAAAAxIAAAABACAAAA==

        </data>

        <key>scale-resolutions</key>

        <array>

                <data>

                AAAFUAAAAxIAAAABACAAAA==

                </data>

                <data>

                AAAHAAAABJwAAAABACAAAA==

                </data>

        </array>

</dict>

</plist>

 

as you can see in the screenshot the resolutions are not shown (even not when pressing the alt-key)

 

what am i doing wrong?

 

hope someone can help me with that.

 

Greetings

 

 

post-500265-0-18741200-1422461521_thumb.png

Link to comment
Share on other sites

hi! i tried this in 10.10.1 to get my external TV to work. i want it to run at 1360x786 and 2040x1180 (both resolutions run fine with windows)

 

so i created this file:

 
<?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>1815</integer>

        <key>DisplayVendorID</key>

        <integer>1970170734</integer>

        <key>IODisplayEDID</key>

        <data>

        AP///////wAAABcHAAAAAAoKAQEMHhe+6C3JoFdHmCcSSEwAAAABAQEBAQEBAQEBAQEB

        AQEBAAAA/gBTUlhGYWtlRURJRAogAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB

        AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAFo=

        </data>

        <key>default-resolution</key>

        <data>

        AAAFUAAAAxIAAAABACAAAA==

        </data>

        <key>scale-resolutions</key>

        <array>

                <data>

                AAAFUAAAAxIAAAABACAAAA==

                </data>

                <data>

                AAAHAAAABJwAAAABACAAAA==

                </data>

        </array>

</dict>

</plist>

 

as you can see in the screenshot the resolutions are not shown (even not when pressing the alt-key)

 

what am i doing wrong?

 

hope someone can help me with that.

 

Greetings

It stopped working for me too from the 10.8.3 through 10.9.* up to 10.10.2. They added new mechanisms to check the resolution overrides. They can't exceed, what the monitor reports as his maximum. 

Link to comment
Share on other sites

 Share

×
×
  • Create New...