Jump to content
EMlyDinEsH

Guide for enabling VGA, DVI, DP and HDMI in Intel HD4000 GPU

Recommended Posts

I followed this guide and finally enabled HDMI audio output on an asus x301a laptop.

One promblem remains, if the external hdmi monitor is plugged in the internal lights up but no picture is displayed, both with extended and duplication monitor options. Any clue? This is what I did:

 

My system specs suggest hd4000 id 1660009 so I put that in the dsdt instead of 1660003

Then applied these patches:

for lvds internal video to work
AppleIntelFramebufferCapri 010000000200000030000000 to 050300000200000030000000

for hdmi and dvi (I don't really know if dvi in needed at all)
DVI
AppleIntelFramebufferCapri 020500000004000007010000 to 020500000008000006000000

HDMI
AppleIntelFramebufferCapri 030400000004000007010000 to 030400000008000006000000

HDMI audio now works. The only problem is that I don't get extended display. When I plug the HDMI external monitor the internal one lights up but no picture is displayed. Any clue?

Share this post


Link to post
Share on other sites

The mobile HiRes framebuffer 0x01660004 only carries 1 x output port by default (LVDS). It must therefore be patched to support additional video outputs and HDMI audio:
 
In the case of Sierra 10.12, the vanilla framebuffer 0x01660004 is defined as follows:

04006601 01030101 00000002     // 1 x display output port
00000001 00000060 10070000
10070000 00000000 60290400
00000000 00000000 00000000
05030000 02000000 30020000     // LVDS port
00000000 01000000 40000000
00000000 01000000 40000000
00000000 01000000 40000000
00000000 00000000 00000000

and, building on the patch for LoRes FB 0x01660003, it can be patched to this:

04006601 01020402 00000004     // /!\ patch: 4 x display output port
00000001 00000060 10070000     // *** unmodified ***
10070000 00000000 60290400     // *** unmodified ***
00000000 00000000 00000000     // *** unmodified ***
05030000 02000000 30020000     // *** unmodified *** LVDS
02050000 00080000 06000000     // /!\ patch: HDMI
03040000 00040000 81000000     // /!\ patch: DP/DVI (untested)
04060000 00040000 81000000     // /!\ patch: DP/DVI (untested)
00000000 00020011 00000000     // /!\ patch

:excl: The patch is not a mirror copy or copy/paste of the contents of the LoRes FB. In particular, it's critical leave the LVDS port definition unchanged (line 05030000...).
 
In a nutshell, the AppleIntelFramebufferCapri patch consists of:

Find:    040066010103010100000002
Replace: 040066010102040200000004

+

Find:    0503000002000000300200000000000001000000400000000000000001000000400000000000000001000000400000000000000000000000
Replace: 0503000002000000300200000205000000080000060000000304000000040000810000000406000000040000810000000000000000020011
  • Like 1

Share this post


Link to post
Share on other sites

Toleda's scripts were for Desktop layouts. But feel free to adapt the perl commands. But this is off-topic since the whole essence of this guide was to explain how to patch the Capri framebuffer.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...