Contribute
Register

Getting custom SSDT for USBInjectAll working on Dell XPS 9250

Status
Not open for further replies.
Joined
Nov 28, 2015
Messages
146
Motherboard
Lenovo Yoga 920 - OpenCore
CPU
i7-8550U
Graphics
HD620, 3840x2160
Hi,

I am trying to get a custom SSDT for USBInjectAll working on my Dell XPS 9250 running 10.13.4. I have been following the guide: https://www.tonymacx86.com/threads/guide-creating-a-custom-ssdt-for-usbinjectall-kext.211311/

I have installed USBInjectAll.kext to /S/L/E and ran 'sudo touch /System/Library/Extensions && sudo kextcache -u /'

Since my system is a Skylake device, I have excluded rename EC0* as well as FakePCIID.kext + FakePCIID_XHCIMux.kext. I have been using the following:

'disable XHCI port limit' kext patch
'change XHCI to XHC' DSDT patch
'change XHC1 to XHC' DSDT patch
'change _OSI to XOSI' DSDT patch
'rename HDAS to HDEF' DSDT patch

But I am unable to see all of my HS and SS ports, such that the HS ports start incrementing with odd numbers and only go up to 7, as shown below:

View media item 190474
Also, if you note in the picture, the AppleUSBXHCIAR correspond to my two USB C ports on my device. The only two physical USB ports on my device. It appears that the 'change XHCI to XHC' DSDT patch is not working either.

Please note, I have attached problem reporting files with 'gen_debug -sysprofile' in debug_23084.zip. Please note, these files include a custom SSDT-UIAC.aml which I have configured HS01 & HS03, as they are the only ports in my XHC that are being used.

When I scan the logs, it appears my SSDT-UIAC.aml is being loaded, but still I see extra ports.

Code:
22:525  0:000  === [ ACPIPatchedAML ] ====================================
22:525  0:000  Unsorted
22:525  0:000  Inserting SSDT-UIAC.aml from EFI\CLOVER\ACPI\patched: size=192 ... Success
22:530  0:005  CPUBase=0 and ApicCPUBase=1 ApicCPUNum=1
22:530  0:000  Maximum control=0xF
22:530  0:000  Turbo control=0x1B
22:530  0:000  P-States: min 0x4, max 0x1B
22:530  0:000  SSDT with plugin-type without P-States is generated
22:530  0:000  Cleanup XSDT: count=25, length=236
22:530  0:000  corrected XSDT count=24, length=228

Thank you!
 

Attachments

  • debug_23084.zip
    2.3 MB · Views: 138
Last edited:
I have installed USBInjectAll.kext to /S/L/E and ran 'sudo touch /System/Library/Extensions && sudo kextcache -u /'

As per FAQ, kexts should be installed to /L/E.
Read FAQ, "Problem Reporting"
https://www.tonymacx86.com/threads/faq-read-first-laptop-frequent-questions.164990/

'disable XHCI port limit' kext patch

You have the patch disabled in your config.plist. As you might expect, disabled patches have no effect.

'change XHCI to XHC' DSDT patch
'change XHC1 to XHC' DSDT patch

No need for any of these. Your native ACPI uses XHC only.

'change _OSI to XOSI' DSDT patch

Big mistake here. In order to use that patch, you must add SSDT-XOSI.aml in ACPI/patched. It is missing.

'rename HDAS to HDEF' DSDT patch

Not related to USB, but useful for audio implementation.

But I am unable to see all of my HS and SS ports, such that the HS ports start incrementing with odd numbers and only go up to 7, as shown below:

Two mistakes:
- port limit patch is not enabled
- your SMBIOS is truncated, as is typical with many Dell computers

You need to enable the port limit patch and set config.plist/KernelAndKextPatches/DellSMBIOSPatch=true.

Also, if you note in the picture, the AppleUSBXHCIAR correspond to my two USB C ports on my device.

USB on Thunderbolt is a separate issue, and is largely unfixed at this point.

It appears that the 'change XHCI to XHC' DSDT patch is not working either.

