Contribute
Register

Closed Thread: For FYI only > [GUIDE] 10.8 / How to enable HD4000

Status
Not open for further replies.

dta

Joined
May 6, 2012
Messages
120
Motherboard
MSI Z77A-G43
CPU
Core i7 3770K
Graphics
Intel HD4000
Mac
  1. MacBook Pro
Classic Mac
  1. 0
Mobile Phone
  1. iOS
This thread is closed as the current versions of Chameleon/Chimera have made the solutions in the original posts unnecessary.




Update1: More detailed explanation and EFI-strings for all different configurations
Update2: Added working configurations from other users and general tips; Added Graphics Mode to Chimera method

Note: As there is no information on how exactly Chimera 1.11 does its automatic HD4000 injection (what platform-ids it uses or how we can manually change platform-ids) the results are somewhat unpredictable and troubleshooting is pretty hard. At the time of writing I wouldn't recommend GraphicsEnabler=yes but rather use manual EFI-string injection because you have more control and it is pretty easy to do. This is until MacMan or someone else tells us how to do the same with Chimera.


So let's get going.

First I'd like to say that I haven't figured this out, the information has been there for quite a while. Credits to ElNono for finding AAPL,ig-platform-id and to proteinshake for figuring out how to use it. There also have been a lot more people involved, thanks for your help.

Now there are three ways how to do it, automatically with Chimera 1.11, manual EFI-string injection or DSDT edits. I will explain Chimera method as well as EFI-string injection because those are the easiest.

First here are some general tips and working configurations from other users:

DVI port seems to be working best. A few users are reporting issues when connecting to HDMI port. VGA port seems not to be working at all. If you are using anything different than 7-series chipset you probably need some additional DSDT edits.

GA Z77X-UD5H:
Try Chimera method, most users have reported that it's working for them.
If you are using two displays, martijnr has reported that Chimera doesn't work for him, instead he is using EFI-string with 01660000 or 01660001.

GA Z77X-UP5 TH:
Try using EFI-string injection with 01620005 and only use the bottom thunderbolt port when connecting via thunderbolt. Otherwise use DVI, HDMI hasn't been tested yet, but could be working. Also make sure that you are setting your screen resolution with Graphics Mode in org.chameleon.Boot.plist (thanks to Einsteiniac)

MSI Z77A-G43:
This is what I am using. EFI-string with 01620005 and Graphics Mode set in org.chameleon.Boot.plist. DVI, HDMI, Sleep and switching resolutions working.


1. Chimera 1.11 method

Chimera is injecting the needed properties to load up HD4000 kexts automatically for you, simply set

Code:
<key>GraphicsEnabler</key>
<string>yes</string>
<key>Graphics Mode</key>
<string>1680x1050x32</string>

in your org.Chameleon.Boot.plist and edit the resolution so that it matches your monitor. The Graphics Mode key might not be necessary, but some users have reported that it fixed an issue with scrambled output for them.

Next go to your BIOS and change your settings for integrated graphics. Set DVMT memory size to MAX and "Internal Graphics Memory Size" (could be titled differently in your BIOS) to 64MB. This step is really important! Not setting correct graphics memory size leads to graphics errors.

Intel uses Dynamic video memory technology (DVMT) which means that it automatically sets the VRAM size according to the amount of RAM you have installed. Setting it to MAX results in always using the maximum available memory (cap is 512MB). It looks like OSX doesn't care about what you set for DVMT because it always uses the maximum amount of memory but it's best to set it to MAX. What OSX cares about is the "Internal Graphics Memory Size" which is the initial memory it should be using. This has to be matched with the driver configuration otherwise graphics errors or instability could occur.


2. EFI-string injection:

If the above is not working for you, I recommend to you to use EFI-string injection. Here is some background knowledge first:

To enable HD4000 we have to inject a property called "AAPL,ig-platform-id" which sets the driver configuration (amount of initial memory, number of ports etc.). This is exactly what Chimera does automatically for you when setting GraphicsEnabler=yes. However, as it turns out automatic injection isn't working for everyone.

Thanks to ElNono we know those different platform-ids:

