Jump to content

USBInjectAll Quirk


headkaze
 Share

13 posts in this topic

Recommended Posts

I don't currently have OpenCore working so I'm providing this information for whomever wants to take up the task of writing this quirk. This is based on information from USBInjectAll by Rehabman.

 

Please take a look at the following file: https://github.com/Sniki/OS-X-USB-Inject-All/blob/master/USBInjectAll/USBInjectAll-Info.plist

 

Essentially the USBInjectAll Quirk should inject the following ports if the appropriate PCI controller is present.

 

EDIT: @vit9696 has stated that OpenCore will not inject ACPI data and therefore a quirk like this is likely never to exist.

 

PR11 = 0x1D100000 (HUB1)
PR21 = 0x1A100000 (HUB2)
PR11 = 0x1D1x0000 (HPxx)
PR21 = 0x1A1x0000 (HPxx)
XHCx - 0x14xx0000 (HSxx, SSxx)
EHx1 - 0x1Dxx0000 (PRxx)
EHx2 - 0x1Axx0000 (PRxx)

 

1. Enumerate PCI device's
    - Read device-id, vendor-id

 

2. Intel only
    - vendor-id != 0x8086 continue

 

3. device-id == 0x1c26
    * Inject EHx1 ports:
    - name: PR11, PR12, PR13, PR14, PR15, PR16, PR17, PR18
    - port (Data): 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8
    - UsbConnector: 255 (PR11), 0 (PR12 - PR18)
    - locationID: 0x1Dxx0000
    - IOProviderClass: AppleUSBEHCIPCI
    - port-count (Data): 0x8
    
    * Inject HUB1 ports:
    - name: HP11, HP12, HP13, HP14, HP15, HP16, HP17, HP18
    - port (Data): 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8
    - portType: 0
    - locationID: 0x1D1x0000
    - IOProviderClass: AppleUSB20InternalHub
    - port-count (Data): 0x8

 

4. device-id == 0x1c2d
    * Inject EHx2 ports:
    - name: PR21, PR22, PR23, PR24, PR25, PR26
    - port (Data): 0x1, 0x2, 0x3, 0x4, 0x5, 0x6
    - UsbConnector: 255 (PR21), 0 (PR22 - PR26)
    - locationID: 0x1Axx0000
    - IOProviderClass: AppleUSBEHCIPCI
    - port-count (Data): 0x6

 

    * Inject HUB2 ports:
    - name: HP21, HP22, HP23, HP24, HP25, HP26, HP27, HP28
    - port (Data): 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8
    - portType: 0
    - locationID: 0x1A1x0000
    - IOProviderClass: AppleUSB20InternalHub
    - port-count (Data): 0x8

 

5. device-id == 0x1e31, 0x8xxx, 0x9cb1, 0x9dxx, 0x9xxx, 0xa12f, 0xa2af, 0xa36d
    * Inject XHCx ports:
    - 8086_1e31: HS01, HS02, HS03, HS04, SS01, SS02, SS03, SS04
    - 8086_8xxx: HS01, HS02, HS03, HS04, HS05, HS06, HS07, HS08, HS09, HS10, HS11, HS12, HS13, HS14, SS01, SS02, SS03, SS04, SS05, SS06
    - 8086_9cb1: HS01, HS02, HS03, HS04, HS05, HS06, HS07, HS08, HS09, HS10, HS11, SS01, SS02, SS03, SS04
    - 8086_9dxx: HS01, HS02, HS03, HS04, HS05, HS06, HS07, HS08, HS09, HS10, SS01, SS02, SS03, SS04, SS05, SS06, USR1, USR2
    - 8086_9xxx: HS01, HS02, HS03, HS04, HS05, HS06, HS07, HS08, HS09, SS01, SS02, SS03, SS04
    - 8086_a12f: HS01, HS02, HS03, HS04, HS05, HS06, HS07, HS08, HS09, HS10, HS11, HS12, HS13, HS14, SS01, SS02, SS03, SS04, SS05, SS06, SS07, SS08, SS09, SS10, USR1, USR2
    - 8086_a2af: HS01, HS02, HS03, HS04, HS05, HS06, HS07, HS08, HS09, HS10, HS11, HS12, HS13, HS14, SS01, SS02, SS03, SS04, SS05, SS06, SS07, SS08, SS09, SS10, USR1, USR2
    - 8086_a36d: HS01, HS02, HS03, HS04, HS05, HS06, HS07, HS08, HS09, HS10, HS11, HS12, HS13, HS14, SS01, SS02, SS03, SS04, SS05, SS06, SS07, SS08, SS09, SS10, USR1, USR2
    - port (Data): 0x1, 0x2, ... n
    - UsbConnector: 3
    - locationID: 0x14xx0000
    - IOProviderClass: AppleUSBXHCIPCI
    - port-count (Data): n

 

Edited by headkaze
  • Like 7
Link to comment
Share on other sites

On 3/31/2020 at 7:46 PM, headkaze said:

I don't currently have OpenCore working so I'm providing this information for whomever wants to take up the task of writing this quirk. This is based on information from USBInjectAll by Rehabman.

 

Please take a look at the following file: https://github.com/Sniki/OS-X-USB-Inject-All/blob/master/USBInjectAll/USBInjectAll-Info.plist

 

Essentially the USBInjectAll Quirk should inject the following ports if the appropriate PCI controller is present.

 

EDIT: @vit9696 has stated that OpenCore will not inject ACPI data and therefore a quirk like this is likely never to exist.

 

PR11 = 0x1D100000 (HUB1)
PR21 = 0x1A100000 (HUB2)
PR11 = 0x1D1x0000 (HPxx)
PR21 = 0x1A1x0000 (HPxx)
XHCx - 0x14xx0000 (HSxx, SSxx)
EHx1 - 0x1Dxx0000 (PRxx)
EHx2 - 0x1Axx0000 (PRxx)

 

1. Enumerate PCI device's
    - Read device-id, vendor-id

 

2. Intel only
    - vendor-id != 0x8086 continue

 

3. device-id == 0x1c26
    * Inject EHx1 ports:
    - name: PR11, PR12, PR13, PR14, PR15, PR16, PR17, PR18
    - port (Data): 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8
    - UsbConnector: 255 (PR11), 0 (PR12 - PR18)
    - locationID: 0x1Dxx0000
    - IOProviderClass: AppleUSBEHCIPCI
    - port-count (Data): 0x8
    
    * Inject HUB1 ports:
    - name: HP11, HP12, HP13, HP14, HP15, HP16, HP17, HP18
    - port (Data): 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8
    - portType: 0
    - locationID: 0x1D1x0000
    - IOProviderClass: AppleUSB20InternalHub
    - port-count (Data): 0x8

 

4. device-id == 0x1c2d
    * Inject EHx2 ports:
    - name: PR21, PR22, PR23, PR24, PR25, PR26
    - port (Data): 0x1, 0x2, 0x3, 0x4, 0x5, 0x6
    - UsbConnector: 255 (PR21), 0 (PR22 - PR26)
    - locationID: 0x1Axx0000
    - IOProviderClass: AppleUSBEHCIPCI
    - port-count (Data): 0x6

 

    * Inject HUB2 ports:
    - name: HP21, HP22, HP23, HP24, HP25, HP26, HP27, HP28
    - port (Data): 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8
    - portType: 0
    - locationID: 0x1A1x0000
    - IOProviderClass: AppleUSB20InternalHub
    - port-count (Data): 0x8

 

5. device-id == 0x1e31, 0x8xxx, 0x9cb1, 0x9dxx, 0x9xxx, 0xa12f, 0xa2af, 0xa36d
    * Inject XHCx ports:
    - 8086_1e31: HS01, HS02, HS03, HS04, SS01, SS02, SS03, SS04
    - 8086_8xxx: HS01, HS02, HS03, HS04, HS05, HS06, HS07, HS08, HS09, HS10, HS11, HS12, HS13, HS14, SS01, SS02, SS03, SS04, SS05, SS06
    - 8086_9cb1: HS01, HS02, HS03, HS04, HS05, HS06, HS07, HS08, HS09, HS10, HS11, SS01, SS02, SS03, SS04
    - 8086_9dxx: HS01, HS02, HS03, HS04, HS05, HS06, HS07, HS08, HS09, HS10, SS01, SS02, SS03, SS04, SS05, SS06, USR1, USR2
    - 8086_9xxx: HS01, HS02, HS03, HS04, HS05, HS06, HS07, HS08, HS09, SS01, SS02, SS03, SS04
    - 8086_a12f: HS01, HS02, HS03, HS04, HS05, HS06, HS07, HS08, HS09, HS10, HS11, HS12, HS13, HS14, SS01, SS02, SS03, SS04, SS05, SS06, SS07, SS08, SS09, SS10, USR1, USR2
    - 8086_a2af: HS01, HS02, HS03, HS04, HS05, HS06, HS07, HS08, HS09, HS10, HS11, HS12, HS13, HS14, SS01, SS02, SS03, SS04, SS05, SS06, SS07, SS08, SS09, SS10, USR1, USR2
    - 8086_a36d: HS01, HS02, HS03, HS04, HS05, HS06, HS07, HS08, HS09, HS10, HS11, HS12, HS13, HS14, SS01, SS02, SS03, SS04, SS05, SS06, SS07, SS08, SS09, SS10, USR1, USR2
    - port (Data): 0x1, 0x2, ... n
    - UsbConnector: 3
    - locationID: 0x14xx0000
    - IOProviderClass: AppleUSBXHCIPCI
    - port-count (Data): n

 

 

Good info.

 

What would the advantage be for a Quirk vs. the USBInjectAll.kext ?

Also, that kext is meant to be a temporary injector till you have found all the ports.

Link to comment
Share on other sites

2 minutes ago, MacNB said:

 

Good info.

 

What would the advantage be for a Quirk vs. the USBInjectAll.kext ?

