Jump to content

how to find correct "ig_platform_id" of my video card


truztruz
 Share

119 posts in this topic

Recommended Posts

Yes, I editedFramebufferAzul.kext and AppleIntelHD5000Graphics.kext. (how can I find other kext that should be eventually modified) ?

Check your work and/or system.log. For some reason it is not loading. Could just be not supported (binary patch required?)...

 

I dont' understand the meaning of "or in your case, likely one of the SSDTs" in your previous message. What should I do?

Your GFX0 device is not in DSDT, so it must be in one of the OEM SSDTs (very common with Haswell machines).

 

Looking into console I found this warning:

 

"Invalid signature -67030 0xFFFFFFFFFFFEFA2A for kext "/System/Library/Extensions/AppleIntelFramebufferAzul.kext". Is this important?

Normal result from modifying system kexts as the signature is no longer valid, but I'm surprised you don't get it for AppleIntelHD5000Graphics.kext as you say you modified it.

 

I was also trying to inject id via efistring.

 

Here is an example:

 

 

 

<?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>0x0d220003</string>

    <key>hda-gfx</key>

    <string>onboard-1</string>

  </dict>

</dict>

</plist>

 

 

What do you suggest me to try to modify or add in this code?

For me, injecting via DSDT/SSDT is so much easier than using gfxutil and device-properties...
Link to comment
Share on other sites

Could you please give me an example of DSDT/SSDT injection and values that I should use to make some attempts?

 

:help:

You would need to extract all your DSDT/SSDTs from Linux (or Windows). Then look for the SSDT with GFX0 device definition (search for 'Device (GFX0)'). It is best to disassemble DSDT/SSDTs as a group. Put them in a single directory and use 'iasl -da *' to disassemble all to .DSL. Then apply a patch to the SSDT with GFX0 such as the one that follows:

 

into method label _DSM parent_adr 0x00020000 remove_entry;
into device name_adr 0x00020000 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
        "device-id", Buffer() { 0x16, 0x0a, 0x00, 0x00 },\n
    })\n
}\n
end;
0x0a16 is the device-id for HD4000 mobile. You could try other ids (eg. ones for HD4600 etc.).

 

Then place the patched SSDT in a place where it will load. If using Chameleon, SSDTs are loaded SSDT.aml, SSDT-1.aml, SSDT-2.aml, etc, stopping when it doesn't find the file... so SSDTs must be named sequentially with no gaps. All files must be saved as format: ACPI Machine Language Binary. Use MaciASL.

Link to comment
Share on other sites

You would need to extract all your DSDT/SSDTs from Linux (or Windows). Then look for the SSDT with GFX0 device definition (search for 'Device (GFX0)'). It is best to disassemble DSDT/SSDTs as a group. Put them in a single directory and use 'iasl -da *' to disassemble all to .DSL. Then apply a patch to the SSDT with GFX0 such as the one that follows:

 

into method label _DSM parent_adr 0x00020000 remove_entry;

into device name_adr 0x00020000 insert

begin

Method (_DSM, 4, NotSerialized)\n

{\n

If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n

Return (Package()\n

{\n

"device-id", Buffer() { 0x16, 0x0a, 0x00, 0x00 },\n

})\n

}\n

end;

0x0a16 is the device-id for HD4000 mobile. You could try other ids (eg. ones for HD4600 etc.).

 

Then place the patched SSDT in a place where it will load. If using Chameleon, SSDTs are loaded SSDT.aml, SSDT-1.aml, SSDT-2.aml, etc, stopping when it doesn't find the file... so SSDTs must be named sequentially with no gaps. All files must be saved as format: ACPI Machine Language Binary. Use MaciASL.

 

 

Hi RehabMan,

 

I've extracted all SSDT'S but I am not able to apply the patch. (Ssdt with GFX0 is attached).

Could you patch it for me? Sorry but I am a newbie. 

 

Thank you again.

SSDT-7.aml.zip

Link to comment
Share on other sites

Not with the files you provided. Note the instructions require disassembly of all files at once. Post all files extracted from Linux and I'll see what the issue is.

Link to comment
Share on other sites

Hi RehabMan,

 

I've extracted all SSDT'S but I am not able to apply the patch. (Ssdt with GFX0 is attached).

Could you patch it for me? Sorry but I am a newbie. 

 

Thank you again.

I don't see any issue. I was able to follow my own instructions from post #28 without any problem.

Link to comment
Share on other sites

Bad news here, still same problem.

 

 

AppleIntelFramebufferAzul.kext is loaded.

