Jump to content

GenericUSBXHCI USB 3.0 driver for OS X with source


928 posts in this topic

Recommended Posts

It's the counter as described in #420.  Try this workaround.

Just WOW! Now it finally works on 10.9. It even outperform my NEC in BOT mode (same disk and AJA settings).

 

p.s. I experimented with CalDigit USB 3.0 driver on 10.9. There is interesting message about maximum block size and transformations yn syslog on disk / driver load:

 

26.10.13 10:38:39,000 kernel[0]: USBMSC Identifier (non-unique): AA010812120130293276 0x781 0x5580 0x10, 2
26.10.13 10:38:39,000 kernel[0]: USBF:    710. 94    Endpoint 0x81 of the USB device "Extreme" at location 0xfe100000:  converting Bulk MPS from 1024 to 512 (USB 2.0 Spec section 5.8.3)
26.10.13 10:38:39,000 kernel[0]: USBF:    710. 94    Endpoint 0x2 of the USB device "Extreme" at location 0xfe100000:  converting Bulk MPS from 1024 to 512 (USB 2.0 Spec section 5.8.3)

so, they somehow change that values from driver itself without USBFamily modification.

post-42158-0-14616300-1382770936_thumb.png

post-42158-0-13711800-1382770945_thumb.png

post-42158-0-66071600-1382770955_thumb.png

post-42158-0-04153800-1382770965_thumb.png

Link to comment
Share on other sites

Can you please test it on a UAS drive so we can see if ASM1042 still needs "broken streams" errata before I check this in?  Thanks. (Note: UAS is not disabled on ASM1042 in this build)

Just WOW! Now it finally works on 10.9. It even outperform my NEC in BOT mode (same disk and AJA settings).

Link to comment
Share on other sites

Can you please test it on a UAS drive so we can see if ASM1042 still needs "broken streams" errata before I check this in?  Thanks. (Note: UAS is not disabled on ASM1042 in this build)

Already done. I set <key>DisableUAS</key> <false/> And card not detected on boot. If I plug drive on live system with detected ASM1042 it silently disappears from system without any errors (PCI bus reconnect).

But, with disabled streams <key>DisableUAS</key> <true/> it works fine with UAS enclosure. Even faster than NEC with 5 endpoints on small transfers. Maybe with SSD we'll se the streams win on NEC ;-)

I think it's better to leave it disabled for ASM1042 but with ability to turn it on with Info.plist key <key>DisableUAS</key> <false/> (for tests). Maybe, if we'll find a way to enable it on 10.9, it will work without transfer errors.

I see spurious transfer events with UAS on NEC but it doesn't affect usage. Do you need performance tests about max linear transfers on this cards (I can try it with UAS + SSD later)?

 

p.s. Can't test it on 10.8.5:

 

 

 

 

26.10.13 12:00:47,474 com.apple.kextd[12]: Failed to load /System/Library/Extensions/GenericUSBXHCI.kext - (libkern/kext) link error.
26.10.13 12:00:47,000 kernel[0]: kxld[net.osx86.kexts.GenericUSBXHCI]: The super class vtable '__ZTV17IOUSBControllerV3' for vtable '__ZTV14GenericUSBXHCI' is out of date. Make sure your kext has been built against the correct headers.
26.10.13 12:00:47,000 kernel[0]: kxld[net.osx86.kexts.GenericUSBXHCI]: The super class vtable '__ZTV12IOUserClient' for vtable '__ZTV24GenericUSBXHCIUserClient' is out of date. Make sure your kext has been built against the correct headers.
26.10.13 12:00:47,000 kernel[0]: kxld[net.osx86.kexts.GenericUSBXHCI]: The super class vtable '__ZTV17IOUSBControllerV3' for vtable '__ZTV14GenericUSBXHCI' is out of date. Make sure your kext has been built against the correct headers.
26.10.13 12:00:47,000 kernel[0]: kxld[net.osx86.kexts.GenericUSBXHCI]: The super class vtable '__ZTV12IOUserClient' for vtable '__ZTV24GenericUSBXHCIUserClient' is out of date. Make sure your kext has been built against the correct headers.
26.10.13 12:00:47,000 kernel[0]: Can't load kext net.osx86.kexts.GenericUSBXHCI - link failed.
26.10.13 12:00:47,000 kernel[0]: Failed to load executable for kext net.osx86.kexts.GenericUSBXHCI.
26.10.13 12:00:47,000 kernel[0]: Kext net.osx86.kexts.GenericUSBXHCI failed to load (0xdc008016).
26.10.13 12:00:47,000 kernel[0]: Failed to load kext net.osx86.kexts.GenericUSBXHCI (error 0xdc008016).