ig-platform-id: 01660000, Stolen RAM for FB: 96MB, Pipes: 3, Ports: 4, FBMem: 3
ig-platform-id: 01660001, Stolen RAM for FB: 96MB, Pipes: 3, Ports: 4, FBMem: 3
ig-platform-id: 01660002, Stolen RAM for FB: 64MB, Pipes: 3, Ports: 1, FBMem: 1
ig-platform-id: 01660003, Stolen RAM for FB: 64MB, Pipes: 2, Ports: 2, FBMem: 2
ig-platform-id: 01660004, Stolen RAM for FB: 32MB, Pipes: 3, Ports: 1, FBMem: 1
ig-platform-id: 01660008, Stolen RAM for FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3
ig-platform-id: 01660009, Stolen RAM for FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3
ig-platform-id: 0166000A, Stolen RAM for FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
ig-platform-id: 0166000B, Stolen RAM for FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
ig-platform-id: 01620005, Stolen RAM for FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2

As you can see they all are using different settings, for VRAM, pipes, ports etc. One of these configurations could work for your mainboard but you have to find out which one. The ones starting with 0166 are for mobile Ivy Bridge and the ones starting with 0162 for desktop (there is only one). But it turns out OSX doesn't care that much if you are using mobile or desktop, so you could try them all.

What seems to matter most are port configuration (try ones that match your number of video ports) and RAM settings. It is absolutely crucial here to set your graphics memory size to match your ig-platform-id configuration! So if it says "Stolen RAM for FB: 96MB", set it to 96MB in BIOS. Your graphics memory size is NOT DVMT memory size. Always set DVMT to MAX.

If you don't know which platform-id you should try:

- 01620005 is usually a good starting point because it matches desktop Ivy Bridge and uses 3 ports (a common configuration)
- 01660009 is what Chimera seems to be using with GraphicsEnabler=yes on most systems
- Try to avoid configurations with only 1 or 2 ports

For other recommendations look at the top of this guide. We have working configurations for GA Z77X-UD5H, GA Z77X-UP5 TH, MSI Z77A-G43.

Now how to inject it:

Put one (only one, you can't use multiple device-property keys!) of the following lines into your org.chameleon.Boot.plist:

ig-platform-id: 01660000, Stolen RAM for FB: 96MB, Pipes: 3, Ports: 4, FBMem: 3
Code:
<key>device-properties</key>
<string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d006900640000000800000000006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>

ig-platform-id: 01660001, Stolen RAM for FB: 96MB, Pipes: 3, Ports: 4, FBMem: 3
Code:
<key>device-properties</key>
<string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d006900640000000800000001006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>

ig-platform-id: 01660002, Stolen RAM for FB: 64MB, Pipes: 3, Ports: 1, FBMem: 1
Code:
<key>device-properties</key>
<string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d006900640000000800000002006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>

ig-platform-id: 01660003, Stolen RAM for FB: 64MB, Pipes: 2, Ports: 2, FBMem: 2
Code:
<key>device-properties</key>
<string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d006900640000000800000003006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>

ig-platform-id: 01660004, Stolen RAM for FB: 32MB, Pipes: 3, Ports: 1, FBMem: 1
Code:
<key>device-properties</key>
<string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d006900640000000800000004006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>

ig-platform-id: 01660008, Stolen RAM for FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3
Code:
<key>device-properties</key>
<string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d006900640000000800000008006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>

ig-platform-id: 01660009, Stolen RAM for FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3
Code:
<key>device-properties</key>
<string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d006900640000000800000009006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>

ig-platform-id: 0166000A, Stolen RAM for FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
Code:
<key>device-properties</key>
<string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d00690064000000080000000a006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>

ig-platform-id: 0166000B, Stolen RAM for FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
Code:
<key>device-properties</key>
<string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d00690064000000080000000b006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>

ig-platform-id: 01620005, Stolen RAM for FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
Code:
<key>device-properties</key>
<string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d006900640000000800000005006201140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>

Addendum:

If anyone is interested, this is what I used as plist to convert to hex string with gfxutil. It also includes HDMI audio fix (but you still have to apply a fix to your HDEF device in DSDT):

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>PciRoot(0x0)/Pci(0x2,0x0)</key>
  <dict>
    <key>AAPL,ig-platform-id</key>
    <string>0x01620005</string>
    <key>hda-gfx</key>
    <string>onboard-1</string>
  </dict>
</dict>
</plist>
 
thank you for making it understandable. I'm installing xcode right now, because the first few steps did not work. my chameleon already had graphicsenabler to yes and Internal Graphics were already set to 64 as well
 
DTA

I have my HD4000 Enabled using Chimera. Now I have noticed some oddness and maybe you can tell me if you experience this too. For some reason the very first boot after install 1.11.0 everything was golden. The next restart it gets the grey apple then when it goes to load the desktop the screen freaks out like the monitor was set to a resolution out of range. I then have to unplug my monitor and replug in and it all works again. If I set my res with Graphics Mode I don't have this problem. The problem I do have however is that anytime the resolution changes to something different than what I set the screen turns black and I have to hook up a different monitor on a different port and reset it all.

This is troublesome for me as a game I play changes the resolution on boot up causing havoc.

Do you know if injecting the string and then disabling Graphics Mode and GE resolves my above issue?

Also how do you get 01620005 out of that EFI string. I am not saying its wrong I am just wondering how one figures that out? Is it going to be different for every board/processor?

Mark
 
adding the string got it to work. But I tried to do 720p and now my screen looks like a broken nintendo game. I don't really know how to select anymore settings because I can't see anything
 
Issue with max Res of 1024x768

Has anyone else had the issue of max res of 1024 x 768? I cant seem to find a way to change it. It is the same on Displayport and DVI.
 
DTA

I have my HD4000 Enabled using Chimera. Now I have noticed some oddness and maybe you can tell me if you experience this too. For some reason the very first boot after install 1.11.0 everything was golden. The next restart it gets the grey apple then when it goes to load the desktop the screen freaks out like the monitor was set to a resolution out of range. I then have to unplug my monitor and replug in and it all works again. If I set my res with Graphics Mode I don't have this problem. The problem I do have however is that anytime the resolution changes to something different than what I set the screen turns black and I have to hook up a different monitor on a different port and reset it all.

This is troublesome for me as a game I play changes the resolution on boot up causing havoc.

Do you know if injecting the string and then disabling Graphics Mode and GE resolves my above issue?

Also how do you get 01620005 out of that EFI string. I am not saying its wrong I am just wondering how one figures that out? Is it going to be different for every board/processor?

Mark

I just checked and switching resolutions is working for me. I'm using the efi-string injection. What port are you using on your board? HDMI?

You get the EFI string by converting a .plist file to hex with a tool called gfxutil. It is not different for board/processor. This is how the plist looks:

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>PciRoot(0x0)/Pci(0x2,0x0)</key>
  <dict>
    <key>AAPL,ig-platform-id</key>
    <string>0x01620005</string>
  </dict>
</dict>
</plist>

adding the string got it to work. But I tried to do 720p and now my screen looks like a broken nintendo game. I don't really know how to select anymore settings because I can't see anything

What port are you using? HDMI? DVI? Also if you are using my efi string above make sure that VRAM is set to 32MB in BIOS, not 64MB.
 
Has anyone else had the issue of max res of 1024 x 768? I cant seem to find a way to change it. It is the same on Displayport and DVI.

Sounds like HD4000 kext is not loaded. Does it say Intel HD Graphics 4000 on your About this mac? You can also check in system profiler > software > extensions. You should see AppleIntelHD4000Graphics, otherwise it is not loaded.
 
i'm using HDMI.. I managed to fix it by going to safe mode, then rebooting. I have it on 32MB.. The resolution has to stay on 1360x768 to work. My only problem now is that I noticed when looking at videos, it will stall, you move the cursor it will play and stop again. I'll figure that out later, I guess. I want to focus on somehow getting audio from HDMI
 
Sounds like HD4000 kext is not loaded. Does it say Intel HD Graphics 4000 on your About this mac? You can also check in system profiler > software > extensions. You should see AppleIntelHD4000Graphics, otherwise it is not loaded.

Yep, you are correct. Can you tell me how to get it to load the HD4000 kext? Thanks a lot for the help. I thought with built in support this would be really easy.

This was all so much easier on my MacBook.
 
To all of you who are getting completely scrambled output when switching resolutions. Just tried the first method with Chimera 1.11 and GraphicsEnabler=yes and I'm also getting a complete mess when switching resolutions. So a fix for you could be using the efi string.

i'm using HDMI.. I managed to fix it by going to safe mode, then rebooting. I have it on 32MB.. The resolution has to stay on 1360x768 to work. My only problem now is that I noticed when looking at videos, it will stall, you move the cursor it will play and stop again. I'll figure that out later, I guess. I want to focus on somehow getting audio from HDMI

I can't test this on my own system because I don't have a HDMI display, but here is the efi string with fix for HDMI audio included. I would be glad if you could give it a try:

Code:
<key>device-properties</key>
<string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d006900640000000800000005006201140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>

This is ig-platform-id 01620005 again with the key "hda-gfx":"onboard-1" added.

I don't know if it is enough injecting this into HD4000, you might also have to add something like this to your HDEF device in DSDT:

Code:
"hda-gfx", 
Buffer (0x0A)
{
    "onboard-1"
}
 
Status
Not open for further replies.
Back
Top