Contribute
Register

Apple's USB 3.0 driver on non-Intel controllers *TESTING*

What's your USB3 controller?


  • Total voters
    95
Status
Not open for further replies.
Joined
May 31, 2011
Messages
7
Motherboard
GA-EP45-DS4
CPU
Core 2 Duo E6600
Graphics
Geforce 210
Mac
  1. MacBook Pro
  2. Mac mini
Classic Mac
  1. iMac
  2. LC
  3. Plus
  4. Power Mac
  5. PowerBook
  6. Quadra
Mobile Phone
  1. Android
  2. iOS
  3. Windows Phone
  4. Other
Hi all,

I've gotten the Apple USB 3.0 driver to load on non-Intel USB 3 XHCI controllers.

The way is simple, get IOUSBFamily.kext from the MacBook Pro 2012 Software Update 1.0 package using Pacifist or another extractor.

Put it in S/L/E with your favourite kext install method.

KEEP A BACKUP.

When this is done, open /S/L/E/IOUSBFamily.kext/Contents/PlugIns/AppleUSBXHCI.kext/Contents/Info.plist and modify:

Code:
			<key>IOUserClientClass</key>
			<string>IOUSBControllerUserClient</string>
		</dict>

to:

Code:
			<key>IOUserClientClass</key>
			<string>IOUSBControllerUserClient</string>
			<key>AllowAnyXHCI</key>
			<true/>
		</dict>

If you have the modified Lacie's USB 3 driver (PXHCD.kext) move it out of S/L/E

Reboot and Apple's driver will load for your controller.

However it does not seem to be quite stable yet, but this trick will also work with 10.7.5 and 10.8 and those versions may bring stability to the universe :p

I have tested with an ASMedia 2015 USB3<->SATA bridge with a NEC PCIe USB3 2-port controller (both branded by Conceptronic) and it puts the correct current (900mA), but it works at bursts, so slow that it seems to be crashed (less than 100bytes/sec).

However I'm not confident on my USB3 setup, because with the PXHCD driver I had previously my SATA bridge appeared as being on "SuperSpeed" but with incorrect current (200mA), and working slower than when connected to an USB2 port from my Intel ICH, and afaik, that should not happen.

appleusbxhci.png


BTW: With that strange slow behaviour, nothing strange on logs:

Code:
USBMSC Identifier (non-unique): AA04012700029786 0x90c 0x1000 0x1100
         0 [Level 7] [ReadUID 0] [Facility messagetracer] [com.apple.message.domain com.apple.kernel.external_modification] [com.apple.message.signature FinderLoadBundle(887B8EEE-2832-4334-B101-6F7CFF9E55A0)] [com.apple.message.signature2 Finder(3D95DBC7-C447-3597-94CD-D6DEAF15E9C2)] [com.apple.message.result noop]
 
Uhm? You choose a wrong one :p

IOHDIXController is the driver for .dmg files, not for any real device indeed.

Have you added the XHCI to the DSDT?

Have you modified Info.plist inside AppleUSBXHCI.kext as I told?
 
claunia said:
I've gotten the Apple USB 3.0 driver to load on non-Intel USB 3 XHCI controllers.


This is pretty amazing work! And it may indeed provide us, soon, with the USB 3.0 support we have been hoping for. But guys, from what i can tell the USB 3.0 driver has a whole lot of dependancies. And even with the full MPB2012 update installed (don't do this btw) you might not meet all those dependancies since its a delta update that requires certain pre-existing files on the shipping MBP.

Can i ask how you came to enable this plist flag? amazing find.
g\

EDIT:
also isn't the syntax on this edit odd?
Code:
<key>AllowAnyXHCI</key>
         <true/>

shouldn't it be:
Code:
<key>AllowAnyXHCI</key>
         <string>true</string>
??
 

Attachments

  • Screen Shot 2012-06-21 at 3.43.03 AM.png
    Screen Shot 2012-06-21 at 3.43.03 AM.png
    165.3 KB · Views: 832
Big message yours :p

genzai said:
claunia said:
I've gotten the Apple USB 3.0 driver to load on non-Intel USB 3 XHCI controllers.


This is pretty amazing work! And it may indeed provide us, soon, with the USB 3.0 support we have been hoping for. But guys, from what i can tell the USB 3.0 driver has a whole lot of dependancies. And even with the full MPB2012 update installed (don't do this btw) you might not meet all those dependancies since its a delta update that requires certain pre-existing files on the shipping MBP.

I have checked the dependencies and AFAIK all of them are already part of 10.7.4 (see the versions required). I also copied just the dependencies from the update (and the codependencies, and so) but nothing changed.

It may simply be that the driver is buggy or the controllers are buggy and the driver does not workaround them (I suffered that when USB2 was introduced). I bet for the second one because my controller/device pair suffers disconnections with PXHCD, Windows and Linux.

genzai said:
Can i ask how you came to enable this plist flag? amazing find.
g\
It was quite simple, so simple I'm really surprised no one found it before.
There is a command in Mac OS X that shows you all the strings inside an executable, I always run that over new drivers/frameworks (so I discovered facial-over-webcam recognition framework on ML), when done over AppleUSBXHCI it shows a string called AllowAnyXHCI. Sounded like a boolean, tried it and voilà!

genzai said:
EDIT:
also isn't the syntax on this edit odd?
Code:
<key>AllowAnyXHCI</key>
         <true/>

shouldn't it be:
Code:
<key>AllowAnyXHCI</key>
         <string>true</string>
??
No it shouldn't.

Using
Code:
<true/>
or
Code:
<false/>
is perfectly valid (and smaller) PLIST's XML syntax. Equivalents should be
Code:
<boolean>1</boolean>
or
Code:
<boolean>true</boolean>
.

AppleUSBXHCI is also able to output some more debug information but I'm yet to find the exact flag to make this happen.

About the "simulation", you just have a driver that names them differently and more appropriately like previous USB generations.
 
This is a status update.

I've checked the USB trace, and right now the XHCI gives no verbose output on 10.7.4, just undecoded entrypoints (dunno why, it should).

However the hub and mass storage drivers show correct output, so I don't see why it is not working.

Anyone with ML want to send me an usb trace log? (please don't connect anything to any USB port but just one thing to an USB3 port or the log will be huge)
 
Have you guys tried to enable xHCI/EHCI hand-off in the BIOS? As this could potentially be why USB 2.0 devices don't work.

On top of that, there are three different modes for xHCI in the BIOS which I'd suggest you test switching between to see if it makes any difference, as they enable slightly different behaviour for the Intel USB 3.0 controller. There's also a second mode that adds further changes, but I suggest reading the manual and then try them one by one to see if there's any actual difference.

I'm currently setting up my IB system, so I'll have a try once that's up and running.
 
Ok, for those not having enough USB 2.0 ports during install and are using a Gigabyte board, switching HS Port # (corresponding number) Switchable to Disabled sets the USB 3.0 ports to EHCI, or in less technical terms, this means that they operate just like a USB 2.0 port and OS X plays nice with them until the OS is installed.
 
This driver does not need a hack for Intel controllers.

Indeed the whole topic is not about the Intel controllers :p
 
Hi,
if you want more people try this method,
someone should upload the non modified IOUSBFamily.kext from the update or the modified one preferably.
it is a lot of time to download the update (1.2GB), extract the few MB kext file, modify it, for trying to make the apple usb3.0 kext working while people who wanted usb3.0 in their hackintosh have chosen a motherboard with NEC chip and made it work with the lacie's modified kext.

simplify the testing method this way and i think more people will try it.

anyway, :clap: for your discover.
 
Status
Not open for further replies.
Back
Top