Jump to content

[GUIDE] USB Fix El Capitan 10.11


830 posts in this topic

Recommended Posts

Based on your Ioreg, El Capitan couldn't detect PRT1 and PRT2 from your DSDT. I think the problem is that you have both HUBN and RHUB in EHC1/EHC2 (My DSDT only has RHUB).

 

On your Yosemite ioreg, your USB is: EHC1/2 (1d000000) > HUB (1d100000) > port (1d160000)

 

Try adding HUBN, UsbConnector=0, port = 01000000 to your EHC1/EHC2 device, and post ioreg again.

 

This worked!  :thumbsup_anim:

 

I added HUBN, UsbConnector=0, port=01000000 in both EHC1/EHC2 device.

The first boot into 10.11, all usb ports did not work.

But after rebuild kernel caches with KextUtility and reboot, the system recognize all usb ports (3 usb port, cam, bluetooth).

(The structure in IORegistryExplorer is not the same as in Yosemite)

 

Many thanks!

 

Here are the IORegistry data.

 

ElCapitan_IORegistry.zip

 

BTW:sleep does not work, after click to sleep, the system will go to sleep and then wakeup, after this all USB does not work again.

Any suggestions?

Link to comment
Share on other sites

For sleep, go to console, search for wake reason to find the reason of wake.

 

Post your DSDT.

 

Try patching DSDT with this:

# set _PRW methods to return 0