post-42158-0-15297900-1382773074_thumb.png

post-42158-0-78833500-1382773082_thumb.png

Link to comment
Share on other sites

I uploaded a new build of 1.2.7 with a workaround for this problem.

There's a new property in Info.plist

<key>ASMediaEDTLAFix</key>

<true/>

If ASMedia fixes this bug in a firmware update to ASM1042, the workaround needs to be disabled by setting this property to false.

 

I think it's better to leave it disabled for ASM1042 but with ability to turn it on with Info.plist key <key>DisableUAS</key> <false/> (for tests). Maybe, if we'll find a way to enable it on 10.9, it will work without transfer errors.

I see spurious transfer events with UAS on NEC but it doesn't affect usage. Do you need performance tests about max linear transfers on this cards (I can try it with UAS + SSD later)?

 

p.s. Can't test it on 10.8.5:

  • I left streams disabled on ASM1042.  They can be turned on (for the brave) by setting DisableUAS to false in Info.plist.
  • The spurious transfer events are acceptable.  If an application aborts a transfer on an endpoint, the interrupt handler might see (and safely discard) such events after shutting it down.
  • The new 1.2.7 should work on OS 10.8.5.  The temp build I made was built with OS 10.9 SDK :)
Edited by Zenith432
  • Like 1
Link to comment
Share on other sites

 

I uploaded a new build of 1.2.7 with a workaround for this problem.

There's a new property in Info.plist

If ASMedia fixes this bug in a firmware update to ASM1042, the workaround needs to be disabled by setting this property to false.

 

  • I left streams disabled on ASM1042.  They can be turned on (for the brave) by setting DisableUAS to false in Info.plist.
  • The spurious transfer events are acceptable.  If an application aborts a transfer on an endpoint, the interrupt handler might see (and safely discard) such events after shutting it down.
  • The new 1.2.7 should work on OS 10.8.5.  The temp build I made was built with OS 10.9 SDK :)

 

What to say: now it's almost perfect on 10.8.5. ASM1042 even correctly works there with streams enabled and NTFS formatted UAS drive connected.

 

Strange thing is: I updated from 1.2.8d1 to fixed 1.2.7 on 10.9, added <key>DisableUAS</key><false/> to it, and now it works with streams here also. No card disconnect on streams init. I dunno why )

So, 1.2.7 works with streams on 10.9 now too ;-)

post-42158-0-28298900-1382780438_thumb.png

post-42158-0-46708500-1382781574_thumb.png

  • Like 1
Link to comment
Share on other sites

ASM1042 probably doesn't need 'broken streams' errata.  Those ejections have something to do with IOPCIFamily which is responsible for PCIe hotplug.

What to say: now it's almost perfect on 10.8.5. ASM1042 even correctly works there with streams enabled and NTFS formatted UAS drive connected.

 

Strange thing is: I updated from 1.2.8d1 to fixed 1.2.7 on 10.9, added <key>DisableUAS</key><false/> to it, and now it works with streams here also. No card disconnect on streams init. I dunno why )

So, 1.2.7 works with streams on 10.9 now too ;-)

Link to comment
Share on other sites

ASM1042 probably doesn't need 'broken streams' errata.  Those ejections have something to do with IOPCIFamily which is responsible for PCIe hotplug.

Note sure whether to remove the errata.  Maybe someone with hardwired ASM1042 and UAS drive can verify if it works on 10.9 when DisableUAS is set to false.

