Jump to content

GenericUSBXHCI USB 3.0 driver for OS X with source


928 posts in this topic

Recommended Posts

Managed to get GenericUSBXHCI to "work" under 10.11 by manually copying headers from 10.10 SDK. No USB bus seen under System Information/USB, but devices attached to the USB 3.0 controller mount fine. I had to delete AppleUSBXHCI.kext in order to get GenericUSBXHCI to load. Attached is the (very hacky) source.

 

I probably won't work on this anymore at all, as I have no need to (have native Intel 7 Series xHCI), but I guess it could be useful for someone.

 

RozeLID.png

j7nk2K8.png

Oh, great!

Should be cool to build a kext disabler that deceive OSX to load it instead of AppleUSBXHCI.kext, and add it to the GenericUSBXHCI.kext/Contents/PlugIns... :) 

 

EDIT

BTW IOProbeScore is set only to 1

Link to comment
Share on other sites

Oh, great!

Should be cool to build a kext disabler that deceive OSX to load it instead of AppleUSBXHCI.kext, and add it to the GenericUSBXHCI.kext/Contents/PlugIns...  :) 

 

EDIT

BTW IOProbeScore is set only to 1

 

Yes, should be possible, although I have no experience doing so  :P

 

Source is here if anyone's interested. More work needs to be done to make the controller properly recognized in System Information (probably will require rewriting using IOUSBHost* instead of IOUSB* from 10.10, but AppleUSBHostController doesn't seem to be documented.

  • Like 1
Link to comment
Share on other sites

The IOProbeScore on the Info.plist should be greater then the one on Apple kext to win the battle of witch kext will be run for the IO node involved, so that only one will be loaded.

I'm on Window and for several minutes I can't restart... later I want to take a look and try :)

 

THX for the idea

  • Like 2
Link to comment
Share on other sites

The IOProbeScore on the Info.plist should be greater then the one on Apple kext to win the battle of witch kext will be run for the IO node involved, so that only one will be loaded.

I'm on Window and for several minutes I can't restart... later I want to take a look and try :)

 

THX for the idea

 

Thanks, that worked (increased IOProbeScore to 2000, AppleUSBXHCIPCI.kext has IOProbeScore of 1000 for AppleUSBXHCIPPT).

  • Like 1
Link to comment
Share on other sites

Correct, no KP since I manually added the headers from the 10.10 IOKit framework. Simply building it with the 10.10 SDK and running it in 10.11 will panic because it can't find the (removed) IOUSB* headers.

~ ❯❯❯ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.11.2
BuildVersion:	15C50
~ ❯❯❯ kextstat | grep GenericUSBXHCI
   47    0 0xffffff7f80f9b000 0x18000    0x18000    net.osx86.kexts.GenericUSBXHCI (1.3.0b1) no UUID <46 12 7 5 4 3>
