Contribute
Register

[Guide] Creating a Custom SSDT for USBInjectAll.kext

The files you attached earlier show nothing connected to HP22.
I don't think adding _PRW for your webcam will help.

Fair enough :3

There was no any device attached to that port at that moment of time when IORegestryExplorer was created... My fault...
Here's a new report with my mouse attached to that port.

Also I have to say that that HP22 port (the only one USB 2.0 port on my laptop, all others are USB 3.0) also doesn't want to go sleep if I have mouse attached. I have tried to change portType for it while other USB 2.0 being disabled from UIAC (and they really were disabled, I have checked it just in case).

Meanwhile I haven't tested sleep when all USB 2.0 port being disabled, excluding those used in USB 3.0 ports when they are rooted through EHC controller.

Also, in current DSDTs state I have returned OEM EHC1, EHC2, XHC and HDEF desctiptions (all needed patches applied, except for _PWR and _DSM to XDSM rename), nothing changed.
BTW, with _PRW patch _PRW methods with GPRW function calls are replaced with just _PRW names, that's directly returning some values. I was wondering if that GPRW function does something important for sleep - but have no idea, nothing has changes actually.

So I have a question... As far as I know, my USB ports aren't powered at sleep if there's not any devices connected.
Is that behavior defined in DSDTs? If that is true, maybe we can somehow represent it for those sleep-braking ports/devices, just disabling only them, but not a controllers?
 

Attachments

  • Problem Report.zip
    745.7 KB · Views: 70
Fair enough :3

There was no any device attached to that port at that moment of time when IORegestryExplorer was created... My fault...
Here's a new report with my mouse attached to that port.

Also I have to say that that HP22 port (the only one USB 2.0 port on my laptop, all others are USB 3.0) also doesn't want to go sleep if I have mouse attached. I have tried to change portType for it while other USB 2.0 being disabled from UIAC (and they really were disabled, I have checked it just in case).

Meanwhile I haven't tested sleep when all USB 2.0 port being disabled, excluding those used in USB 3.0 ports when they are rooted through EHC controller.

Also, in current DSDTs state I have returned OEM EHC1, EHC2, XHC and HDEF desctiptions (all needed patches applied, except for _PWR and _DSM to XDSM rename), nothing changed.
BTW, with _PRW patch _PRW methods with GPRW function calls are replaced with just _PRW names, that's directly returning some values. I was wondering if that GPRW function does something important for sleep - but have no idea, nothing has changes actually.

So I have a question... As far as I know, my USB ports aren't powered at sleep if there's not any devices connected.
Is that behavior defined in DSDTs? If that is true, maybe we can somehow represent it for those sleep-braking ports/devices, just disabling only them, but not a controllers?

Your problem with that device may be the custom driver you installed for it:
Code:
com.logitech.driver.LogiGamingMouseFilter

Maybe if you use native drivers instead of the custom drivers...

You can read about _PRW in the ACPI specification if you're curious about what it does.
 
I swapped the Wifi card for a a BCM94360HMB and had to make a few changes to the SSDT file to get bluetooth working.

1) A new USB port (15) was detected. Added it to the SSDT and the bluetooth card showed up in bluetooth devices.
2) The weird thing was that it also changed the number/label of some other usb ports. What used to be SSP1-SSP4 became SSP5-SSP8 (comparing old and new ssdt).

Great guide.
 
I swapped the Wifi card for a a BCM94360HMB and had to make a few changes to the SSDT file to get bluetooth working.

1) A new USB port (15) was detected. Added it to the SSDT and the bluetooth card showed up in bluetooth devices.
2) The weird thing was that it also changed the number/label of some other usb ports. What used to be SSP1-SSP4 became SSP5-SSP8 (comparing old and new ssdt).

Great guide.

Port names as they relate to port addresseds are determined by USBInjectAll.kext and the SSDT used to configure it.
It sounds like you made a mistake... maybe you changed the port addresses... the port addresses in SSDT-UIAC-ALL.dsl are correct and should never be changed.
 
"if you plan to use it, install FakePCIID.kext + FakePCIID_XHCIMux.kext"

Does this mean that XHCIMux must be installed in order for this guide to work? I'm using FakePCIID.kext exclusively and all ports are functioning. When I view by ports in IORegistryExplorer, there is nothing under EHCI.

Thanks.
 
Your problem with that device may be the custom driver you installed for it:
Code:
com.logitech.driver.LogiGamingMouseFilter

Maybe if you use native drivers instead of the custom drivers...

Definitely this problem has nothing to do with that driver - it's stays even if I change my mouse to wired.

You can read about _PRW in the ACPI specification if you're curious about what it does.
Sure, I can :) Thx.
 
"if you plan to use it, install FakePCIID.kext + FakePCIID_XHCIMux.kext"

Does this mean that XHCIMux must be installed in order for this guide to work? I'm using FakePCIID.kext exclusively and all ports are functioning. When I view by ports in IORegistryExplorer, there is nothing under EHCI.

Thanks.

XHCIMux is necessary to rout your USB 2.0 devices connected to your USB 3.0 ports to EHC (USB 2.0) controller.
So you need that at least to ditch out all unused ports.

If you connect a USB 2.0 device to your 3.0 port without Mux, they will be connected to USB 3.0 ports at XHC controller, not to USB 2.0 ports at EHC.

Have no idea why you should use that kext (MUX) later, but I've used it just to setup my DSDT Hack for USB correctly.
Meanwhile, all my ports now work as they we working before I have installed all this kexts and patches, so it looks like that they aren't necessary for me.

Actually, I was hoping that it will solve my sleep problem, without _PRW (0x0D, Zero) patch, so I can wake up my laptop via external keyboard, but nope - nothing has changed.

Somehow portType property has no influence on my internal USB devices (Camera, Bluetooth and Fingerprint reader) and has no influence on my external USB 2.0 port.

Something connected to those 2.0 ports without _PRW patch always results in a instant wakeup for me.

So I came back to that solution, have no time to look up for solution in ACPI specifications. :(
 
XHCIMux is necessary to rout your USB 2.0 devices connected to your USB 3.0 ports to EHC (USB 2.0) controller.
So you need that at least to ditch out all unused ports.

Thanks for that. Do you have a link to the latest XHCIMux? I can't seem to find it on the Github page.
 
"if you plan to use it, install FakePCIID.kext + FakePCIID_XHCIMux.kext"

Does this mean that XHCIMux must be installed in order for this guide to work? I'm using FakePCIID.kext exclusively and all ports are functioning. When I view by ports in IORegistryExplorer, there is nothing under EHCI.

Thanks.

FakePCIID_XHCIMux.kext has no application to the hardware in your profile.
100-series chipset (and later) has no EHCI, therefore no xHCI->EHCI routing capability (or need).
 
Hello i need some help for this wifi/bluetooth card : BCM943602CS

The bluetooth card is plugged on internal connector HS14

The card automatically broke sleep/wake, so i change the usbconnector from 3 to 255 to set up it as internally.

Sleep is back again.

But 2 annoying things :
- i cannot wake from bluetooh keyboard
- after wake, bluetooth is not working well. Sometimes, it works, somes it doesnt work at all.

In Ioregistry, the IO powermanagement flags for that usb device are always changing.

Do i have something else than usbconnector to change to make this car works perfecly.

BTW the wifi is working well
Thanks in advance

Epal
 
Back
Top