Jump to content
bcc9

Intel HD Graphics 4600 (Haswell) working displayport

190 posts in this topic

Recommended Posts

 

How i can find the value to patch and substitute in AppleIntelFramebufferAzul to show a correct Iris Pro ID instead of HD4600 (0412 to 0d22) in this capture ?

No need to change the device_id.  For some reason, the framebuffer defines the graphics. Using iMac14,1/Azul/Framebuffer/0x0300220D reports as Intel Iris Pro.  If you are using multiple displays the 0x0300220D edit above solves wake from sleep display and HDMI hot plug crash problems.

post-618506-0-67379000-1382653430_thumb.png

Share this post


Link to post
Share on other sites
Advertisement

All he is saying he has HD4600 model being injected by chameleon, but he wants Iris Pro string instead...

The names are hard coded into chameleon, so if one doesn't like them, there are a few choices
  • use dsdt injection instead of chameleon,
  • change the name in the chameleon source and recompile yourself,
  • update the ioregistry with another name after chameleon has run

Share this post


Link to post
Share on other sites

 

//    { 0x80860a16, "HD Graphics ???? Mobile" }, // Haswell-ULT Integrated Graphics Controller - AppleIntelHD5000Graphics.kext

 
I think this is the HD4400 device id. Has anyone tried it yet?

 

 

Yes, that's the ID of the HD 4400 on the Surface Pro 2, and I've had no luck getting it to work. The Azul FB kext will load, but AppleIntelHD5000Graphics.kext causes it to hang every time. I've been trying every ig-platform-id I can find with no success at all yet. This is using Clover, since Chameleon won't boot on a surface pro.

Share this post


Link to post
Share on other sites

I have a problem with my Intel 4600 (Dev ID 0416, Rev 6). I tried every single value of the inject and the only two values that allow boot is "02001604" and "0300220d", but both have graphics corruption, while the "0300220d" had QE/CI, but only when my TV is connected. If I go to sleep on that value, the corruption is gone and I still have QE/CI, but my laptop display is black. This makes me think that my internal display is causing the issue with both values. Anything you can help me with would be most appreciated.

Share this post


Link to post
Share on other sites

Yes, that's the ID of the HD 4400 on the Surface Pro 2, and I've had no luck getting it to work. The Azul FB kext will load, but AppleIntelHD5000Graphics.kext causes it to hang every time. I've been trying every ig-platform-id I can find with no success at all yet. This is using Clover, since Chameleon won't boot on a surface pro.

 

do you have any progress?

Share this post


Link to post
Share on other sites

You are a genius.  This may obsolete dsdt edits.  Here is your ssdt without Method DTGP.

DefinitionBlock ("iASLFLrPKE.aml", "SSDT", 1, "SaSsd", "SaSsdt", 0x00003000)
{
    External (_SB_.PCI0.GFX0, DeviceObj)

    Scope (\_SB.PCI0.GFX0)
    {
        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            If (LEqual (Arg2, Zero))
            {
                Return (Buffer (One)
                {
                     0x03
                })
            }

            Return (Package (0x04)
            {
                "AAPL,ig-platform-id", 
                Buffer (0x04)
                {
                     0x03, 0x00, 0x22, 0x0D
                }, 

                "hda-gfx", 
                Buffer (0x0A)
                {
                    "onboard-1"
                }
            })
        }
    }
}

Credit: PikeRAlpha Intel HD4600 with full resolution | Pike's Universum

Is there a reason to remove "DTGP" section? My MB (GA-Z87X-UD3H) DSDT does not have it at all.

 

Here what I have found:

DTGP method. You need to have it in your DSDT for many other fixes that inject some custom parameters for your devices. I put it above _WAK method, but it can defined be anywhere on the highest scope level (not inside any devices).

Share this post


Link to post
Share on other sites

Is there a reason to remove "DTGP" section? My MB (GA-Z87X-UD3H) DSDT does not have it at all.

Some people try to over-optimize their DSDT edits. In C programming, this is the equivalent of getting rid of a subroutine by instead copying the subroutine's logic to all the places where the subroutine was used.

 

This may save you a CPU cycle or two, but that time difference is not important here, thus I recommend using a standard method (subroutine) to handle injection, as in my example.

 

Yes your stock dsdt won't have an injection method as these are OSX specific operations.

Share this post


Link to post
Share on other sites

Can someone please help me with my graphics?

 