The XHCI in AppleUSBXHCIAR is not related to ACPI.

include a custom SSDT-UIAC.aml which I have configured HS01 & HS03, as they are the only ports in my XHC that are being

Your SSDT-UIAC.aml is wrong.
Make sure you re-create it as per guide:
https://www.tonymacx86.com/threads/guide-creating-a-custom-ssdt-for-usbinjectall-kext.211311/
 
I have applied all changes you mentioned and got it working. Thank you!

The first thing I noticed was that all USB ports were available:

Screen Shot 2018-05-06 at 2.52.26 PM.png

After that, I went back to my SSDT-UIAC.dsl and updated it to the following:

Code:
// Initial trimmed SSDT-UIAC.dsl for Dell XPS 12 9250
DefinitionBlock ("", "SSDT", 2, "hack", "UIAC", 0)
{
    Device(UIAC)
    {
        Name(_HID, "UIA00000")
        Name(RMCF, Package()
        {
          "8086_9d2f", Package()
          {
              "port-count", Buffer() { 18, 0, 0, 0 },
              "ports", Package()
              {
                  "HS01", Package() // Keyboard dock
                  {
                      "UsbConnector", 3,
                      "port", Buffer() { 1, 0, 0, 0 },
                  },
                  "HS03", Package() // WiFi BCM20702A0
                  {
                      "UsbConnector", 255,
                      "port", Buffer() { 3, 0, 0, 0 },
                  },
                  "SS01", Package() // Keyboard dock
                  {
                      "UsbConnector", 3,
                      "port", Buffer() { 13, 0, 0, 0 },
                  },
                  "SS03", Package() // WiFi BCM20702A0
                  {
                      "UsbConnector", 255,
                      "port", Buffer() { 15, 0, 0, 0 },
                  },
              },
          },
        })
    }
}
//EOF

Finally, after compiling it as AML I put it in 'Clover/ACPI/patched'. I also ensured I was not using sorted order in my config.plist. After rebooting, I was able to see only those two ports were now available.

Screen Shot 2018-05-06 at 3.08.45 PM.png
I just wanted to include this in case anyone else needs help.. also I have attached problem reporting files as well.

Thanks again!
 

Attachments

  • debug_9757.zip
    2.2 MB · Views: 112
I have applied all changes you mentioned and got it working. Thank you!

The first thing I noticed was that all USB ports were available:

View attachment 330091

After that, I went back to my SSDT-UIAC.dsl and updated it to the following:

Code:
// Initial trimmed SSDT-UIAC.dsl for Dell XPS 12 9250
DefinitionBlock ("", "SSDT", 2, "hack", "UIAC", 0)
{
    Device(UIAC)
    {
        Name(_HID, "UIA00000")
        Name(RMCF, Package()
        {
          "8086_9d2f", Package()
          {
              "port-count", Buffer() { 18, 0, 0, 0 },
              "ports", Package()
              {
                  "HS01", Package() // Keyboard dock
                  {
                      "UsbConnector", 3,
                      "port", Buffer() { 1, 0, 0, 0 },
                  },
                  "HS03", Package() // WiFi BCM20702A0
                  {
                      "UsbConnector", 255,
                      "port", Buffer() { 3, 0, 0, 0 },
                  },
                  "SS01", Package() // Keyboard dock
                  {
                      "UsbConnector", 3,
                      "port", Buffer() { 13, 0, 0, 0 },
                  },
                  "SS03", Package() // WiFi BCM20702A0
                  {
                      "UsbConnector", 255,
                      "port", Buffer() { 15, 0, 0, 0 },
                  },
              },
          },
        })
    }
}
//EOF

Finally, after compiling it as AML I put it in 'Clover/ACPI/patched'. I also ensured I was not using sorted order in my config.plist. After rebooting, I was able to see only those two ports were now available.

View attachment 330092
I just wanted to include this in case anyone else needs help.. also I have attached problem reporting files as well.

Thanks again!

The ports you have marked "WiFi BCM20702A0"... not WiFi at all. That is bluetooth. And likely only connected to HS03 (it is a USB2, not USB3).
 