Yup. that's the point. My ASMedia never appears again after card reconnect until reboot. But with 1.2.8d1 it was "hot plugged" in syslog with streams enabled on UAS drive connection. With 1.2.7 all is fine. It doesn't "hot plug" so correctly works with streams enabled. And I bet any hardwired card will work also. Is there in that binary (1.2.8d1 ticket16_4) any more changes which can affect hotplug behavior?

So, you can remove that errata with option to disable streams in plist in case it fail on systems like mine (but it actually doesn't do so anymore).

Link to comment
Share on other sites

The only thing that comes to mind is that I built it with OS 10.9 SDK, which links against IOPCIFamily, and all other external interfaces from OS 10.9... :unsure:

It might've also just been a fluke.  Maybe if you try booting again and again, 9 times out of 10 it'll work, and 1/10 it won't :)

Is there in that binary (1.2.8d1 ticket16_4) any more changes which can affect hotplug behavior?

Link to comment
Share on other sites

The only thing that comes to mind is that I built it with OS 10.9 SDK, which links against IOPCIFamily, and all other external interfaces from OS 10.9... :unsure:

It might've also just been a fluke.  Maybe if you try booting again and again, 9 times out of 10 it'll work, and 1/10 it won't :)

Yes ) It's random ) 3 reboots: 1st: card not detected at all (I need not reboot but power off even to reinitialize it's buggy fw). 2nd one - card detected, disappeared after UAS drive insert. 3rd reboot: card detected, not hot plugged on UAS drive insert, works fine with streams. So, probably we don't need disable streams for it in general. Just add a note for such users about it happens sometimes on UAS drives under 10.9? ;-)

 

Nec one always detected on insert before boot, on hot plug in live system, etc ) but it's slower a bit and doesn't work with my second not UAS enclosure ) And I'm not sure which PCIe revision both.

Link to comment
Share on other sites

Ok, this issue is not related to streams.  I uploaded revised 1.2.7 with UAS enabled by default for ASM1042.

Yes. It's related to UAS drives insert. Sometimes there is hot plug event after this (on init of that streams?). There is no such behavior at all (not tested much) with streams disabled. So, if it happens often, people can add <DisableUAS><true/> to plist and avoid this situation. 

Link to comment
Share on other sites

hey, the driver is not working properly under 10.9.

 

I'm using intel 7-series board, hm77 specifically. With kext installed, USB3 ports can recognize usb2.0 devices perfectly, but not my USB3 portable hard disk. i tried 1.2.6, 1.2.7 but no luck. The kext works fine under 10.8.

 

Any idea what should I do? Thx!

  • Like 1
Link to comment
Share on other sites

A change I made in commit f63329 (from October 1) causes lag when connecting some devices.  Possibly failure to recognize them.

I reverted this change.

Uploaded a new 1.2.7 (dated Oct 27).

Uploaded a new 1.2.6 in Archives as well.

  • Like 1
Link to comment
Share on other sites

Thanks, Zenith432. I just upgraded to Mavericks. The GenericUSB kext (v1.2.6 -- ?) from TonyMac's [url=&quot;http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/&quot;]#####[/url] 6.0 would mount a USB2 device on the USB3 ports of my Gigabyte Z77-DS3H, but would not mount my one USB3 device -- an Anker SSD case with an OCZ 128GB SSD inside. I installed your Oct. 27 version 1.2.7 just now and all is well -- the Anker USB3 case works perfectly. Many thanks!

Link to comment
Share on other sites

Hey!
Just installed 1.2.7 on 10.9 fresh install to get Fresco Logic FL1000G working. USB3.0 port works great with 2.0 devices, but doesnt mount USB3.0 devices.
Im getting notification that flash drive wasnt unmounted properly.

 

Is there anything i can do to make it work?

 

Link to comment
Share on other sites

I'm using GA-Z77-DS3H, I've installed the 1.2.7 version and the devices are recognized and work but when transferring files greater than 2GB aprox. the transfer stops and and gets stuck. In fact it transfers some data each 4 minutes and stops. I'm using Mavericks. Any help apreciated.