With GraphicsEnabler enabled "ioreg -lw0 -r -n GFX0" returns "AAPL, ig-platform-id=0c26000". System profiler names it Intel HD P4600/P4700 which is out commented in ErmaC's best answer (why?).

 

I tried to inject "0300220d" as "InjectIntel-ig" with chameleon. Injection seems to be successful as the ioreg command above shows me that value as ig-plattform-id after reboot. Although shouldn't it be flipped?

 

Unfortunately system profiler still names it P4600/P4700, no kexts are loaded and graphic is very shaggy in launchpad for example.

 

I have a Xeon E3-1245V3 (socket 1150) and I am using smbios for iMac 14,2.

Share this post


Link to post
Share on other sites
I want to know who makes the sound from the HDMI cable or not.

How do I find the developers. Mentioned But the result was not able to get sound out of HDMI cables.

Please anyone How to tell

THank to all   :D  :D 

Share this post


Link to post
Share on other sites

Dunno, my proposed patch sequences still work as of 10.9.2 beta. With Clover on the fly kext patching I haven't lifted a finger ever since I've posted here.

I try to install it several times. It does not work
I advise to you to help me.
Try the Clover Chameleon
Everything is fine
But not the sound through an HDMI cable as well.
Thanks everyone

Share this post


Link to post
Share on other sites

This is pretty much the only things necessary for HDMI audio to work on my H87-HD3 board.

1. Kext patches

 

 

	<key>KernelAndKextPatches</key>
	<dict>
		<key>KextsToPatch</key>
		<array>
			<dict>
				<key>Comment</key>
				<string>HDAU 0c0b -> 0c0c</string>
				<key>Name</key>
				<string>AppleHDAController</string>
				<key>Find</key>
				<data>CwwAAA==</data>
				<key>Replace</key>
				<data>DAwAAA==</data>
			</dict>
			<dict>
				<key>Comment</key>
				<string>HDAU 0a0c -> 0c0c</string>
				<key>Name</key>
				<string>AppleHDAController</string>
				<key>Find</key>
				<data>DAoAAA==</data>
				<key>Replace</key>
				<data>DAwAAA==</data>
			</dict>
		</array>
	</dict> 

 

 

 

