Jump to content

GenericUSBXHCI USB 3.0 driver for OS X with source


928 posts in this topic

Recommended Posts

Hey Zenith or others who can help. I have a new system in that is based on a jetway board for pro tools. I have tried many things to get the USB 3.0 ports working properly with the applexhci drivers but the system just locks up as soon as I insert a drive or device. I have tried the various BIOS options for AUto/Smart Auto etc. There is no handoff option in BIOS for XHCI (only EHCI which is enabled). 

 

Now if I install your GenericUSBXHCI driver it DOES work, disks mount on the USB 3.0 bus and no system freeze which is awesome, but i normally prefer to use the apple drivers for the intel controller and the generic for third party controllers through an ioprobe edit (i have both controller types on most of my systems).

 

Though compatibility issues have been shrinking i still find the apple drivers tend to work with more devices on the intel controllers. And on occasion with generic driver installed it seems like the ports stop working or wont work with USB 2.0 devices. In any case my primary goal is to get the intel ports working with the apple driver on this board if thats possible.

 

I am attaching the original unmodified DSDT extracted with maciasl as well as my latest modified one which includes the DSDT edits (i think originally developed by mieze) that have worked to make the intel ports fully functional on other boards. Please let me know if there is any other info i can provide to help figure this out!

Thanks,

g\

Link to comment
Share on other sites

Change of plan regarding the problem with streams.

 

I think I've figured out why they don't work.  Have no way to test it.

 

So I uploaded 1.2.6d5 with a fix.

 

Streams are now enabled by default.  They can be disabled with kernel flag '-gux_nostreams'.

 

So for people with superspeed drives like LaCie or ExpansionDesk that are not recognized - please try 1.2.6d5 - see if the drive works with it.  If it still doesn't work, boot with kernel flag 'gux_nostreams' and see if it works that way.

 

Thanks.

Thanks for the information :) and the help. I hope it'll work

  • Like 1
Link to comment
Share on other sites

JorgeMax and everyone who have problem with USB 3.0 on Z77 add this: -gux_defer_usb2 -gux_no_idle

-gux_defer_usb2 enable USB 2.0 in USB 3.0 ports and -gux_no_idle fix mounting USB 3.0 devices in USB 3.0 ports. This work excellent for Z77A-G45

  • Like 3
Link to comment
Share on other sites

Please upload 'xhcdump running' with 1.2.6d5 and a USB3 connected to one of the ports.

Eat the version of "GnericUSBXHCI 1.2.6d5" has not worked here with USB 3.0, USB 2.0 only! My chipset is an Intel 7 series (B75). In "org.chameleon.boot.plist" is thus:

  • Like 1
Link to comment
Share on other sites

ok, realized i had miezes usb multiplex patch in my dsdt.  removed it and ran dump again.  no real change in usb behavior, but it did get rid of xhci errors in kernal log.  i'm attaching two dumps, both with 1.2.6d3.  one is with a corsair flash drive, the other is with an asmedia HDD dock.  the flash drive doesn't mount at all,  but the hdd dock mounts and unmounts in an endless loop.  tried 1.2.6d5 with and without the no streams flag. no change.  3rd dumps a charm?  hope this helps.  

XHCDump Running USB 3 Dock .zip

XHCDump USB 3 FLASH.zip

Link to comment
Share on other sites

daniesy: try booting with 1.2.6d5 and kernel flag "-gux_nostreams".  Then upload just the "xhcdump endpoints".

 

loKEY: The port itself appears to be defective.  See this

Port   8 PortSC CCS Y PED Y OCA N PR Y
           PLS RxDetect PP Y Speed Super PIC Off LWS N
           CSC N PEC N WRC N OCC N PRC N PLC N CEC N CAS N
           WCE N WDE N WOE N DR N WPR N
         PortPmsc U1 0 U2 0 FLA N PortLi LEC 140

