- Joined
- May 6, 2012
- Messages
- 120
- Motherboard
- MSI Z77A-G43
- CPU
- Core i7 3770K
- Graphics
- Intel HD4000
- Mac
-
- Classic Mac
-
- Mobile Phone
-
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
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
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
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):
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>