2. ACPI patches (perhaps you need other igd-platform-id for your board). Note that here IGPU used to be called GFX0 and HDAU used to be called B0D3.

 

 

        Scope (\_SB.PCI0.IGPU)
        {
            Method (_DSM, 4, NotSerialized)
            {
                Store (Package ()
                    {
                        "AAPL,ig-platform-id", 
                        Buffer (0x04)
                        {
                            0x00, 0x00, 0x16, 0x0A
                        }, 

                        "device-id", 
                        Buffer (0x04)
                        {
                            0x16, 0x0A, 0x00, 0x00
                        }, 

                        "subsystem-id", 
                        Buffer (0x04)
                        {
                            0x1A, 0x01, 0x00, 0x00
                        }, 

                        "subsystem-vendor-id", 
                        Buffer (0x04)
                        {
                            0x6B, 0x10, 0x00, 0x00
                        }, 

                        "hda-gfx", 
                        Buffer (0x0A)
                        {
                            "onboard-1"
                        }
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }

        Scope (\_SB.PCI0.HDAU)
        {
            Method (_DSM, 4, NotSerialized)
            {
                Store (Package ()
                    {
                        "hda-gfx", 
                        Buffer (0x0A)
                        {
                            "onboard-1"
                        }
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }

 

 

Share this post


Link to post
Share on other sites

This is pretty much the only things necessary for HDMI audio to work on my H87-HD3 board.

1. Kext patches

 

 

	<key>KernelAndKextPatches</key>
	<dict>
		<key>KextsToPatch</key>
		<array>
			<dict>
				<key>Comment</key>
				<string>HDAU 0c0b -> 0c0c</string>
				<key>Name</key>
				<string>AppleHDAController</string>
				<key>Find</key>
				<data>CwwAAA==</data>
				<key>Replace</key>
				<data>DAwAAA==</data>
			</dict>
			<dict>
				<key>Comment</key>
				<string>HDAU 0a0c -> 0c0c</string>
				<key>Name</key>
				<string>AppleHDAController</string>
				<key>Find</key>
				<data>DAoAAA==</data>
				<key>Replace</key>
				<data>DAwAAA==</data>
			</dict>
		</array>
	</dict> 

 

 

 

2. ACPI patches (perhaps you need other igd-platform-id for your board). Note that here IGPU used to be called GFX0 and HDAU used to be called B0D3.

 

 

        Scope (\_SB.PCI0.IGPU)
        {
            Method (_DSM, 4, NotSerialized)
            {
                Store (Package ()
                    {
                        "AAPL,ig-platform-id", 
                        Buffer (0x04)
                        {
                            0x00, 0x00, 0x16, 0x0A
                        }, 

                        "device-id", 
                        Buffer (0x04)
                        {
                            0x16, 0x0A, 0x00, 0x00
                        }, 

                        "subsystem-id", 
                        Buffer (0x04)
                        {
                            0x1A, 0x01, 0x00, 0x00
                        }, 

                        "subsystem-vendor-id", 
                        Buffer (0x04)
                        {
                            0x6B, 0x10, 0x00, 0x00
                        }, 

                        "hda-gfx", 
                        Buffer (0x0A)
                        {
                            "onboard-1"
                        }
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }

        Scope (\_SB.PCI0.HDAU)
        {
            Method (_DSM, 4, NotSerialized)
            {
                Store (Package ()
                    {
                        "hda-gfx", 
                        Buffer (0x0A)
                        {
                            "onboard-1"
                        }
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }

 

 

Try to follow is that it does not work.

https://www.dropbox.com/s/i3dbt9hvk5yhkso/iMac%20%E0%B8%82%E0%B8%AD%E0%B8%87%20naiclub.ioreg

https://www.dropbox.com/s/3ogip60mmnkqy3p/bootlog_14-1-14-22.03.txt

Share this post


Link to post
Share on other sites

IOReg shows AppleHDAController patch is not present.

Hello toleda
I get advice from you toleda.
Links I follow your every simple aspects, it does not work.
How do again?
Thank you

Share this post


Link to post
Share on other sites

Screenshot+2014-01-16+13.29.25.png

Hello toleda
I have installed the link you sent me the results show that it works very well .
And the surprise is that code 0x03, 0x00, 0x22, 0x0D , this is not working. No audio over HDMI
I need to change the code, 0x00, 0x00, 0x16, 0x0A.
It works very well.
And use scripts with your 2 are as follows .
1.audio_hdmi_hd5K-hda-90_patch.command
2.audio_hdmi_hd5k-azul-90_patch.command
Note .. 
At first, I did this, it still does not work. I wonder about this or not. audio_hdmi_hd5K-hda-90_patch.command And understand how to fix it 0c0c.

Share this post


Link to post
Share on other sites

So essentially you repeated everything that I told you before...

2. You've used 0x0a160000 framebuffer which has default HDMI port-type for port @2 (same as my H87-HD3), so no extra framebuffer patch is required -> audio_hdmi_hd5k-azul-90_patch.command therefore not needed

3. You've applied the patches for AppleHDAController to make the non-apple codec appear as Apple's genuine codec -> audio_hdmi_hd5K-hda-90_patch.command

 

This clearly tells me you prefer automated things over of manual tampering, because you repeated exactly what I told you and it didn't work the first time round.

Share this post


Link to post
Share on other sites

So essentially you repeated everything that I told you before...

2. You've used 0x0a160000 framebuffer which has default HDMI port-type for port @2 (same as my H87-HD3), so no extra framebuffer patch is required -> audio_hdmi_hd5k-azul-90_patch.command therefore not needed

3. You've applied the patches for AppleHDAController to make the non-apple codec appear as Apple's genuine codec -> audio_hdmi_hd5K-hda-90_patch.command

 

This clearly tells me you prefer automated things over of manual tampering, because you repeated exactly what I told you and it didn't work the first time round.

I want to thank again 
Because they do not understand Makes delayed If your principle plus. audio_hdmi_hd5K-hda-90_patch.command since everything is finished. 
This is why no one made a concrete example to clear. I have to try to be so successful as expected.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By magneto5371
      Hello guys.
      I am setting up my first Hackintosh. Here are the specs:
       
      Mobo: Adlink M-342 with AMI Aptio 4 UEFI
      Intel i3 2120 SandyBridge
      4GB RAM
      500 GB SeaGate HDD
       
      So, here's the issue. The first part of the installation process works perfectly. At the end of the process, I am asked to perform a restart. I do that, it boots back to Clover. I select the HFS partition where I installed OSx, it loads for a while and then the screen goes blank.
      The only way I found so far to be able to boot to OSx is to set a FakeID in Clover's Graphics Injection menu. The only FakeID that works is this one:
      0x041680862 Which is not even a real FakeID. There is no other way, at the moment, to boot to OSx but this one, which is far from a perfect solution (the screen flickers every now and then and I cannot select resolutions different from 1024x768).
       
      I really need help on this. HD4600 is known to be fully compatible with OSx, so nobody else has ever had this issue before (apparently).
      Thanks for your help.
    • By Dmitry R
      Hi guys, 
       
      I've just faced with a strange problem of lacking QE/CI acceleration on a fresh 10.10.4 install on my Samsung NP900x3c, i7 ivy, HD4000, 1920x1080, ALC269VC, no dsdt patches, Clover 3259 bootloader. The thing is that with the same Clover config I can boot 10.9 and have full acceleration while 10.10 is booting but no QE/CI. Another thing is that 10.9 provides desktop and QE/CI only with the following ig-platform-id:  0x01660002 0x01660008 and 0x01660009, other ig-platform-id prevents 10.9 from booting, while 10.10 provides fully functional desktop with any ig-platform-id but no QE/CI at all
      I attached clover config, darwindump and ioreg of 10.10 Any help would be very much appreciated
       
      Thank you, Dmitry
      config.plist.zip
      Dmitry’s Samsung clover-only.zip
      DarwinDumper_2.9.8_Clover_X64_3259_Yos_dima.zip
    • By Austere.J
      After several weeks' work with @lisai9093, now it's time to post a guide.  
       
      GUIDE: Intel HD Graphics 5500 on OS X Yosemite 10.10.3  
       

       
      Before we get started:
       
      The basic idea to make Broadwell's integrated graphics card work does not change. If you have Intel HD Graphics 5300 or other IGPU models supported by AppleIntelBDWGraphicsFramebuffer.kext, you can try it by yourself.
       
      Brief Introduction:
       
      The basic idea to let Intel HD Graphics 5500 work is still injecting AAPL, ig-platform-id.
       
      However, Apple raised the minimum stolen memory in the AppleIntelBDWGraphicsFramebuffer binary of OS X Yosemite 10.10.3. Kernel panic will happen if the DVMT pre-allocated memory in BIOS settings is lower than 66MB. This is not a big deal for Desktop PCs users, because one can easily change the DVMT pre-allocated memory in BIOS.
       
      But this is catastrophic for laptop users, because
      (1) the default value of DVMT pre-allocated memory in most laptops BIOS is 32MB.
      (2) OEM will not unlock these advanced settings/menus for us.
      (3) We can try to modify BIOS but cannot pass the security check during flashing modified BIOS.
       
      Detailed Step-by-step guide:
       
      STEP 1: Check the current DVMT pre-allocated memory size.
      Open the Screen Resolution window, click the Advanced settings and check Dedicated Video Memory.
       

       
      After I played with changing DVMT pre-allocated memory in BIOS, the following pattern can be found.
      If Dedicated Video Memory = 0MB, then DVMT pre-allocated memory in BIOS settings is 32MB.
      If Dedicated Video Memory = 32MB, then DVMT pre-allocated memory in BIOS settings is 64MB.
      If Dedicated Video Memory = 64MB, then DVMT pre-allocated memory in BIOS settings is 96MB.
      If Dedicated Video Memory = 128MB, then DVMT pre-allocated memory in BIOS settings is 128MB.
       
      TABLES: Relationship between Dedicated Video Memory detected by OS and DVMT pre-allocated memory in BIOS settings.

      In general, if DVMT pre-allocated memory in BIOS settings is less or equal to 96MB, the StolenMemory that could be detected by OS is (DVMT - 32) MB.
      If DVMT pre-allocated memory in BIOS settings is larger or equal to 128MB, the StolenMemory that could be detected by OS is (DVMT) MB. (equal to the value of DVMT pre-allocated memory)
       
      Now let's come back to our main topic, Dedicated Video Memory >=64MB (i.e. DVMT pre-allocated memory >= 96MB) will pass the assertion/kernel panic.
      Note that OS X can not boot on some laptops if DVMT pre-allocated memory is >= 128MB.
      Therefore, if your current DVMT pre-allocated memory size <= 64MB (i.e. Dedicated Video Memory <= 32MB), you can either choose using our patch in STEP 2.1 or changing DVMT pre-allocated setting in STEP 2.2
       
      STEP 2.1: Apply the patch to pass the Stolen Memory assertion.
       
      We need to patch AppleIntelBDWGraphicsFramebuffer binary file.
      Find 39CF763C and replace it with 39CF773C.
       
      After using this patch, in theory you don't have to change your BIOS settings. You can try to inject ig-platform-id and see what happens.
      If you encounter some problems, try to modify Framebuffer data in AppleIntelBDWGraphicsFramebuffer binary.
      Detailed information on Broadwell's framebuffer can be found on this page.
       
      STEP 2.2: Using EFI Shell to change DVMT settings in BIOS.
       
      (1) Prepare a bootable USB drive with EFI Shell
      Prepare a USB stick and format it with FAT32 filesystem.
      Download this EFI shell and you can find a folder named BOOT after extracting.
      Copy this BOOT folder to your USB stick.
       
      (2) Dump/Fetch a completed BIOS file.
      You can use specific BIOS utility to save a copy of your BIOS on Desktop.
      e.g. For AMI Aptio UEFI BIOS, you can use AMI BIOS Utility.
       
      (3) Extract BIOS Settings from a BIOS file.
      Download UEFITools from https://github.com/LongSoft/UEFITool/releases
      Open your BIOS file with UEFITools.
      Find the module labeled with Setup and extract the PE32 image section in this module as a binary file.
       

       
      Now, you will have a binary file on your Desktop. In my case, I name it Setup.bin.
      Next, download the Universal IFR Extractor (Windows version only) from http://donovan6000.blogspot.ca/2014/02/universal-ifr-extractor.html or from here: Universal IFR Extractor.exe.
       
      Open the Universal IFR Extractor in Windows, open the binary you just extracted from UEFITools and click Extract to save the BIOS settings in plain text format.

       
      Now open the extracted setup IFR.txt and find the keyword "DVMT".
      And you can find the variable representing DVMT pre-allocated memory and its values.
       

       
      In this case, DVMT pre-allocated memory's variable is 0x1C3. The value of 96MB is 0x3. Record these two values.
      Next, restart your computer and boot from the USB drive with EFI Shell.
      Here, we use setup_var command to change our BIOS settings.
      syntax: setup_var address value OK, now type the command in EFI shell.
      In this case, the command is setup_var 0x1C3 0x3. (Change the value of 0x1C3 to 0x3, which means changing the DVMT to 96MB.)
      After changing the DVMT pre-allocated memory, go back to Windows and double check whether your current Dedicated Video Memory is 64MB. (96 - 32 = 64MB)
      STEP 3: Injecting AAPL, ig-platform-id
      You can use either Clover or DSDT/SSDTs to inject AAPL, ig-platform-id.
       
      If you want to use Clover, let InjectIntel = True and ig-platform-id=0x16160002.
       
      If you want to use DSDT/SSDT to inject AAPL, ig-platform-id, 0x16160002 is working fine.
      Then open your DSDT, find Device (GFX0) or Device (IGPU) or Name (_ADR, 0x00020000) and add the Device-Specific Method.
      Method (_DSM, 4, NotSerialized) { If (LEqual (Arg2, Zero)) { Return (Buffer (One) { 0x03 }) } Return (Package (0x08) { "device-id", Buffer (0x04) { 0x16, 0x16, 0x00, 0x00 }, "AAPL,ig-platform-id", Buffer (0x04) { 0x02, 0x00, 0x16, 0x16 }, "model", Buffer (0x17) { "Intel HD Graphics 5500" }, "hda-gfx", Buffer (0x0A) { "onboard-1" } }) } Place your DSDT in /EFI/Clover/ACPI/Patched/
      Restart your computer and you will find Intel HD Graphics 5500 is working now.
       
      Some Issues you may encounter:
      (1) Garbled Screen Issue
      Enable Legacy Support in your BIOS settings.
       
      (2) Screen Freeze Issue (GPU hang and restart)
      Using FakeSMC 5.3.820 or other 5.x.xxx version will decrease the opportunity to freeze.
      (Note that please delete CPUSensors.kext from FakeSMC.kext if you get kernel panic related to CPUSensors.kext)
       
      Reference and Special Thanks:
      Thanks to Rehabman for his advice on garbled screen issue.
      Thanks to nguyenmac for his clues on freeze issue.
      Thanks to sontrg for his direction to BIOS modification.
      Thanks to Google for providing information. Thanks to the-darkvoid for his QHD+ Guide on HD4600.
×