Trying to get HD 4000 Graphics working on the Mountain Lion (10.8) hackintosh

Firstly, I wanted to get the Graphics acceleration working correctly, it took me a while to find a 65W Ivy Bridge CPU with HD4000, and if this doesn’t work correctly then the rest of the build is mostly useless. After a quick google search, and thanks to a great post by proteinshake on the insanelymac forums, I was able get the AAPL,ig-platform-id info, which I’ve since been able to flesh out with some more info.

There are two main drivers involved here, the first is AppleIntelFrameBufferCapri,kext, and this is responsible for driving the monitor, so if we’re getting no picture at all, this is the likely cause.

The Second is AppleIntelHD4000Graphics.kext which seems to be responsible for the Graphics Acceleration.

In order to trigger these, we need to inject a property into the DSDT tables. This property is called “AAPL,ig-platform-id” are there are 12 possible values, which relate to various Mac models that can use this chipset.

AAPL,ig-platform-id Model Assigned RAM Pipes Ports FB Mem
01 66 00 00  <unknown> 96MB 3 4 3
01 66 00 01  MacBookPro10,2 96MB 3 4 3
01 66 00 02  MacBookPro10,1 64MB 3 1 1
01 66 00 03  MacBookPro9,2 64MB 3 4 2
01 66 00 04  MacBookPro9,1 32MB 3 1 1
01 62 00 05  iMac13,1 (Edu) 32MB 2 3 2
01 62 00 06  iMac13,1 0MB 0 0 0
01 62 00 07  iMac13,2 0MB 0 0 0
01 66 00 08  MacBookAir5,1 64MB 3 3 3
01 66 00 09  MacBookAir5,2 64MB 3 3 3
01 66 00 0A  MacMini6,1 32MB 2 3 2
01 66 00 0B  MacMini6,2 32MB 2 3 2

The device propery is injected into DSDT in the IGPU (or GFX0) Section, and it looks something  like this:

Device (IGPU)
          {
          Name (_ADR, 0x00020000)
          Method (_DSM, 4, NotSerialized)
                    {
                    Store (Package (0x02)
                              {
                              &amp;quot;AAPL,ig-platform-id&amp;quot;,
                              Buffer (0x04)
                                       {
                                       0x05, 0x00, 0x62, 0x01
                                       }

                              }, Local0)
                     DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                     Return (Local0)
                     }
          }

I chose Platform ID 01620005, which seems to be for the low-end education model iMac using the processor’s HD4000 for its graphics. Also, my BIOS has the graphics memory locked at 64MB, so the first two platform ID types just crash. when using this my display gets detected on framebuffer @2…

displaydetected displayinfo…meaning that my Display gets detected on any of the ones that have 04 06 present.  Below is a table of which ports each platform ID is configured with. You’ll often see this referred to as a ‘connector table’

AAPL,ig-platform-id @0 @1 @2 @3
01 66 00 00 01 00 (LVDS) 02 05 (DisplayPort) 03 04 (DisplayPort) 04 06 (DisplayPort)
01 66 00 01 01 00 (LVDS) 02 05 (HDMI) 03 04 (DisplayPort) 04 06 (DisplayPort)
01 66 00 02 01 00 (LVDS)
01 66 00 03 05 03 (LVDS) 02 05 (DisplayPort) 03 04 (DisplayPort) 04 06 (DisplayPort)
01 66 00 04 05 03 (LVDS)
01 62 00 05 02 05 (DisplayPort) 03 04 (DisplayPort) 04 06 (DisplayPort)
01 62 00 06
01 62 00 07
01 66 00 08 01 00 (LVDS) 02 05 (DisplayPort) 03 04 (DisplayPort)
01 66 00 09 01 00 (LVDS) 02 05 (DisplayPort) 03 04 (DisplayPort)
01 66 00 0A 02 05 (DisplayPort) 03 04 (DisplayPort) 04 06 (HDMI)
01 66 00 0B 02 05 (DisplayPort) 03 04 (DisplayPort) 04 06 (HDMI)

Despite this tried and tested method, for some odd reason, on this All in One computer, the internal display just goes off! I had to take these screen shots via screen sharing on my MacBook. and yet I know this method works, and that it should be working normally here.

After a few months on and off (mostly off) I finally worked out what is going on, which i’ll put in my next post.