Link to comment
Share on other sites

I am still having issues with USB3 drives randomly dismounting. Lacie Rugged and Sharkoon Quickport U3. Both on 10.8.5suppl. and Mavericks. They are fine on FW800. Its been rock solid on 10.8.5 before the supplemental update. I am now using 1.2.7. I am really hoping for a solution! 

Link to comment
Share on other sites

I am still having issues with USB3 drives randomly dismounting. Lacie Rugged and Sharkoon Quickport U3. Both on 10.8.5suppl. and Mavericks. They are fine on FW800. Its been rock solid on 10.8.5 before the supplemental update. I am now using 1.2.7. I am really hoping for a solution! 

Same issue i have found yesterday. 

Link to comment
Share on other sites

Fokke: Try installing IOUSBFamily.kext on 10.8.5 from 12F37 (i.e. the one from original 10.8.5, not supplemental).  See if that makes the ejections go away.

 

XLR: You need IOUSBFamily.kext version 630 on 10.8.5.

 

radargb, Actarus, Fokke: I uploaded a rebuild of 1.2.7 (dated Oct 30) with a correction for a regression I introduced when implementing the workaround for ASM1042 a few days ago. It may be related to the problems you describe.

 

Apologies for the daily rebuilds - they're all bugfixes. If 1.2.7 you have works - no need to update. The changes are documented in the ChangeLog.txt file on the 1.2.7Fixes branch.

  • Like 1
Link to comment
Share on other sites

Asmedia 1042, Asus P8P67M

 

1.2.7 on Mavericks. (plain, no edits to any kexts)

 

LaCie with USB3.0: recognized, works like a charm, gets OK speeds

Sandisk USB3.0 card reader: no go, system tries to mount volumes but ejects them immediately with a warning that "disk was not ejected properly"

 

CalDigitUSBxHCI on Mavericks

 

LaCie: when plugged in from boot, everything was fine. Trying to plug it in while system running gave immediate freezes -> restart required

Sandisk: worked like a charm

 

On 10.8.5 I used CalDigitUSBxHCI and both devices were working great.

Link to comment
Share on other sites

Fokke: Try installing IOUSBFamily.kext on 10.8.5 from 12F37 (i.e. the one from original 10.8.5, not supplemental).  See if that makes the ejections go away.

 

 

radargb, Actarus, Fokke: I uploaded a rebuild of 1.2.7 (dated Oct 30) with a correction for a regression I introduced when implementing the workaround for ASM1042 a few days ago. It may be related to the problems you describe.

 

I copied a IOUSBFamily.kext from a time machine backup and used Kextwizard to install it on a disk with Mavericks. Rebuild cache and repaired permissions using Kext Wizard. Then i installed this 30 okt 1.2.7 with Kext Wizard and rebuild cache/permissions. Booted this 10.9 disk and it gave me a kernel panic.

I reinstalled the 10.9 IOUSBFamily.kext and cache/permissions. Reboot left me with a grey apple screen hanging.

I ran [url=&quot;http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/&quot;]#####[/url] 6 with all the things a need, still a grey screen with an apple but no boot. Now i am stuck. 

Link to comment
Share on other sites

I said try installing IOUSBFamily 12F37 on 10.8.5.  Not on 10.9.

Anyway, sounds like kernelcache is stale.  Boot with '-f' to force reload kexts.  Or boot single-user '-s' and delete kernelcache in /S/L/Caches/com.apple.kext...../Startup.

I copied a IOUSBFamily.kext from a time machine backup and used Kextwizard to install it on a disk with Mavericks. Rebuild cache and repaired permissions using Kext Wizard. Then i installed this 30 okt 1.2.7 with Kext Wizard and rebuild cache/permissions. Booted this 10.9 disk and it gave me a kernel panic.

I reinstalled the 10.9 IOUSBFamily.kext and cache/permissions. Reboot left me with a grey apple screen hanging.

I ran ##### 6 with all the things a need, still a grey screen with an apple but no boot. Now i am stuck. 

Link to comment
Share on other sites

×
×
  • Create New...