Resolving the DP4 HDMI hang

People with a HDMI (only) display plugged-in at boot time, may run into a system hang with OS X 10.9 DP4 on Haswell systems. We here resolved this with a workaround – modified the PlatformInformation for one of the frame buffers:

03 00 22 0D 00 03 03 03 00 00 00 02 00 00 00 01
00 00 00 00 00 00 00 40 99 14 00 00 99 14 00 00
00 00 00 00 00 00 00 00 03 06 10 00 01 00 00 00
00 00 00 00 01 05 12 00 04 00 00 00 00 00 00 00
02 04 14 00 00 08 00 00 00 00 00 00 FF 00 01 00
01 00 00 00 40 00 00 00 02 00 00 00 01 01 00 00
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00

Apple is probably going to fix the HDMI problems in OS X 10.9 DP5 or with a Graphics Update for DP4 but until then this workaround can be used. Just give it a try and let us know if it works for your setup/motherboard as well. Thanks!

Did you notice what we did with the FB Index? Indeed. We removed the delays and changed the FB Index order to: 3, 1 and 2. This gives us port-number: 7, 5 and 6.

Adding a delay on the last framebuffer (used for HDMI here) changes the port-number from 6 to 0, but that isn’t causing us any problem. At least not here with our setups.

Update-1:

We now have a small bash script (AIFBAzul.sh) to patch platformInfo in AppleIntelFramebufferAzul.kext It is very easy to use and not only enables you to patch/replace platformInfo, but also to undo/restore a patch. All you need for this is to run AIFBAzul.sh with the same AAPL,ig-platform-id (see example below).

1.) Download AIFBAzul.
2.) Rename the file to AIFBAzul.sh (required due to a WordPress limitation).
3.) Change the data of: AAPL,ig-platform-id: 0x0d220003
4.) Open a terminal window and run: sudo ./AIFBAzul.sh 0x0d220003 replace
or: ./AIFBAzul.sh 0x0d220003 patch
5.) reboot

You can run: sudo ./AIFBAzul.sh 0x0d220003 restore
or: sudo ./AIFBAzul.sh 0x0d220003 undo
to restore/undo a patch.

You can run: sudo ./AIFBAzul.sh 0x0d220003 show
to get the platformInfo data:

AAPL,ig-platform-id: 0x0d220003 located @ 317368
————————————————
004d7b8: 0300 220d 0003 0303 0000 0002 0000 0001 ..”………….
004d7c8: 0000 0000 0000 0040 9914 0000 9914 0000 …….@……..
004d7d8: 0000 0000 0000 0000 0105 1200 0004 0000 …………….
004d7e8: 8700 0000 0204 1400 0004 0000 8700 0000 …………….
004d7f8: 0306 1000 0004 0000 1100 0000 ff00 0100 …………….
004d808: 0100 0000 4000 0000 0200 0000 0101 0000 ….@………..
004d818: 0400 0000 0000 0000 0000 0000 0000 0000 …………….
004d828: 0000 0000 0000 0000 ……..

Tip: Booting in single-user mode enables you to restore the platformInfo. For example, when a patch isn’t working for you.

The fun part is that people can now share patched platformInfo data, and all other people will have to do is to replace PATCHED_PLATFORM_INFO (in function initPatchedPlatformInfo) and run AIFBAzul.sh to patch their copy of AppleIntelFramebufferAzul.kext

Update-2:

We changed the script a little and now AIFBAzul v1.2 won’t call otool anymore. Please give v1.2 a try and let us know what you think of it. Feedback is welcome here 😉

Advertisements

14 thoughts on “Resolving the DP4 HDMI hang

  1. Hello Pikeralpha

    Where ist this “Platforminformation” ? is in a kext ? or where ?
    i will change this in blue color Numbers self, so that HDMI work in DP4.

    Thank you for detailed Help

  2. Where do I find these values ​​to edit?
    My Graphic card is a Geforce GT620 and its framebuffer no such
    key.
    only in AppleIntelFramebufferAzul.kext
    Anyone know how to change the ports for HDMI NVidia Geforce cards?

  3. Hi again, I’m willing to try the script but is there a boot flag that can get me past the hang? So I don’t have to get my whole PC out and unplug the HDMI? Maybe I can make it not use the DSDT or will -s work? Also will I have to change my ID to 0x0d220003 ? I don’t use a GPU just the integrated 4600 with HDMI. Thanks 🙂

  4. Hi Piker, can you helpme to get audio in a ga-z87x-ud5h (Haswell) for 10.8.4. I tried almost everything with AppleHDA. I read every week your blog, Your are awsome!!!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s