~ ❯❯❯ ioreg -rxn GenericUSBXHCI
+-o GenericUSBXHCI  <class GenericUSBXHCI, id 0x1000001d5, registered, matched,$
  | {
  |   "IOClass" = "GenericUSBXHCI"
  |   "CFBundleIdentifier" = "net.osx86.kexts.GenericUSBXHCI"
  |   "IOProviderClass" = "IOPCIDevice"
  |   "RM,Build" = "El Capitan-"
  |   "IOPCIClassMatch" = "0x0c033000"
  |   "ASMediaEDLTAFix" = Yes
  |   "IOUserClientClass" = "IOUSBControllerUserClient"
  |   "IOProbeScore" = 0x1388
  |   "IOPCITunnelCompatible" = Yes
  |   "IOPCIPauseCompatible" = Yes
  |   "IntelDoze" = No
  |   "IOMatchCategory" = "IODefaultMatchCategory"
  |   "IOPowerManagement" = {"ChildrenPowerState"=0x4,"DevicePowerState"=0x3,"C$
  |   "Errata" = 0x83b2000000
  |   "Card Type" = "Built-in"
  |   "ResetOnResume" = No
  |   "UpdatedSleepPropertiesExists" = Yes
  |   "ISTKeepAway" = 0x1
  |   "RM,Version" = "GenericUSBXHCI 1.3.0b1"
  | }
  |
  +-o XHCI Root Hub SS Simulation@14  <class IOUSBRootHubDevice, id 0x1000001e0$
  | +-o AppleUSBLegacyHub  <class AppleUSBLegacyHub, id 0x1000001eb, registered$
  | +-o IOUSBInterface@0  <class IOUSBInterface, id 0x1000001ed, !registered, !$
  +-o XHCI Root Hub USB 2.0 Simulation@14  <class IOUSBRootHubDevice, id 0x1000$
  | +-o AppleUSBLegacyHub  <class AppleUSBLegacyHub, id 0x1000001fa, registered$
  | +-o IOUSBInterface@0  <class IOUSBInterface, id 0x1000001fd, !registered, !$
  +-o 4-Port USB 3.0 Hub@15300000  <class IOUSBHubDevice, id 0x1000002c2, regis$
  | +-o AppleUSBLegacyHub  <class AppleUSBLegacyHub, id 0x1000002c3, registered$
  | +-o IOUSBInterface@0  <class IOUSBInterface, id 0x1000002c5, !registered, !$
  +-o 4-Port USB 3.0 Hub@15400000  <class IOUSBHubDevice, id 0x100000326, regis$
  | +-o AppleUSBLegacyHub  <class AppleUSBLegacyHub, id 0x100000327, registered$
  | +-o IOUSBInterface@0  <class IOUSBInterface, id 0x100000329, !registered, !$
  +-o SanDisk Ultra@15200000  <class IOUSBDevice, id 0x10000032a, registered, m$
    +-o IOUSBCompositeDriver  <class IOUSBCompositeDriver, id 0x10000032b, !reg$
    +-o IOUSBInterface@0  <class IOUSBInterface, id 0x10000032c, registered, ma$
      +-o IOUSBMassStorageClass  <class IOUSBMassStorageClass, id 0x10000032d, $
        +-o IOSCSIPeripheralDeviceNub  <class IOSCSIPeripheralDeviceNub, id 0x1$
          +-o IOSCSIPeripheralDeviceType00  <class IOSCSIPeripheralDeviceType00$
            +-o IOBlockStorageServices  <class IOBlockStorageServices, id 0x100$
              +-o IOBlockStorageDriver  <class IOBlockStorageDriver, id 0x10000$
                +-o SanDisk SanDisk Ultra Media  <class IOMedia, id 0x1000003f3$
                  +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x1000003f4$
                  +-o IOFDiskPartitionScheme  <class IOFDiskPartitionScheme, id$
                    +-o Untitled 1@1  <class IOMedia, id 0x1000003fa, registere$
                      +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x10000$


However, you won't see the xHCI controller in System Profiler. Probably because it's using the old headers.

  • Like 1
Link to comment
Share on other sites

Anyone know about any other solution for ASMedia 1042 USB 3.0 solution for El Capitan?

 

Thanks!!

 

On Asus X99-A mainboard, GenericUSBXHCI v1.2.7 seems to be working again with the latest update to Mac OS X El Capitan version 10.11.2.

 

External USB3 disk mounts perfectly fine with USB 3.0 transfer speeds.

Link to comment
Share on other sites

Hmm... it appears that 10.11.2 did somehow fix the panics caused by older versions of GenericUSBXHCI. Oh well, at least you can build it with the 10.11 SDK now.

 

 

Hey TheRacerMaster! I compiled the Xcode project and tested out the kext. It enabled my VIA 3.0 ports again on El Capitan 10.11.2! Would have never thought of this happening lol. 

 

But there was a problem, and for some reason the kext disables my GMYLE USB 4.0 Bluetooth dongle. No matter what port I connect it to, it doesn't work, even though it is receiving power which was a bummer. The only way it works is by removing the GenericUSBXHCI kext. 

 

Is there a reason why it makes my USB bluetooth dongle not work or get detected? Every other device like flash drives, printer, etc works. Though I do notice that even though the VIA 3.0 ports work, it won't charge an iPad (I believe this was always an issue). 

 

Attached compiled kext from Xcode project if somebody wants to test it out. Else you can download the source project files from TheRaceMaster's Github page, then open the project in Xcode, build it and the compiled kext will be in the products folder. 

GenericUSBXHCI.kext(10.11.x).zip

  • Like 3
Link to comment
Share on other sites

Hey TheRacerMaster! I compiled the Xcode project and tested out the kext. It enabled my VIA 3.0 ports again on El Capitan 10.11.2! Would have never thought of this happening lol. 

 

But there was a problem, and for some reason the kext disables my GMYLE USB 4.0 Bluetooth dongle. No matter what port I connect it to, it doesn't work, even though it is receiving power which was a bummer. The only way it works is by removing the GenericUSBXHCI kext. 

 

Is there a reason why it makes my USB bluetooth dongle not work or get detected? Every other device like flash drives, printer, etc works. Though I do notice that even though the VIA 3.0 ports work, it won't charge an iPad (I believe this was always an issue). 

 

Attached compiled kext from Xcode project if somebody wants to test it out. Else you can download the source project files from TheRaceMaster's Github page, then open the project in Xcode, build it and the compiled kext will be in the products folder. 

 

:)

 

