Contribute
Register

[Guide] 10.11+ USB changes and solutions

Status
Not open for further replies.
OK. So, I think I am now looking in the right place. Screen shot below is my Patriot USB3 memory stick. It is showing up on HS10 which is USB2 port, right? But should be USB3. HS10 matches the port map I did in Yosemite also. So, is the idea to plug devices into each port and see which show up as HSx when they should be SSPx?

View attachment 159632

If it is a USB3 device, but showing up on HS10 (USB2 component of XHC), then your USB3 ports are not enabled. Check BIOS settings, and make sure your choice as far as Windows emulation makes sense. Some DSDT code will only turn on USB3 with certain options in BIOS and with Windows 8 ("Windows 2012"). Some will turn it on with just Windows 7 ("Windows 2009").
 
If it is a USB3 device, but showing up on HS10 (USB2 component of XHC), then your USB3 ports are not enabled. Check BIOS settings, and make sure your choice as far as Windows emulation makes sense. Some DSDT code will only turn on USB3 with certain options in BIOS and with Windows 8 ("Windows 2012"). Some will turn it on with just Windows 7 ("Windows 2009").

BIOS - XHCI is set to Smart Auto.

BTW, 2 out of 5 USB3 ports do now show as USB3 5GB/s.

Windows emulation - So going back a few steps. I opened SSDT-HACK.dsl with Maciasl and saved as per your instructions, put into EFI/CLOVER/ACPI/patched. If I now open the SSDT-HACK.aml file from there with Maciasl, I see this:

Screen Shot 2015-10-29 at 22.55.00.png

I suspect I've done something wrong. I need to set to emulate Windows 8, is that right? Can't work out how to do that....

Also I haven't installed FakePCIID Kext, should I have done that already?

I'll give this a rest till tomorrow, brain is hurting.
 
BIOS - XHCI is set to Smart Auto.

BTW, 2 out of 5 USB3 ports do now show as USB3 5GB/s.

Windows emulation - So going back a few steps. I opened SSDT-HACK.dsl with Maciasl and saved as per your instructions, put into EFI/CLOVER/ACPI/patched. If I now open the SSDT-HACK.aml file from there with Maciasl, I see this:

View attachment 159638

I suspect I've done something wrong. I need to set to emulate Windows 8, is that right? Can't work out how to do that....

Nothing wrong. Comments are eliminated when you compile from .dsl->aml.

Also I haven't installed FakePCIID Kext, should I have done that already?

That comes later depending on if you need to get around the 15-port limit.
 
Based on your readme file for USBInjectAll.kext, customizing SSDT-UIAC.dsl I can "delete" unused USB (hence avoid USB limit patch). As you stated, I reached the result with uia_exclude=HSxx,HSxy kernel flag, and I'm asking this: via SSDT how can I customize this
Code:
// SSDT-UIAC.dsl
//
// This SSDT demonstrates a custom configuration for USBInjectAll.kext.
//

DefinitionBlock ("SSDT-UIAC.aml", "SSDT", 1, "hack", "UIAC", 0x00003000)
{
    Device(UIAC)
    {
        Name(_HID, "UIA00000")

        // override EH01 configuration to have only one port
        Name(RMCF, Package()
        {
            "EH01", Package()
            {
                "port-count", Buffer() { 1, 0, 0, 0 },
                "ports", Package()
                {
                    "PR11", Package()
                    {
                        "UsbConnector", 0,
                        "port", Buffer() { 1, 0, 0, 0 },
                    }
                }
            }
        })
    }
}

//EOF
to disable, let's say, HS03, HS04, HS11, HS12, SSP4, SSP5, SSP6? Which codes need to be changed?
 
Based on your readme file for USBInjectAll.kext, how to customize this
Code:
// SSDT-UIAC.dsl
//
// This SSDT demonstrates a custom configuration for USBInjectAll.kext.
//