for the flash drive.  It shows the stick connected, but LEC=140 is "link error count" means it's getting a barrage of errors trying to do I/O on the port.  For the USB 3 dock you have

Port   8 PortSC CCS N PED N OCA N PR Y
           PLS RxDetect PP Y Speed Unknown PIC Off LWS N
           CSC Y PEC N WRC N OCC N PRC N PLC N CEC N CAS N
           WCE N WDE N WOE N DR N WPR N
         PortPmsc U1 0 U2 0 FLA N PortLi LEC 102

shows it's trying to connect, with no success, and again LEC=102 a lot of errors reported.

Your first dump from post #314 also had a high error count on the same port

Port   8 PortSC CCS Y PED Y OCA N PR N
           PLS U0 PP Y Speed Super PIC Off LWS N
           CSC N PEC N WRC N OCC N PRC N PLC N CEC N CAS N
           WCE Y WDE Y WOE Y DR N WPR N
         PortPmsc U1 0 U2 0 FLA N PortLi LEC 65535

And in post #321

Port   8 PortSC CCS Y PED Y OCA N PR N
           PLS U0 PP Y Speed Super PIC Off LWS N
           CSC N PEC N WRC N OCC N PRC N PLC N CEC N CAS N
           WCE N WDE N WOE N DR N WPR N
         PortPmsc U1 0 U2 0 FLA N PortLi LEC 38578

 

This is on superspeed port 4 of the Intel chip.  Try superspeed ports 1-3 of the Intel chip, see if you get the same.

Link to comment
Share on other sites

Zenith432 when booting with nostreams flag, it stops hanging on boot and after, but nothing happens after. The device is still listed in System Profiler, but absent in diskutil list.

Found a device of class GenericUSBXHCI: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/RP02@1C,1/IOPCI2PCIBridge/XHC1@0/GenericUSBXHCI
Endpoint 1, Type Control, State Running
  Multiple 1, Interval 1 microframes, CErr 3, Max Burst 1, Max Packet Size 512
  Average TRB Length 8, Max ESIT Payload 0
Endpoint 8, Type Bulk Out, State Stopped
  Multiple 1, Interval 1 microframes, CErr 3, Max Burst 1, Max Packet Size 1024
  Average TRB Length 1024, Max ESIT Payload 0
  • Like 1
Link to comment
Share on other sites

JorgeMax and everyone who have problem with USB 3.0 on Z77 add this: -gux_defer_usb2 -gux_no_idle

-gux_defer_usb2 enable USB 2.0 in USB 3.0 ports and -gux_no_idle fix mounting USB 3.0 devices in USB 3.0 ports. This work excellent for Z77A-G45

Thanks friend! I added the boot flag: "-gux_no_idle" and both USB 2.0 devices with 3.0 are working like a charm! And did not have to restart the machine!

Zenith432! Now yes, your version 1.2.6d5 GenericUSBXHCI ML is working in 10.8.5! Thanks buddy agoara just need to work on "Mavericks 10.9 DP8" I have installed on another HDD, which does not recognize the USB's 2.0 and not 3.0.

post-1145065-0-48005200-1380366716_thumb.png

Link to comment
Share on other sites

So, to summarize

  • The fix I added for streams did not work.
  • Disabling streams makes the streams endpoints disappear - they do not act as normal bulk endpoints.
  • The drive can't work without streams support.

I don't have any streams drive to debug this problem with, and streams are a complex feature where many things can go wrong.  I went over the code, but couldn't see anything wrong with it.  So I don't see how this is going to be resolved any time soon...  Sorry.

 

Zenith432 when booting with nostreams flag, it stops hanging on boot and after, but nothing happens after. The device is still listed in System Profiler, but absent in diskutil list.

Link to comment
Share on other sites

FYI, I've uploaded 1.2.6d6 to the Snapshots area - it properly disables streams and forces streams endpoints to operate as normal bulk endpoints.  So if you have a non-working superspeed drive with streams - give this build a try with kernel flag '-gux_nostreams'.