AppleIntelHD5000Graphics.kext is not loaded.

 

What could be the problem? Injection seems to work  :(

No ideas without ioreg showing the result.

Link to comment
Share on other sites

ioreg attached

You seem to have no patched DSDT/SSDT files installed to /Extra.

 

From your bootlog:

ACPI Table not found: DSDT.aml
ACPI Table not found: HPET.aml
ACPI Table not found: SBST.aml
ACPI Table not found: ECDT.aml
ACPI Table not found: ASFT.aml
ACPI Table not found: DMAR.aml
ACPI Table not found: APIC.aml
ACPI Table not found: MCFG.aml
ACPI Table not found: SSDT.aml
FADT: ACPI Restart Fix applied!
Bootloader stops looking for SSDTs when it does not find the first one. That is, it will search for SSDT.aml and stop if it does not find it. In that case, it will never make an attempt to look for ssdt-1.aml. SSDTs must be named sequentially, starting SSDT.aml, next SSDT-1.aml, next SSDT-2.aml, etc.

 

Also, you must use DropSSDT=Yes to enable replacement of OEM SSDTs.

Link to comment
Share on other sites

I attached 2 ioregs.

 

one is with injection of original HD4400 id (041e)

 

the second one is with injection of HD4600 desktop id (0412)  

 

still AppleIntelHD5000Graphics.kext is not loaded.

 

 

Why are there nine SSDTs loaded? Try using Chameleon, enoch is bad when it comes to logging useful information to bootlog. Boot "-f" with Chameleon.

 

iMac8,1 is not appropriate for your hardware. Use Haswell-era smbios.

Link to comment
Share on other sites

Try this ig-platform-id's:

00 00 06 04
04 00 12 04

00 00 16 04

00 00 26 04

 

Try the "04 00 12 04" first

 

If you dont know how to insert into DSDT see this example:

Method (_DSM, 4, NotSerialized)
            {
                If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }
                Return (Package()
                {
                    "AAPL,ig-platform-id", Buffer() { 0x04, 0x00, 0x12, 0x04 },
                    "hda-gfx", Buffer() { "onboard-1" },
                    "AAPL00,DualLink", Buffer() { 0x01, 0x00, 0x00, 0x00 }
                })
            }

If you inject via Clover, Swap the ID's:

0x04060000

0x04120004

0x04160000

 

0x04260000

 

But Warning: !!!! Clover ig-platform-id injection doesn't work always! !!!!

Better is the DSDT way above!

 

PS: Just to mention, if one of the above id's will not work for you, you will never be able to get you Desktop HD4400 Running!

This are the only one possible ID's!

 

Cheers :-)

Link to comment
Share on other sites

Try this ig-platform-id's:

00 00 06 04

04 00 12 04

00 00 16 04

00 00 26 04

 

Try the "04 00 12 04" first

 

If you dont know how to insert into DSDT see this example:

Method (_DSM, 4, NotSerialized)
            {
                If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }
                Return (Package()
                {
                    "AAPL,ig-platform-id", Buffer() { 0x04, 0x00, 0x12, 0x04 },
                    "hda-gfx", Buffer() { "onboard-1" },
                    "AAPL00,DualLink", Buffer() { 0x01, 0x00, 0x00, 0x00 }
                })
            }
If you inject via Clover, Swap the ID's:

0x04060000

0x04120004

0x04160000

 

0x04260000

 

But Warning: !!!! Clover ig-platform-id injection doesn't work always! !!!!

Better is the DSDT way above!

 

PS: Just to mention, if one of the above id's will not work for you, you will never be able to get you Desktop HD4400 Running!

This are the only one possible ID's!

 

Cheers :-)

 

Current ioreg is using 03 00 22 0d. (IntelAzulFB=5, I think).

 

Trying different values is always a good idea. But first need to get SSDT/bootloader/smbios mess cleaned up.

  • Like 1
Link to comment
Share on other sites

I copied all ssdt files in my extra folder (from ssdt.aml to ssdt-8.aml) so there are 9 ssdt file (Is it wrong)?

 

Should I try these ig-platform-id's using original 041e HD4400 device id or 0412 HD4600 id?

 

These paltform id are device id dependent? Should be changed if using different device id's?

 

Is it necessary to use graphicsenable and IGPenable in boot.plist?

 

Thank you for your help !

Link to comment
Share on other sites

I copied all ssdt files in my extra folder (from ssdt.aml to ssdt-8.aml) so there are 9 ssdt file (Is it wrong)?

 