DefinitionBlock ("SSDT-UIAC.aml", "SSDT", 1, "hack", "UIAC", 0x00003000)
{
    Device(UIAC)
    {
        Name(_HID, "UIA00000")

        // override EH01 configuration to have only one port
        Name(RMCF, Package()
        {
            "EH01", Package()
            {
                "port-count", Buffer() { 1, 0, 0, 0 },
                "ports", Package()
                {
                    "PR11", Package()
                    {
                        "UsbConnector", 0,
                        "port", Buffer() { 1, 0, 0, 0 },
                    }
                }
            }
        })
    }
}

//EOF
to disable, let's say, HS03, HS04, HS11, HS12, SSP4, SSP5, SSP6? Which codes need to be changed?
 
Based on your readme file for USBInjectAll.kext, how to customize this
Code:
// SSDT-UIAC.dsl
//
// This SSDT demonstrates a custom configuration for USBInjectAll.kext.
//

DefinitionBlock ("SSDT-UIAC.aml", "SSDT", 1, "hack", "UIAC", 0x00003000)
{
    Device(UIAC)
    {
        Name(_HID, "UIA00000")

        // override EH01 configuration to have only one port
        Name(RMCF, Package()
        {
            "EH01", Package()
            {
                "port-count", Buffer() { 1, 0, 0, 0 },
                "ports", Package()
                {
                    "PR11", Package()
                    {
                        "UsbConnector", 0,
                        "port", Buffer() { 1, 0, 0, 0 },
                    }
                }
            }
        })
    }
}

//EOF
to disable, let's say, HS03, HS04, HS11, HS12, SSP4, SSP5, SSP6? Which codes need to be changed?

HSxx...SSPx are on XHC. It depends on the device-id of your XHCI chip.

There is an example in the README for XHC 8xxx.
 
Attached IOReg with every USB plugged and unplugged, original USBInjectAll.kext loaded and USB limit patch applied and DSDT
My limit is to build a correct SSDT. I guess it would be no big deal for you, wouldn't it?
I would have a chance to study it and understand more about compiling.
ASRock Z97 Extreme 6 motherboard, BTW.
 

Attachments

  • iMac di Giac.zip
    3 MB · Views: 77
  • dsdt.zip
    22.9 KB · Views: 66
Attached IOReg with every USB plugged and unplugged, original USBInjectAll.kext loaded and USB limit patch applied and DSDT
My limit is to build a correct SSDT. I guess it would be no big deal for you, wouldn't it?
I would have a chance to study it and understand more about compiling.
ASRock Z97 Extreme 6 motherboard, BTW.

The ioreg is corrupt.

Post ioreg: http://www.tonymacx86.com/audio/58368-guide-how-make-copy-ioreg.html. Please, use the IORegistryExplorer v2.1 attached to the post! DO NOT reply with an ioreg from any other version of IORegistryExplorer.app.
 

Attachments

  • iMac di Giacomo.zip
    1.1 MB · Views: 68
Attached IOReg with every USB plugged and unplugged, original USBInjectAll.kext loaded and USB limit patch applied and DSDT
My limit is to build a correct SSDT. I guess it would be no big deal for you, wouldn't it?
I would have a chance to study it and understand more about compiling.
ASRock Z97 Extreme 6 motherboard, BTW.

Under XHC, HS03,HS04,HS07,HS08,HS11,HS12,SSP4,SSP5,SSP6 went unused, so you can omit these ports. It will be easy to stay under the 15-port limit that way....

Evidently, none of the ports on EH01/EH02 were used, so that controller can probably be disabled in BIOS (if you have the option).

Your device is 8cb1, so falls under 8xxx config.

My recommendation is to build an injector kext that contains only the ports you need, instead of creating a custom SSDT to drive USBInjectAll.kext.

I think you'll find creating the injector easier than trying to create an SSDT override for USBInjectAll, although either can be used to the same end.
 
Status
Not open for further replies.
Back
Top