The ports you have marked "WiFi BCM20702A0"... not WiFi at all. That is bluetooth. And likely only connected to HS03 (it is a USB2, not USB3).

Okay. I seem confused on this. This is what I have right now:

Code:
// Initial trimmed SSDT-UIAC.dsl for Dell XPS 12 9250
DefinitionBlock ("", "SSDT", 2, "hack", "UIAC", 0)
{
    Device(UIAC)
    {
        Name(_HID, "UIA00000")
        Name(RMCF, Package()
        {
          "8086_9d2f", Package()
          {
              "port-count", Buffer() { 18, 0, 0, 0 },
              "ports", Package()
              {
                  "HS01", Package() // Keyboard dock
                  {
                      "UsbConnector", 3,
                      "port", Buffer() { 1, 0, 0, 0 },
                  },
                  "HS03", Package() // WiFi BCM20702A0
                  {
                      "UsbConnector", 255,
                      "port", Buffer() { 3, 0, 0, 0 },
                  },
              },
          },
        })
    }
}
//EOF

A couple things to note, my device only has two external Thunderbolt 3 ports, aside from the one pogo pin connector at the bottom. Since this is the case I understand it should only have HS01 and HS03, since they both only operate at USB 2.0 or 3.0.

I have read the guide https://www.tonymacx86.com/threads/guide-creating-a-custom-ssdt-for-usbinjectall-kext.211311/ several times and this is the only thing that makes sense from what I gather. Also, this appears to be working fine for both my bluetooth and keyboard dock.
 

Attachments

  • debug_20098.zip
    2.2 MB · Views: 100
Okay. I seem confused on this. This is what I have right now:

Code:
// Initial trimmed SSDT-UIAC.dsl for Dell XPS 12 9250
DefinitionBlock ("", "SSDT", 2, "hack", "UIAC", 0)
{
    Device(UIAC)
    {
        Name(_HID, "UIA00000")
        Name(RMCF, Package()
        {
          "8086_9d2f", Package()
          {
              "port-count", Buffer() { 18, 0, 0, 0 },
              "ports", Package()
              {
                  "HS01", Package() // Keyboard dock
                  {
                      "UsbConnector", 3,
                      "port", Buffer() { 1, 0, 0, 0 },
                  },
                  "HS03", Package() // WiFi BCM20702A0
                  {
                      "UsbConnector", 255,
                      "port", Buffer() { 3, 0, 0, 0 },
                  },
              },
          },
        })
    }
}
//EOF

Obviously wrong.
No SSxx ports there...
 
Obviously wrong.
No SSxx ports there...

What confuses me though is I don't see any SSxx ports used after I test the only three external USB connectors my device has, which are:

2x Thunderbolt 3 (not XHC)
Pogo pin connector for keyboard dock

With the understanding I have, I have no XHC SSxx ports--the bluetooth and keyboard dock use HSxx and my Thunderbolt 3 ports have their own controller.
 
What confuses me though is I don't see any SSxx ports used after I test the only three external USB connectors my device has, which are:

2x Thunderbolt 3 (not XHC)
Pogo pin connector for keyboard dock

With the understanding I have, I have no XHC SSxx ports--the bluetooth and keyboard dock use HSxx and my Thunderbolt 3 ports have their own controller.

Not possible to comment further without ioreg that results from port discovery.
 
Not possible to comment further without ioreg that results from port discovery.

I have uploaded an ioreg that has results from port discovery between the two Thunderbolt 3 ports and the pogo-pin connector.
 

Attachments

  • Peter’s MacBook Pro.ioreg
    9.5 MB · Views: 122
  • debug_20020.zip
    2 MB · Views: 88
I have uploaded an ioreg that has results from port discovery between the two Thunderbolt 3 ports and the pogo-pin connector.

You must provide ioreg that corresponds to discovery of ALL ports.
I didn't look at these files because you seem to imply this is a discovery of only a subset.
 
Status
Not open for further replies.
Back
Top