Should I try these ig-platform-id's using original 041e HD4400 device id or 0412 HD4600 id?

 

These paltform id are device id dependent? Should be changed if using different device id's?

 

Is it necessary to use graphicsenable and IGPenable in boot.plist?

 

Thank you for your help !

You only really need SSDT-7.aml patched (and maybe SSDT-8 unmodified), then copied as /Extra/ssdt-1.aml.

 

I say ssdt-1.aml, because usually you have /Extra/ssdt.aml generated from ssdtPRgen.sh for power management.

I would recommend you implement power management correctly before trying to make HD4400 work...

 

And part of power management is getting a correct smbios in place (haswell... iMac14,2 MacBookAir6,2 or MacBookPro11,2). For a desktop, I'd probably use iMac14,2.

 

After you have correct power management, correct smbios, and patched ssdt-1.aml in place, then you can start to experiment with ig-platform-id values.

 

IGPEnabler is specific to Chimera. Not used for Chameleon.

GraphicsEnabler=Yes is necessary to inject using Chameleon flags (IntelAzulFB, InjectIntel-ig)

 

See here for more information on injecting ig-platform-id with Chameleon: http://www.insanelymac.com/_/osx86/intel-hd4000-and-haswell-inject-aaplig-platfor-r1005

 

To inject the value proposed by Ramalama use:

GraphicsEnabler=Yes InjectIntel-ig=04001204

  • Like 1
Link to comment
Share on other sites

Current ioreg is using 03 00 22 0d. (IntelAzulFB=5, I think).

 

Trying different values is always a good idea. But first need to get SSDT/bootloader/smbios mess cleaned up.

 

yes, but 03 00 22 0d is for iris5200...

This would definitive not work for them with hd4400...

Because the ports are different connected, 40MPU's instead of 20 and 128mb edram, thats not exists on any other graphics except 5200...

 

Cheers :-)

  • Like 1
Link to comment
Share on other sites

yes, but 03 00 22 0d is for iris5200...

 

This would definitive not work for them with hd4400...

Because the ports are different connected, 40MPU's instead of 20 and 128mb edram, thats not exists on any other graphics except 5200...

 

Cheers :-)

I wasn't stating that the correct value was used. I was just stating what value is in ioreg and is currently being used. It is up to truztruz to try different values... I don't have the hardware to test anything.

 

Definitely trying that ID is a good idea...

Link to comment
Share on other sites

I say ssdt-1.aml, because usually you have /Extra/ssdt.aml generated from ssdtPRgen.sh for power management.

I would recommend you implement power management correctly before trying to make HD4400 work...

 

 

I have no SSDT file in extra folder (except those I copied in) (what is ssdt.aml generated from ssdtPRgen.sh)?

How can I implement power management correctly?

 

 

Ramalama said:

Because the ports are different connected, 40MPU's instead of 20 and 128mb edram, thats not exists on any other graphics except 5200...

 

 

Ramalama, these id's should be tried using original 041e HD4400 device id or 0412 HD4600 id ?

There are some kext that should be modified in order to trick injection of HD4400 video card?

(strange thing that intelframebufferazul kext is loaded but not Appelintelhd5000 kext, in both info.plist I added HD4400 device id)

 

Thanks to all

Link to comment
Share on other sites

I have no SSDT file in extra folder (except those I copied in)

 

 (what is ssdt.aml generated from ssdtPRgen.sh)?

How can I implement power management correctly?

Use search, I'm certain there is a thread explaining how to do it here... Start with correct smbios.

 

 

 

 

Ramalama said:

 

Because the ports are different connected, 40MPU's instead of 20 and 128mb edram, thats not exists on any other graphics except 5200...

 

 

 

Ramalama, these id's should be tried using original 041e HD4400 device id or 0412 HD4600 id ?

There are some kext that should be modified in order to trick injection of HD4400 video card?

(strange thing that intelframebufferazul kext is loaded but not Appelintelhd5000 kext)

 

Thanks to all

You must inject a device-id that is supported by the kext (unless you edit the kext Info.plist).

Don't confuse device-id with ig-platform-id, although the numbers sometimes correlate, they are different properties completely.

Link to comment
Share on other sites

Still same results, even using Ramalama ig_platform_id

 

Attached a screenshot showing hd4600 device id in system properties, so id injection seems to work. still no QE/CI  :(

Boot "-f", post ioreg. Hopefully you're on Chameleon now... smbios fixed?

Link to comment
Share on other sites

 Share

×
×
  • Create New...