Edit: Last Modified: 24/12/08, Link to Slice's post added + signing off on this driver
*** Thanks to SLICE there is now an updated version of the USBEHCI driver, which also includes sleep support. Please go here for details: Slice's Post ***
PS: I am signing off on this driver. It was an enjoyable exercise. Thanks to everybody who contributed to its development. Anybody needing drivers for Kernel's 8.4.1 (10.4.6), 8.8.1 (10.4.8), 8.9.1 (10.4.9), 9.0.0 (10.5), 9.1.0 (10.5.1) pls. see below links.
LEOPARD READ FIRST: The 10.5.0/10.5.1 version is now ready. All kexts come as is without any warranty. Try them at your own risk. On my current MB, the EHCI ownership error does not happen - so I could not fully test, but nevertheless the version is working and should be OK. It should have compiled with 32/64 bit support.
1. Darwin 9.0.0/9.1.0 - PCGenUSBEHCI_303.4.5.kext.zip 121.04KB 16010 downloads - Any support queries must include the output of 'kextstat' and 'dmesg | grep -i USB'. After the test phase, I will release full sources etc.
SOURCE - PCGen-303.4.5-src (1.3MB, MD5 (PCGen-303.4.5.zip) = 69c29c39850e50c5d27e774ed076d399)
TIGER READ FIRST: The 10.4.9/8.9.1 version is now ready and includes full source. All kexts come as is without any warranty. Try them at your own risk. On my current MB, the EHCI ownership error does not happen - so I could not fully test, but nevertheless the 10.4.9/8.9.1 version is working should be OK. Best.
1. Darwin 8.9.1 - PCGenUSBEHCI-2.7.0.zip
MD5 (PCGenUSBEHCI-2.7.0.zip) = f28159b35fe4bf5dcc755fad10917c8d
2. Darwin 8.8.1 - PCGenUSBEHCI-261.4.2a.zip
MD5 (PCGenUSBEHCI-2.6.1a.zip) = 6fb66c0c36e37a01e751f321d54e8957
3. Darwin 8.4.1 - PCGenUSBEHCI-256.4.2a.zip
MD5 (PCGenUSBEHCI-2.5.6a.zip) = 364f268a209709fc8dcf451ac61ddc31
Compatibility Guidelines, 22/12/06
** Version <...>a fixes buggy SMI-bit13 handling ** (Thanks to mac fly for suggesting the solution)
** In practical terms, this extends support to machines that tried the reset but failed to do so. E.g., HP Pavillion 8000t NOW WORKS.
** See thread: for details.
1. For Darwin 8.9.1: USB 270.4.1 & 10.4.9 - use PCGenUSBEHCI-270.4.1 .
2. For Darwin 8.8.1: USB 261.4.2 & 10.4.8 - use PCGenUSBEHCI-261.4.2a .
2. For Darwin 8.4.1: USB 2.4.6 & 10.4.6; USB 256.4.2 & 10.4.7; USB 256.4.2 & 10.4.8 - use PCGenUSBEHCI-256.4.2a .
3. Thanks for all the reports! It seems to be working fine on DFI Lanparty now.
with ATI SB200 chipset (cause -couldn't replicate this on an ECS board, likely only a laptop issue).
DISCUSSION THREAD STARTS BELOW:
I have finally overcome teething problems and can now compile the Darwin, Open Source 256.4.2 IOUSBFamily kext AND get a usable kext.
However, I have been focusing on writing a version of AppleUSBEHCI.kext that will address the following problem(s):
(1) ON REBOOT/RESET one gets:
USBF: 20.136 EHCI controller unable to take control from BIOS
The problem appears to originate from a pci-quirk, which has to do with managing OS/BIOS ownership of the EHCI controller, and is not implemented in the Apple code. Not all systems may exhibit this error. Again, we are lucky to have the benefit of Linux - an excellent open source implementation - for a viable approach to dealing with this problem.
Briefly, while Apple implements
#define EHCI_USBLEGSUP_BIOS (1 << 16) /* BIOS semaphore */ #define EHCI_USBLEGSUP_OS (1 << 24) /* OS semaphore */, they do not IMPLEMENT
#define EHCI_USBLEGCTLSTS 4 /* legacy control/status */ #define EHCI_USBLEGCTLSTS_SOOE (1 << 13) /* SMI on ownership change */, which is actually a critical part of the management state machine (consequently on restart/reset BIOS reclaims but OS does not let go - so when you restart - no one gets it in the end). Well, in an unquirky world it would be taken care of by the BIOS, but hey! You know how it goes...
Oh yes, and the legacy part... Turning off legacy support in your BIOS may or may not make a difference. SO the best solution is porting these few lines + a few more over.
I shall keep you posted. Working title is: GenPCUSBEHCI.kext .