Link to comment
Share on other sites

I'm still having freezes on login whenever I have a USB 3.0 drive plugged in, but I'm not sure it's the same problem as others are having. I can plug a thumb drive into my 3.0 ports without any issues. How do I know if my drive has streams endpoints? I installed 1.2.6d6 and put -gux_nostreams in the kernel flags but I still get a freeze on login. I'm using the built-in Etron EJ168 ports on my Z68XP-UD3 motherboard (UEFI bios), running 10.8.5.

Link to comment
Share on other sites

thanks for the heads up zenith.  yeah my other intel usb 3 ports on the back of the board work fine with your kext.  port 3 and 4 are are on a header to front of my case.  i guess the header cable must damaged or the connector on the board itself.  i never would have figured it out without you pointing out the errors as usb 2 and usb receivers work fine on the header.  thanks zenith.  good lookin out.

Link to comment
Share on other sites

Ive still got issues one a Z77 board with 1.2.6d8 and 10.9 as well (no issues in 10.8.5 or earlier). My issues are kind of really strange with 10.9. USB3 recognized and detects mass storage (seagate drive). However, while the disk is browsable and all files are listed in finder, attempting to open any files written to the disk causes IO errors and corruption messages form OSX. Basically you can browse files but cannot read them properly.

 

Booting into 10.8.5 and everything works. No corruption warnings and everything functions as before.

 

  • Z77 (Gene V) - i5 2500k
  • Installed in S/L/E
  • Made sure kext is in the exception plist with proper version
  • Also tried using the temporary flag "-gux_nosleep" without avail

Just posting this as a heads up so it can be cross referenced with issues experienced by others.

 

Borna.

Link to comment
Share on other sites

I could not make it work in Mavericks GM! Added the version of "GenericUSBXHCI Version 1.2.6" on kext "AppleKextExcludeList" and org.chameleon.boot.plist "the flags:"-gux_defer_usb2-gux_no_idle "My chipset is a B75.

Form to run the USB 3.0 ports on the Mavericks is different ML 10.8.x?
Link to comment
Share on other sites

Attached is Info.plist for AppleKextExcludeList.kext on 10.9GM.

After copying the file you should run 'sudo kextcache -system-c; sudo kextcache -system-p'.

 

There should be a space between kernel flags '-gux_defer_usb2 -gux_no_idle'.  Also, these flags are only useful if you have Intel Series 7 xhci.

I could not make it work in Mavericks GM!

Info.plist.zip

  • Like 1
Link to comment
Share on other sites

There's no need to add it to the excluded list, it will only warn you once that the extension is not signed and load it anyway. It's working perfectly on my Mavericks GM installation.

 

The exclusion list won't stop an extension from loading, at least not for now.

Link to comment
Share on other sites

Hi Zenith432, thanks for a great driver and your hard work! I have great success with your driver and Renesas uPD720202 ExpressCard32.

It works fine (even in UAS mode) with ASMedia 1051E enclosure, and I have 350 Mb/s read speeds under OS X 10.8.

 

One big issue with the driver is it always crashes my laptop if it wake from sleep with card inserted.

If I soft-eject it before sleep with statusbar icon, all is fine. If I just unmount the drive but not the card, I always have a crash on wake.

If I disconnect the drive, but not the card with soft-eject, there is no panic. Notebook wakes fine without issue.

Tried -gux_nosleep kernel flag without success. Crash dump and xhcidump output in attachment. If you need more info from xhcidump just let me know.

 

I also updated ExpressCard with latest firmware for Renesas uPD720202 to 2.0.2.0 version under Windows. It didn't help.

 

The same behaviour under OS X 10.9 GM. I have kernel panic there too in this situation.

 

Made ticket on SF. Is there anything I can do to resolve this issue?

kernel-panic.txt

xhcidump.txt

  • Like 1
Link to comment
Share on other sites

×
×
  • Create New...