Also, that kext is meant to be a temporary injector till you have found all the ports.

Convenience mainly. It would work alongside the XHCIPortLimit quirk which is also meant to be temporary.

 

I spoke to vit9696 and he said it's unlikely they will add ACPI injection to OC so I don't think it's possible anyway. I'll leave the post in case the situation changes.

Link to comment
Share on other sites

2 hours ago, headkaze said:

Convenience mainly. It would work alongside the XHCIPortLimit quirk which is also meant to be temporary.

 

I spoke to vit9696 and he said it's unlikely they will add ACPI injection to OC so I don't think it's possible anyway. I'll leave the post in case the situation changes.

 

Just a quick question, for proper usb do i have to use USBInjectAll.kext and SSDT-EC.aml (already with the correct ports) simultaneously? Or can i simply use the SSDT without the kext?

 

Cheers

Link to comment
Share on other sites

40 minutes ago, rottenpants said:

 

Just a quick question, for proper usb do i have to use USBInjectAll.kext and SSDT-EC.aml (already with the correct ports) simultaneously? Or can i simply use the SSDT without the kext?

 

Cheers

Choose between SSDT-UIAC.aml + USBInjectAll.kext OR USBPorts.kext

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

 
 
 
 
1 hour ago, headkaze said:

Choose between SSDT-UIAC.aml + USBInjectAll.kext OR USBPorts.kext

 

Following the rottenpants's question, Hackintool is usually generating SSDT-UIAC.aml + SSDT-USBX.aml + SSDT-EC.aml + USBPorts.kext;
- SSDT-UIAC.aml is provided to use with USBInjectAll.kext
- USBPorts.kext is meant to be used alone
- Should we use SSDT-USBX.aml + SSDT-EC.aml created by Hackintool or the standard from OpenCore?

(for a Skylake+ system and Mac OS Mojave or Catalina)

 

THANKS!

Link to comment
Share on other sites

If i'm not mistaken (for Skylake+) we can just use SSDT-USBX.aml from OC/ACPI Samples since it already has the usb power properties. So with one SSDT we inject usb power properties and fix the EC.

Edited by rottenpants
Link to comment
Share on other sites

On 4/2/2020 at 2:32 PM, Simonej said:

Following the rottenpants's question, Hackintool is usually generating SSDT-UIAC.aml + SSDT-USBX.aml + SSDT-EC.aml + USBPorts.kext;
- SSDT-UIAC.aml is provided to use with USBInjectAll.kext
- USBPorts.kext is meant to be used alone
- Should we use SSDT-USBX.aml + SSDT-EC.aml created by Hackintool or the standard from OpenCore?

(for a Skylake+ system and Mac OS Mojave or Catalina)

For anyone else curious we're talking about the files located @ OpenCorePkg/tree/master/Docs/AcpiSamples

 

There isn't much difference between them. The main difference is it has ACPI you can uncomment to match your existing embedded controller of PNP0C09 type. For Hackintool the file is only generated if it finds this entry in IORegistry.

 

Also the SSDT-EC-USBX.dsl file provided in OC's AcpiSample folder is a combination of both the SSDT-USBX and SSDT-EC files.

 

USBX is for USB power properties and the EC adds AppleBusPowerController.

Edited by headkaze
  • Like 1
Link to comment
Share on other sites

On 4/2/2020 at 2:32 PM, Simonej said:

- Should we use SSDT-USBX.aml + SSDT-EC.aml created by Hackintool or the standard from OpenCore?

To stay in line with the OpenCore project I've updated Hackintool v3.7.7 so it will no longer prompt to rename EC0, H_EC or ECDV controllers to EC. Also it will now combine both USB power and EC entries into SSDT-EC-USBX. If you have an existing controller with the PNP0C09 name it will also automatically include it in the aml.

  • Like 2
Link to comment
Share on other sites

X299 WU8

8086_a2af: HS01, HS02, HS03, HS04, HS05, HS06, HS07, HS08, HS09, HS10, HS11, HS12, HS13, HS14, SS01, SS02, SS03, SS04, SS05, SS06, SS07, SS08, SS09, SS10, USR1, USR2

XHCI-Port-Layout.thumb.png.8eac9030b47b47e2d6d5fbdab7b9ee2d.png

 

 

 

If I want to disable port HS07 HS08 SS07 SS08

How to do in USBPorts.kext.zip?

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
On 4/5/2020 at 12:40 PM, headkaze said:

You remove the ports from the Hackintool using the "Delete" button before you export the file.

USB 3.0 19PIN to USB 2.0 9PIN Cable Adapter

977518088_51lY00VanL._AC_SL1000_.jpg.515f12c86d73616c1a1e728885287a6f.jpg

My Motherboard not have USB2 Header.I am using this adapter.When I connect this Adapter Sleep not work

If remove this adapter sleep worked.

How to fix this issue?

I try to disable ports but sleep not work.

Link to comment
Share on other sites

 Share

×
×
  • Create New...