Contribute
Register

[Guide] Creating a Custom SSDT for USBInjectAll.kext

Hello Rehabman, here is the diagnostics stuff. My question was whether USB inject could have to do with some usb drives being randomly ejected and being immediately re-mounted with the error they were removed improperly. They are the ones mounted on SSP5 and SSP6 in Ioreg

Code:
kext-dev-mode allowing invalid signature -67013 0xFFFFFFFFFFFEFA3B for kext AppleMobileDevice.kext
kext-dev-mode allowing invalid signature -67054 0xFFFFFFFFFFFEFA12 for kext AppleHDA.kext
KernelCache ID: E0D0DABBEEC9F621398468896E4A98DB
symlink("/System/Library/PrelinkedKernels/prelinkedkernel", "/System/Library/Caches/com.apple.kext.caches/Startup/kernelcache") failed 17 (File exists) <createPrelinkedKernel 2795>

kextstat|grep -y acpiplat
   13    2 0xffffff7f83540000 0x60000    0x60000    com.apple.driver.AppleACPIPlatform (5.0) 867C81BE-EA01-3A65-89F4-06D78E6514CA <12 11 7 6 5 4 3 1>
kextstat|grep -y appleintelcpu
kextstat|grep -y applelpc
   91    0 0xffffff7f830b6000 0x3000     0x3000     com.apple.driver.AppleLPC (3.1) F51595F0-F9B1-3B85-A1C3-F984DAD4107E <90 12 5 4 3>
kextstat|grep -y applehda
   94    1 0xffffff7f8322a000 0x1d000    0x1d000    com.apple.driver.AppleHDAController (278.56) CFB0D0AE-F09A-3660-8F95-7A02FD5FBF07 <93 92 81 12 7 6 5 4 3 1>
  131    0 0xffffff7f833ac000 0xb4000    0xb4000    com.apple.driver.AppleHDA (278.56) A4EB06C9-A40A-39EF-9C4A-D7F23DB9A2F9 <130 104 94 93 92 81 6 5 4 3 1>
  132    0 0xffffff7f83226000 0x2000     0x2000     com.apple.driver.AppleHDAHardwareConfigDriver (278.56) 06C594F4-3E5D-3BF4-A783-90C741DAA3F0 <4 3>

Injecting 8086:2811 for LPC is not a good idea for your hardware. It matches what appears to be the wrong IOKitPersonality in AppleLPC.kext.

Your native ID is 8086:8cc4. You should inject an ID in the AppleLPC_SB IOKitPersonality... For example, "pci8086,8cc3".
 
Injecting 8086:2811 for LPC is not a good idea for your hardware. It matches what appears to be the wrong IOKitPersonality in AppleLPC.kext.

Your native ID is 8086:8cc4. You should inject an ID in the AppleLPC_SB IOKitPersonality... For example, "pci8086,8cc3".
Where am I injecting that and where should I fix it? in ssdt uiac? I thought my native id was 8086:8cb1.

I think you mean in ssdt-1.aml. so is the following correct?
Code:
    Method (_SB.PCI0.LPCB._DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
    {
        If (LEqual (Arg2, Zero))
        {
            Return (Buffer (One)
            {
                 0x03                                           
            })
        }

        Return (Package (0x06)
        {
            "device-id",
            Buffer (0x04)
            {
                 0xC3, 0x8C, 0x00, 0x00                         
            },

            "compatible",
            "pci8086,8cc3",
            "IOName",
            "pci8086,8cc3"
        })
    }


Thank you
 
Where am I injecting that and where should I fix it? in ssdt uiac? I thought my native id was 8086:8cb1.

Thank you

It is in your SSDT-1.aml file in ACPI/patched:
Code:
    Method (_SB.PCI0.LPCB._DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
    {
        If (LEqual (Arg2, Zero))
        {
            Return (Buffer (One)
            {
                 0x03                                        
            })
        }

        Return (Package (0x06)
        {
            "device-id",
            Buffer (0x04)
            {
                 0x11, 0x28, 0x00, 0x00                      
            },

            "compatible",
            "pci8086,2811",
            "IOName",
            "pci8086,2811"
        })
    }

This has nothing to do with the XHC controller. This inject is being done on LPC. You're choosing the wrong AppleLPC configuration for your LPC hardware.
 
oops, looks like you beat me to it (I edited the post above). I wonder why I made that ssdt-1.aml, it was a looong time ago. is the following correct? Should I remove that ssdt entirely? I don't have igpu enabled either
Code:
        Return (Package (0x06)
        {
            "device-id",
            Buffer (0x04)
            {
                 0xC3, 0x8C, 0x00, 0x00                        
            },

            "compatible",
            "pci8086,8cc3",
            "IOName",
            "pci8086,8cc3"
        })
 
oops, looks like you beat me to it (I edited the post above). I wonder why I made that ssdt-1.aml, it was a looong time ago. is the following correct? Should I remove that ssdt entirely? I don't have igpu enabled either
Code:
        Return (Package (0x06)
        {
            "device-id",
            Buffer (0x04)
            {
                 0xC3, 0x8C, 0x00, 0x00                       
            },

            "compatible",
            "pci8086,8cc3",
            "IOName",
            "pci8086,8cc3"
        })

Yes... I think 8cc3 would be a much better choice.
 
Yes... I think 8cc3 would be a much better choice.
Thank you, rebooting now. Should I remove that ssdt entirely? I don't have igpu enabled either and I have no clue what all the rest below does, I think I had made it / gotten it for some igpu/radeon combination to work. I now have an nvidia card with igpu disabled.
 
Thank you, rebooting now. Should I remove that ssdt entirely? I don't have igpu enabled either and I have no clue what all the rest below does, I think I had made it / gotten it for some igpu/radeon combination to work. I now have an nvidia card with igpu disabled.

You should understand why you need the things in it... and if you don't need them, remove...
 
You should understand why you need the things in it... and if you don't need them, remove...
I know, I just don't remember though and don't know where to look for it to learn again. Before I remove all of it, what we just changed is necessary right? I mean the LPC bit. I'll stop thread crapping, it is OOT here but would appreciate an answer to this last bit.
 
I know, I just don't remember though and don't know where to look for it to learn again. Before I remove all of it, what we just changed is necessary right? I mean the LPC bit. I'll stop thread crapping, it is OOT here but would appreciate an answer to this last bit.

Getting AppleLPC to load is important... your native id is not supported by AppleLPC.kext, so injecting a compatible id is the way to fix it.

As for the other content in that SSDT, a lot of it looks dubious...
 
Getting AppleLPC to load is important... your native id is not supported by AppleLPC.kext, so injecting a compatible id is the way to fix it.

As for the other content in that SSDT, a lot of it looks dubious...
Thanks once again, I booted with the ssdt removed (pci8086,8cc4 is what ioreg reads) and the following grep gives no result, I am assuming that means AppleLPC is not loading, though intelpowergadget is working fine from the ssdtprgen ssdt.
kextstat|grep -y applelpc

so I'll add the following in a new ssdt
Code:
DefinitionBlock ("", "SSDT", 1, "toleda", "ami9lpcb", 0x00003000)
{
    Method (_SB.PCI0.LPCB._DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
    {
        If (LEqual (Arg2, Zero))
        {
            Return (Buffer (One)
            {
                 0x03                                           
            })
        }

        Return (Package (0x02)
        {
            "compatible",
            "pci8086,8cc3"
        })
    }
}
 
Back
Top