into method label _PRW parent_adr 0x001D0000 code_regex Return[^(]*\([^(]*\(([^,]*)[^)]*[^,]* replace_matched
begin
Return (Package(){%1,0})
end;
into method label _PRW parent_adr 0x001A0000 code_regex Return[^(]*\([^(]*\(([^,]*)[^)]*[^,]* replace_matched
begin
Return (Package(){%1,0})
end;
into method label _PRW parent_adr 0x00140000 code_regex Return[^(]*\([^(]*\(([^,]*)[^)]*[^,]* replace_matched
begin
Return (Package(){%1,0})
end;
into method label _PRW parent_adr 0x00190000 code_regex Return[^(]*\([^(]*\(([^,]*)[^)]*[^,]* replace_matched
begin
Return (Package(){%1,0})
end;
into method label _PRW parent_adr 0x00190000 code_regex (Return\s+\(.*) replace_matched
begin
Store (0x00, Index (Local0, 0x01))\n
%1
end;

To find out why USB does not work again, read this: http://www.insanelymac.com/forum/topic/306777-guide-usb-fix-el-capitan-1011/page-4?do=findComment&comment=2148854 Your case may be different, but the principle is the same: track your _WAK method and find out which one messed up your USB.

  • Like 1
Link to comment
Share on other sites

For sleep, go to console, search for wake reason to find the reason of wake.

 

Post your DSDT.

 

Try patching DSDT with this:

# set _PRW methods to return 0

into method label _PRW parent_adr 0x001D0000 code_regex Return[^(]*\([^(]*\(([^,]*)[^)]*[^,]* replace_matched
begin
Return (Package(){%1,0})
end;
into method label _PRW parent_adr 0x001A0000 code_regex Return[^(]*\([^(]*\(([^,]*)[^)]*[^,]* replace_matched
begin
Return (Package(){%1,0})
end;
into method label _PRW parent_adr 0x00140000 code_regex Return[^(]*\([^(]*\(([^,]*)[^)]*[^,]* replace_matched
begin
Return (Package(){%1,0})
end;
into method label _PRW parent_adr 0x00190000 code_regex Return[^(]*\([^(]*\(([^,]*)[^)]*[^,]* replace_matched
begin
Return (Package(){%1,0})
end;
into method label _PRW parent_adr 0x00190000 code_regex (Return\s+\(.*) replace_matched
begin
Store (0x00, Index (Local0, 0x01))\n
%1
end;

To find out why USB does not work again, read this: http://www.insanelymac.com/forum/topic/306777-guide-usb-fix-el-capitan-1011/page-4?do=findComment&comment=2148854 Your case may be different, but the principle is the same: track your _WAK method and find out which one messed up your USB.

 

I found this

15/6/28 上午10:39:12.000 kernel[0]: Wake reason: EHC2

Can you help me fix the dsdt file? I did not know how to fix dsdt.

Thanks.

Here is the  DSDT file.

 

DSDT.aml.zip

Link to comment
Share on other sites

Hello Pokenguyen !

 

I also have issues with sleep on my D830. USB ports are all recognized thanks to DummyUSBEHCIPCI.kext but the system won't sleep and of course not wake. It looks like more it's just crashed :(.

 

Therefore, syslog isn't very helpful :unsure: :

MacBook-Pro:~ polyzargone$ syslog | grep -i "wake reason"
Jun 27 23:20:35 MacBook-Pro kernel[0] <Notice>: Wake reason: USB2 PBTN LID EHC2 (User)

Here's my DSDT & IOreg :

 

PS : I tried to patch it with the code in post #77 but it does nothing in MaciASL :wacko::wallbash:

DSDT_polyzargone.zip

MacBook-Pro.ioreg.zip

Link to comment
Share on other sites

 

I found this

15/6/28 上午10:39:12.000 kernel[0]: Wake reason: EHC2

Can you help me fix the dsdt file? I did not know how to fix dsdt.

Thanks.

Here is the  DSDT file.

 

attachicon.gifDSDT.aml.zip

 

Try this DSDT.zip

Hello Pokenguyen !

 

I also have issues with sleep on my D830. USB ports are all recognized thanks to DummyUSBEHCIPCI.kext but the system won't sleep and of course not wake. It looks like more it's just crashed :(.

 

Therefore, syslog isn't very helpful :unsure: :

MacBook-Pro:~ polyzargone$ syslog | grep -i "wake reason"
Jun 27 23:20:35 MacBook-Pro kernel[0] <Notice>: Wake reason: USB2 PBTN LID EHC2 (User)

Here's my DSDT & IOreg :

 

PS : I tried to patch it with the code in post #77 but it does nothing in MaciASL :wacko::wallbash:

Try this DSDT.aml.zip

DSDT.zip

DSDT.aml.zip

Link to comment
Share on other sites

Thanks but sadly, it didn't change anything :(.

 

System is still "crashed like". Have to do hard reset.

 

[EDIT] The DSDT breaks USB device wake in Yosemite (sleep works). Only power button can wake up the system. :(.

I disabled the wake capacibility of SB2 PBTN LID EHC2. If they're not the cause, you have to check in WAK method.

Link to comment
Share on other sites

Hey !


So i've followed your advices, but when I use the dummy kext all the usb3 ports works as Usb2 Ports. I think the problem is the way my DSDT is maked.

I've a first section SB.PCI0 which contains XCH>RHUB>HS1 to 8 and SSP1 and SSP2. I've three others section named _SB.PCI0.XHC.RHUB which containts HC ports or SSP ports.


In the info.plist I've renamed XCH1 in XCH and add port with dsdt's adresses.

 

192863Sanstitre.png

 

i join my DSDT and my last info.plist from the dummyxhci kext. can you help me ?

 

Thank you !

 

(sorry for my bad english)

DSDT+info-plist.zip

Link to comment
Share on other sites

Hey !


So i've followed your advices, but when I use the dummy kext all the usb3 ports works as Usb2 Ports. I think the problem is the way my DSDT is maked.


I've a first section SB.PCI0 which contains XCH>RHUB>HS1 to 8 and SSP1 and SSP2. I've three others section named _SB.PCI0.XHC.RHUB which containts HC ports or SSP ports.


In the info.plist I've renamed XCH1 in XCH and add port with dsdt's adresses.

 

192863Sanstitre.png

 

i join my DSDT and my last info.plist from the dummyxhci kext. can you help me ?

 

Thank you !

 

(sorry for my bad english)

Your SSP3 is not at port 0x3. Look in your DSDT:

Device (SSP3)
            {
                Method (_ADR, 0, NotSerialized)  // _ADR: Address
                {
                    Return (Add (XSPA, 0x02))
                }
            }

Your SSP3 port = XSPA + 0x2. You have to calculate the value of XSPA (you can use ACPIDebug to check the value of XSPA).

 

Here is my guess. Because your USB 2.0 ports stop at HS14 0x0E, SSP1 should start at 0x0F, SSP2 0x10 and SSP3 0x11. Note that it's just my assumption, you should try it.

 

Another way to check the port of SSP1 is that you can remove port restriction, open ioreg and find SSP1, note the port value of SSP1, then you can calculate the port of SSP2, SSP3, SSP4...

  • Like 1
Link to comment
Share on other sites

That seems to be the new way, at least on the hacks I've tried. Seems no more multiplexing from XHC->EHC1 (although it can be forced).

 

There is nothing wrong with it since the XHC controller can handle both USB2(HS) and USB3(SS).

 

It would be interesting if someone could post results (ioreg, System Information -> USB) from a real MacBookPro9,x which I think normally uses XCH->EHC1 multiplexing/passthru.

I've discovered a bit more regarding multiplex. It is there in Yosemite, but only for certain devices... And it is not done at startup.

 

- I find that, at startup, none of the EHCA/B/C/D methods are called (these are the methods that clear bits in PR2 which cause USB2 routing to EHC from XHC).

- if you plug in USB mouse, it will attach to XHC

- if you plug a USB2 flash drive, it will call one of the EHCA methods which turns on multiplexing for that port, flash drive connects to EHC1

- if you then plug a USB mouse to the same port, it will attach to EHC1

- could be ProBook specific: if you plug a USB3 device into a USB3 port, it disables USB mouse in USB3 port. Mouse is restored upon unplugging USB3 device. This bug is in Yosemite and 10.11. If you plug a USB2 flash drive along with a USB3 flash drive, interestingly, the USB2 flash still works (unlike the mouse).

 

At any rate, I've found an easy way to force USB2 routing from XHC using mods to FakePCIID. It is a bit easier than messing with the Multiplex patch.

 

Also... working to understand more about the Multiplex patch. I think only a subset of it is required (so far XHCA/B/C/D are never called... only EHCA/B/C/D on XHC).

Link to comment
Share on other sites

I've followed your method, and I've the same problem.

My port adresses are : 

HSx: 01 02 03 04 05 06 08 09 0A 0C 0B

And my SSP1 (the only working USB3 with no port restriction) : 0F

 

When i enable the restriction, all my port works as USB2 port. It's like USBEHCI take the control of all the USB ports. I join you my ioreg (with usb restriction) and my last dummyXCHI.

 

Thank you !

 

mini_165830about.png

Dummyxhci_ioreg.zip

Link to comment
Share on other sites

I've followed your method, and I've the same problem.

My port adresses are : 

HSx: 01 02 03 04 05 06 08 09 0A 0C 0B

And my SSP1 (the only working USB3 with no port restriction) : 0F

 

When i enable the restriction, all my port works as USB2 port. It's like USBEHCI take the control of all the USB ports. I join you my ioreg (with usb restriction) and my last dummyXCHI.

 

Thank you !

 

mini_165830about.png

Not enough details.

 

Maybe you're using Multiplexing (Note: kUSBMuxEnabled=true in EHC1) and all the devices you have plugged in are USB2.

 

If that is the case, the results you show would be expected.

Link to comment
Share on other sites

Not enough details.

 

Maybe you're using Multiplexing (Note: kUSBMuxEnabled=true in EHC1) and all the devices you have plugged in are USB2.

 

If that is the case, the results you show would be expected.

Which details do you need ?

 

I've add a DummyEHCI kext with kUSBMuxEnabled=false in ECH1 and EHC2 but I still having the same issue.

Link to comment
Share on other sites

Which details do you need ?

 

I've add a DummyEHCI kext with kUSBMuxEnabled=false in ECH1 and EHC2 but I still having the same issue.

You should start by describing the type of devices you've plugged in. Are they all USB2 or are some of them USB3?

 

It is not possible to determine from the image you provided.

 

As I implied in #88, your results are reasonable if all your devices are USB2 devices.

Link to comment
Share on other sites

You should start by describing the type of devices you've plugged in. Are they all USB2 or are some of them USB3?

 

It is not possible to determine from the image you provided.

 

The only USB3 devices I plugged is the PNY91008663. I tested it on all the USB3 ports.

Link to comment
Share on other sites

10.11 DP2 added 0x8cb18086. You can see the original kext.  Or just change 0x8c318086 to 0x8cb18086 in dummy kext.

 

 

The only USB3 devices I plugged is the PNY91008663. I tested it on all the USB3 ports.

 

 

OK It work with the VCH888 method ! So what i've done :

USBXHCI : Dummy with restriction port (Rename XHC1 to XHC, add port with the help of Ioregistry explorer, and change 0x8c318086 to 0x8cb18086 in dummy kext.

USBEHCI  : Disable kUSBMuxEnabled in ECH1 and ECH2

 

Thank you to all ! 

So, I will translate this method in macbidouille forum.

 

Edit : I add my 2 kext, if someone with a MSI Z97 gaming 5 needs it.

working_kext_MSI_Z97_gaming5.zip

Link to comment
Share on other sites

i'm using macpro6,1 smbios, and my front panel usb2 wont work but usb3 just ran fine both front and back.
then i'm looking into my dsdt and the usbehcipci on iousb kext,
there's only 1 EHCI (EHCI1) in the info.plist, but my board have 2 EHCI (EHCI1 and EHCI2).
post-1176412-0-45888200-1435674002_thumb.png
post-1176412-0-53508900-1435674005_thumb.png
so how to make it work ? sorry for my noob :P

my board is GA-B75-HD3
Thanks

Link to comment
Share on other sites

i'm using macpro6,1 smbios, and my front panel usb2 wont work but usb3 just ran fine both front and back.

then i'm looking into my dsdt and the usbehcipci on iousb kext,

there's only 1 EHCI (EHCI1) in the info.plist, but my board have 2 EHCI (EHCI1 and EHCI2).

attachicon.gifScreen Shot 2015-06-30 at 9.11.54 PM.png

attachicon.gifScreen Shot 2015-06-30 at 9.14.02 PM.png

so how to make it work ? sorry for my noob :P

my board is GA-B75-HD3

Thanks

Add EHC2 to info.plist and remove port restriction. Read the topic again until you can do that.

Link to comment
Share on other sites

I have a problem with my USB2.0 too. After I removed the port restriction it's still not working. And then I realized my USB ports in my DSDT aren't under any EHC. I don't know, if it's a problem. Anybody have any idea?

 

it says ehci and not ehc1

Link to comment
Share on other sites

×
×
  • Create New...