thanks , works good for me ;)   ( GA 78LMTUSB3) ;)

 

            #108            

  • Like 1
Link to comment
Share on other sites

The Generic kexts work for me on 10.11.1 and on 10.11.2 no need for them.  The AppleUSBXHCI.kext supports my ASMedia1024 once again on my Asus Z97-Deluxe.  I have to still test on my Sabertooth X79.

  • Like 1
Link to comment
Share on other sites

I'm curious, what's the device ID of your ASM1042 on your Z97 board, and the ASM1042 on your X79 board? I'm thinking it's ASM1042 (0x1042) vs ASM1042A (0x1142) (newer revision, but most motherboard manufacturers still refer to it as ASM1042). ASM1042A is xHCI 1.0 compliant and has less issues (no broken streams, etc).

  • Like 2
Link to comment
Share on other sites

I'm curious, what's the device ID of your ASM1042 on your Z97 board, and the ASM1042 on your X79 board? I'm thinking it's ASM1042 (0x1042) vs ASM1042A (0x1142) (newer revision, but most motherboard manufacturers still refer to it as ASM1042). ASM1042A is xHCI 1.0 compliant and has less issues (no broken streams, etc).

 

You are right, I did not verify the Asus X79 yet.  The device ID for ASMedia on the Asus Z97 is 1142, not 1042.  I am about to try the updated driver.

 

Edited:

 

For the Asus X79, only 2 ports in the rear work for ASMedia1042, with the Generic driver.  The other two do not as well as the ASMedia USB connection in the mid section of the motherboard that connects to Case USB port in front.

 

The Fresco Fl100 PCIe card also gets disabled assuming its because the AppleUSBXHCI is disabled over the generic.  Its a great start though, maybe with some further future updates to sort things out.

Link to comment
Share on other sites

The KT005 is shown to be compatible with Windows, not Mac OS X even though it appears to be recognized in System Report on my system. Amazon says that the KT006 is the one here is natively supported on Mac Pro, which I overlooked. I am currently returning the KT4005 for the KT4006.

Hmm it states "other Mac OS needs GenericUSBXHCI open source USB3.0 xHC driver" in the description. And as we know, that wont work with 10.11. I do not see the specific chipset mentioned. So maybe you just better go with one of the Inateck ones, they work fine (apparently all of them, including the 5 port + internal header version I have myself). Also has very mixed reviews, personally I would stay away from that.

Which Inateck 5 port internal header are you referring to that u use?

Hey TheRacerMaster! I compiled the Xcode project and tested out the kext. It enabled my VIA 3.0 ports again on El Capitan 10.11.2! Would have never thought of this happening lol. 

 

But there was a problem, and for some reason the kext disables my GMYLE USB 4.0 Bluetooth dongle. No matter what port I connect it to, it doesn't work, even though it is receiving power which was a bummer. The only way it works is by removing the GenericUSBXHCI kext. 

 

Is there a reason why it makes my USB bluetooth dongle not work or get detected? Every other device like flash drives, printer, etc works. Though I do notice that even though the VIA 3.0 ports work, it won't charge an iPad (I believe this was always an issue). 

 

Attached compiled kext from Xcode project if somebody wants to test it out. Else you can download the source project files from TheRaceMaster's Github page, then open the project in Xcode, build it and the compiled kext will be in the products folder. 

 

It doesn't work with my non-Intel Renasas USB 3.0 chipset. Guess I shouldn't be surprised

 

Link to comment
Share on other sites

What exactly isn't working, and what's your chipset (vendor/device ID)?

I was trying to get my DAC to work on either one of my (2) USB 3.0 ports via Renasas which are integrated w/ my motherboard and I tried using ur kext to enable them but no dice. Also, how would I find my device ID if it doesn't show up in System Report.

 

 

O ok, I thought so. I had initially ordered this one . It would recognize my DAC in System Report but it wouldn't allow it to work. I'm returning it back for this one.

Link to comment
Share on other sites

×
×
  • Create New...