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

Discussion in 'Mountain Lion Desktop Support' started by dta, Jul 27, 2012.

Thread Status:
Not open for further replies.
  1. dta

    dta

    Joined:
    May 6, 2012
    Messages:
    129
    Mobo:
    MSI Z77A-G43
    CPU:
    Core i7 3770K
    Graphics:
    Intel HD4000
    Mac:
    MacBook Pro
    Mobile Phone:
    iOS
    Jul 27, 2012 at 3:57 AM #1
    dta

    dta

    Joined:
    May 6, 2012
    Messages:
    129
    Mobo:
    MSI Z77A-G43
    CPU:
    Core i7 3770K
    Graphics:
    Intel HD4000
    Mac:
    MacBook Pro
    Mobile Phone:
    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 (Text):
    <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 (Text):
    <key>device-properties</key>
    <string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d006900640000000800000000006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>
    ig-platform-id: 01660001, Stolen RAM for FB: 96MB, Pipes: 3, Ports: 4, FBMem: 3
    Code (Text):
    <key>device-properties</key>
    <string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d006900640000000800000001006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>
    ig-platform-id: 01660002, Stolen RAM for FB: 64MB, Pipes: 3, Ports: 1, FBMem: 1
    Code (Text):
    <key>device-properties</key>
    <string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d006900640000000800000002006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>
    ig-platform-id: 01660003, Stolen RAM for FB: 64MB, Pipes: 2, Ports: 2, FBMem: 2
    Code (Text):
    <key>device-properties</key>
    <string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d006900640000000800000003006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>
    ig-platform-id: 01660004, Stolen RAM for FB: 32MB, Pipes: 3, Ports: 1, FBMem: 1
    Code (Text):
    <key>device-properties</key>
    <string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d006900640000000800000004006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>
    ig-platform-id: 01660008, Stolen RAM for FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3
    Code (Text):
    <key>device-properties</key>
    <string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d006900640000000800000008006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>
    ig-platform-id: 01660009, Stolen RAM for FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3
    Code (Text):
    <key>device-properties</key>
    <string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d006900640000000800000009006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>
    ig-platform-id: 0166000A, Stolen RAM for FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
    Code (Text):
    <key>device-properties</key>
    <string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d00690064000000080000000a006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>
    ig-platform-id: 0166000B, Stolen RAM for FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
    Code (Text):
    <key>device-properties</key>
    <string>7f0000000100000001000000730000000200000002010c00d041030a000000000101060000027fff04002c0000004100410050004c002c00690067002d0070006c006100740066006f0072006d002d00690064000000080000000b006601140000006800640061002d0067006600780000000d0000006f6e626f6172642d31</string>
    ig-platform-id: 01620005, Stolen RAM for FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
    Code (Text):
    <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 (Text):
    <?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>
     
  2. phillymavs32

    phillymavs32

    Joined:
    Jun 19, 2012
    Messages:
    68
    Mobo:
    Gigabyte Z77X-UD5H
    CPU:
    Intel Core i7-3770K
    Graphics:
    eVGA GTX970, HD4000
    Mac:
    MacBook, MacBook Pro
    Mobile Phone:
    iOS
    Jul 27, 2012 at 6:01 AM #2
    phillymavs32

    phillymavs32

    Joined:
    Jun 19, 2012
    Messages:
    68
    Mobo:
    Gigabyte Z77X-UD5H
    CPU:
    Intel Core i7-3770K
    Graphics:
    eVGA GTX970, HD4000
    Mac:
    MacBook, MacBook Pro
    Mobile Phone:
    iOS
    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
     
  3. Einsteiniac

    Einsteiniac

    Joined:
    Jun 8, 2012
    Messages:
    384
    Mobo:
    Asus X99-A
    CPU:
    5820K
    Graphics:
    GTX Titan X
    Mac:
    iMac, MacBook Air, MacBook Pro, Mac mini, Mac Pro
    Classic Mac:
    Classic, Color Classic, eMac, iBook, iMac, Performa, Power Mac, PowerBook, Quadra, Xserve
    Mobile Phone:
    iOS
    Jul 27, 2012 at 6:04 AM #3
    Einsteiniac

    Einsteiniac

    Joined:
    Jun 8, 2012
    Messages:
    384
    Mobo:
    Asus X99-A
    CPU:
    5820K
    Graphics:
    GTX Titan X
    Mac:
    iMac, MacBook Air, MacBook Pro, Mac mini, Mac Pro
    Classic Mac:
    Classic, Color Classic, eMac, iBook, iMac, Performa, Power Mac, PowerBook, Quadra, Xserve
    Mobile Phone:
    iOS
    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
     
  4. phillymavs32

    phillymavs32

    Joined:
    Jun 19, 2012
    Messages:
    68
    Mobo:
    Gigabyte Z77X-UD5H
    CPU:
    Intel Core i7-3770K
    Graphics:
    eVGA GTX970, HD4000
    Mac:
    MacBook, MacBook Pro
    Mobile Phone:
    iOS
    Jul 27, 2012 at 7:09 AM #4
    phillymavs32

    phillymavs32

    Joined:
    Jun 19, 2012
    Messages:
    68
    Mobo:
    Gigabyte Z77X-UD5H
    CPU:
    Intel Core i7-3770K
    Graphics:
    eVGA GTX970, HD4000
    Mac:
    MacBook, MacBook Pro
    Mobile Phone:
    iOS
    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
     
  5. Rortmanns

    Rortmanns

    Joined:
    Jun 4, 2012
    Messages:
    6
    Mobo:
    GA-Z77X-UD5H
    CPU:
    3770K
    Graphics:
    HD4000 and Quadro 5000
    Mac:
    iMac, MacBook Pro
    Mobile Phone:
    Other
    Jul 27, 2012 at 8:03 AM #5
    Rortmanns

    Rortmanns

    Joined:
    Jun 4, 2012
    Messages:
    6
    Mobo:
    GA-Z77X-UD5H
    CPU:
    3770K
    Graphics:
    HD4000 and Quadro 5000
    Mac:
    iMac, MacBook Pro
    Mobile Phone:
    Other
    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.
     
  6. dta

    dta

    Joined:
    May 6, 2012
    Messages:
    129
    Mobo:
    MSI Z77A-G43
    CPU:
    Core i7 3770K
    Graphics:
    Intel HD4000
    Mac:
    MacBook Pro
    Mobile Phone:
    iOS
    Jul 27, 2012 at 8:11 AM #6
    dta

    dta

    Joined:
    May 6, 2012
    Messages:
    129
    Mobo:
    MSI Z77A-G43
    CPU:
    Core i7 3770K
    Graphics:
    Intel HD4000
    Mac:
    MacBook Pro
    Mobile Phone:
    iOS
    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 (Text):
    <?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>
    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.
     
  7. dta

    dta

    Joined:
    May 6, 2012
    Messages:
    129
    Mobo:
    MSI Z77A-G43
    CPU:
    Core i7 3770K
    Graphics:
    Intel HD4000
    Mac:
    MacBook Pro
    Mobile Phone:
    iOS
    Jul 27, 2012 at 8:45 AM #7
    dta

    dta

    Joined:
    May 6, 2012
    Messages:
    129
    Mobo:
    MSI Z77A-G43
    CPU:
    Core i7 3770K
    Graphics:
    Intel HD4000
    Mac:
    MacBook Pro
    Mobile Phone:
    iOS
    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.
     
  8. phillymavs32

    phillymavs32

    Joined:
    Jun 19, 2012
    Messages:
    68
    Mobo:
    Gigabyte Z77X-UD5H
    CPU:
    Intel Core i7-3770K
    Graphics:
    eVGA GTX970, HD4000
    Mac:
    MacBook, MacBook Pro
    Mobile Phone:
    iOS
    Jul 27, 2012 at 8:49 AM #8
    phillymavs32

    phillymavs32

    Joined:
    Jun 19, 2012
    Messages:
    68
    Mobo:
    Gigabyte Z77X-UD5H
    CPU:
    Intel Core i7-3770K
    Graphics:
    eVGA GTX970, HD4000
    Mac:
    MacBook, MacBook Pro
    Mobile Phone:
    iOS
    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
     
  9. Rortmanns

    Rortmanns

    Joined:
    Jun 4, 2012
    Messages:
    6
    Mobo:
    GA-Z77X-UD5H
    CPU:
    3770K
    Graphics:
    HD4000 and Quadro 5000
    Mac:
    iMac, MacBook Pro
    Mobile Phone:
    Other
    Jul 27, 2012 at 8:56 AM #9
    Rortmanns

    Rortmanns

    Joined:
    Jun 4, 2012
    Messages:
    6
    Mobo:
    GA-Z77X-UD5H
    CPU:
    3770K
    Graphics:
    HD4000 and Quadro 5000
    Mac:
    iMac, MacBook Pro
    Mobile Phone:
    Other
    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.
     
  10. dta

    dta

    Joined:
    May 6, 2012
    Messages:
    129
    Mobo:
    MSI Z77A-G43
    CPU:
    Core i7 3770K
    Graphics:
    Intel HD4000
    Mac:
    MacBook Pro
    Mobile Phone:
    iOS
    Jul 27, 2012 at 9:35 AM #10
    dta

    dta

    Joined:
    May 6, 2012
    Messages:
    129
    Mobo:
    MSI Z77A-G43
    CPU:
    Core i7 3770K
    Graphics:
    Intel HD4000
    Mac:
    MacBook Pro
    Mobile Phone:
    iOS
    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 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 (Text):
    <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 (Text):
    "hda-gfx",
    Buffer (0x0A)
    {
        "onboard-1"
    }
     
Thread Status:
Not open for further replies.

Share This Page