Jump to content

Generic USB2.0 (EHCI) Driver


orByte
 Share

474 posts in this topic

Recommended Posts

Just wanted to report that this works on my custom install of 10.5.2. I included it in my new iso. The only issue is that when it is loaded I need to replug in my network cable to get it to show the cable plugged in. When I use the default usb kext I get two port working and have networking np. I need the four ports so I will replug for now.

 

Do you have any idea why this would mess with networking.

Also great wrk on this kext, keep it up bro.

 

I cannot think of anything. Here is the dif for 270.4.1 - There does not appear to be something in there. It could be due to differences between 270 and 308 - there seem to be a few changes but I have not yet time to look at it in detail. Best.

 

Only in IOUSBFamily-PCGen-270.4.1: .DS_Store
diff -i -E -b -r IOUSBFamily-270.4.1/AppleUSBEHCI/Classes/AppleUSBEHCI.cpp IOUSBFamily-PCGen-270.4.1/AppleUSBEHCI/Classes/AppleUSBEHCI.cpp
62a63,77
> 	// custom key defaults
> 	_alwaysHardBIOSReset = false;
> 	
> 	// get custom keys
> 	OSDictionary *usbEHCIDict;
> 	usbEHCIDict = OSDynamicCast(OSDictionary, propTable);
> 	if (OSDynamicCast(OSDictionary, usbEHCIDict) != NULL) {
> 		if (usbEHCIDict->getObject("AlwaysHardBIOSReset") != NULL)
> 		{
> 			OSBoolean * alwaysHardBIOSReset;
> 			alwaysHardBIOSReset = OSDynamicCast(OSBoolean, usbEHCIDict->getObject("AlwaysHardBIOSReset"));
> 			if (alwaysHardBIOSReset->isTrue()) _alwaysHardBIOSReset = true;
> 		}
> 	}			
> 	
385a401
> 	bool			isOwnershipConflict;
387c403
< 	USBLog(2, "Attempting to get EHCI Controller from BIOS");
---
> 	USBError(1, "Attempting to get EHCI Controller from BIOS");
395c411
< 
---
> 	USBError(1, "USBLEGCTLSTS value %x", (void*)_device->configRead32(eecp + kEHCI_USBLEGCTLSTS));
398c414,432
< 		USBLog(2, "Found USBLEGSUP_ID - value %p - writing OSOwned", (void*)data);
---
> 	
> 		//We try soft reset first - some systems hang on reboot with hard reset
> 		// Definitely needed during reboot on 10.4.6
> 		isOwnershipConflict = ((data & kEHCI_USBLEGSUP_OSOwned !=  0) && (data & kEHCI_USBLEGSUP_BIOSOwned !=  0));
> 		if (!_alwaysHardBIOSReset && isOwnershipConflict) 
> 		{
> 			USBError(1, "EHCI - Ownership conflict - attempting soft reset ...");
> 			USBError(1, "EHCI - toggle OS Ownership to 0");
> 			_device->configWrite32(eecp, data ^ kEHCI_USBLEGSUP_OSOwned);
> 			for (int i = 0; i < 25; i++)
> 			{
> 				data = _device->configRead32(eecp);
> 				if ((data & kEHCI_USBLEGSUP_OSOwned) == 0)
> 					break;
> 				IOSleep(10);			
> 			}
> 		}	
> 	
> 		USBError(1, "Found USBLEGSUP_ID - value %p - writing OSOwned", (void*)data);
409c443,466
< 		if ((_device->configRead32(eecp) & kEHCI_USBLEGSUP_BIOSOwned) != 0) 
---
> 		
> 		isOwnershipConflict = ((_device->configRead32(eecp) & kEHCI_USBLEGSUP_BIOSOwned) != 0);
> 		if (isOwnershipConflict) 
> 		{				
> 			// Soft reset has failed. Assume SMI being ignored
> 			// Hard reset
> 			// Force Clear BIOS BIT
> 			USBError(1, "EHCI - Ownership conflict - attempting hard reset ...");			
> 			USBError(1, "EHCI - Force BIOS Ownership to 0");
> 			_device->configWrite32(eecp, data ^ kEHCI_USBLEGSUP_BIOSOwned);
> 				for (int i = 0; i < 25; i++)
> 				{
> 					data = _device->configRead32(eecp);
> 					if ((data & kEHCI_USBLEGSUP_BIOSOwned) == 0)
> 						break;
> 					IOSleep(10);			
> 				}		
> 			// Disable further SMI events
> 			_device->configWrite32(eecp + kEHCI_USBLEGCTLSTS, 0);			
> 		}
> 		
> 		// Final Ownership Resolution Check...
> 		isOwnershipConflict = ((_device->configRead32(eecp) & kEHCI_USBLEGSUP_BIOSOwned) != 0);
> 		if (isOwnershipConflict)
414,415c471,473
< 		else
< 			USBLog(2, "acquireOSOwnership done - value %p", (void*)_device->configRead32(eecp));
---
> 		
> 		USBError(1, "acquireOSOwnership done - value %p", (void*)_device->configRead32(eecp));
> 
421a480
> 
diff -i -E -b -r IOUSBFamily-270.4.1/AppleUSBEHCI/Classes/AppleUSBEHCI_Interrupts.cpp IOUSBFamily-PCGen-270.4.1/AppleUSBEHCI/Classes/AppleUSBEHCI_Interrupts.cpp
266c266
<			 clock_get_uptime(&timeStamp);
---
>			 clock_get_uptime((uint64_t *) &timeStamp);
diff -i -E -b -r IOUSBFamily-270.4.1/AppleUSBEHCI/Classes/AppleUSBEHCI_RootHub.cpp IOUSBFamily-PCGen-270.4.1/AppleUSBEHCI/Classes/AppleUSBEHCI_RootHub.cpp
1131c1131
<		 clock_get_uptime( &_lastRootHubStatusChanged );
---
>		clock_get_uptime((uint64_t *) &_lastRootHubStatusChanged );
1207,1209c1207,1211
< 			clock_get_uptime( &currentTime );
< 			SUB_ABSOLUTETIME(&currentTime, &lastRootHubChangeTime );
< 			absolutetime_to_nanoseconds(currentTime, &elapsedTime);
---
> 			clock_get_uptime((uint64_t *) &currentTime );
> 			// Expand Macro below
> 			// SUB_ABSOLUTETIME(&currentTime, &lastRootHubChangeTime );
> 			(*(uint64_t *) (&currentTime)) -= (*(uint64_t *) (&lastRootHubChangeTime));
> 			absolutetime_to_nanoseconds((uint64_t) &currentTime, &elapsedTime);			
1364c1366
<		 clock_get_uptime(&_lastRootHubStatusChanged);
---
>		 clock_get_uptime((uint64_t *) &_lastRootHubStatusChanged);
diff -i -E -b -r IOUSBFamily-270.4.1/AppleUSBEHCI/Classes/AppleUSBEHCI_UIM.cpp IOUSBFamily-PCGen-270.4.1/AppleUSBEHCI/Classes/AppleUSBEHCI_UIM.cpp
1221c1221
<	 clock_get_uptime(&timeStamp);
---
>	  clock_get_uptime((uint64_t *) &timeStamp);
2154c2154
<	 clock_get_uptime(&timeStamp);
---
>	 clock_get_uptime((uint64_t *) &timeStamp);
3679c3679
<	 clock_get_uptime(&timeStamp);
---
>	 clock_get_uptime((uint64_t *) &timeStamp);
4148,4150c4148,4152
<		 clock_get_uptime( &currentTime );
<		 SUB_ABSOLUTETIME(&currentTime, &_lastCheckedTime );
<		 absolutetime_to_nanoseconds(currentTime, &elapsedTime);
---
>		  clock_get_uptime((uint64_t *) &currentTime );
> 		// Expand Macro below
>		 // SUB_ABSOLUTETIME(&currentTime, &_lastCheckedTime );
> 		(*(uint64_t *) (&currentTime)) -= (*(uint64_t *) (&_lastCheckedTime));
>		 absolutetime_to_nanoseconds((uint64_t ) &currentTime, &elapsedTime);		
4156c4158
<			 clock_get_uptime( &_lastCheckedTime );
---
>			 clock_get_uptime((uint64_t *) &_lastCheckedTime );
4169,4171c4171,4175
<				 clock_get_uptime( &currentTime );
<				 SUB_ABSOLUTETIME(&currentTime, &lastRootHubChangeTime );
<				 absolutetime_to_nanoseconds(currentTime, &elapsedTime);
---
>				  clock_get_uptime((uint64_t *) &currentTime );
>				 // Expand Macro below
> 				// SUB_ABSOLUTETIME(&currentTime, &lastRootHubChangeTime );
> 				(*(uint64_t *) (&currentTime)) -= (*(uint64_t *) (&lastRootHubChangeTime));
>				 absolutetime_to_nanoseconds((uint64_t) &currentTime, &elapsedTime);				
diff -i -E -b -r IOUSBFamily-270.4.1/AppleUSBEHCI/Headers/AppleUSBEHCI.h IOUSBFamily-PCGen-270.4.1/AppleUSBEHCI/Headers/AppleUSBEHCI.h
261a262,263
> 	bool									_alwaysHardBIOSReset;					// Default value of AlwaysHardBIOSReset key
> 	
diff -i -E -b -r IOUSBFamily-270.4.1/AppleUSBEHCI/Headers/USBEHCI.h IOUSBFamily-PCGen-270.4.1/AppleUSBEHCI/Headers/USBEHCI.h
561a562,566
> // USBLEGCTLSTS offset value
> enum {
> kEHCI_USBLEGCTLSTS = 4
> };
> 
diff -i -E -b -r IOUSBFamily-270.4.1/AppleUSBOHCI/Classes/AppleUSBOHCI.cpp IOUSBFamily-PCGen-270.4.1/AppleUSBOHCI/Classes/AppleUSBOHCI.cpp
122c122
<	 clock_get_uptime(&_lastCheckedTime);
---
>	  clock_get_uptime((uint64_t *) &_lastCheckedTime);
1174c1174
<		 clock_get_uptime (&timeStop);
---
>		 clock_get_uptime ((uint64_t *) &timeStop);
1176,1177c1176,1179
<		 SUB_ABSOLUTETIME(&timeStop, &timeStart); 
<		 absolutetime_to_nanoseconds(timeStop, &timeElapsed); 
---
> 		// Expand Macro below
>		 // SUB_ABSOLUTETIME(&timeStop, &timeStart);
> 		(*(uint64_t *) (&timeStop)) -= (*(uint64_t *) (&timeStart));
>		 absolutetime_to_nanoseconds((uint64_t) &timeStop, &timeElapsed); 		
diff -i -E -b -r IOUSBFamily-270.4.1/AppleUSBOHCI/Classes/AppleUSBOHCI_Interrupts.cpp IOUSBFamily-PCGen-270.4.1/AppleUSBOHCI/Classes/AppleUSBOHCI_Interrupts.cpp
435c435
< 			clock_get_uptime(&timeStamp);
---
> 			clock_get_uptime((uint64_t *) &timeStamp);
diff -i -E -b -r IOUSBFamily-270.4.1/AppleUSBOHCI/Classes/AppleUSBOHCI_RootHub.cpp IOUSBFamily-PCGen-270.4.1/AppleUSBOHCI/Classes/AppleUSBOHCI_RootHub.cpp
794c794
<		 clock_get_uptime( &_lastRootHubStatusChanged );
---
>		 clock_get_uptime((uint64_t *) &_lastRootHubStatusChanged );
860,862c860,864
< 			clock_get_uptime( &currentTime );
< 			SUB_ABSOLUTETIME(&currentTime, &lastRootHubChangeTime );
< 			absolutetime_to_nanoseconds(currentTime, &elapsedTime);
---
> 			clock_get_uptime((uint64_t *) &currentTime );
> 			// Expand Macro below
> 			// SUB_ABSOLUTETIME(&currentTime, &lastRootHubChangeTime );
> 			(*(uint64_t *) (&currentTime)) -= (*(uint64_t *) (&lastRootHubChangeTime));	
> 			absolutetime_to_nanoseconds((uint64_t) &currentTime, &elapsedTime);			
937c939
<		 clock_get_uptime(&_lastRootHubStatusChanged);
---
>		  clock_get_uptime((uint64_t *) &_lastRootHubStatusChanged);
diff -i -E -b -r IOUSBFamily-270.4.1/AppleUSBOHCI/Classes/AppleUSBOHCI_UIM.cpp IOUSBFamily-PCGen-270.4.1/AppleUSBOHCI/Classes/AppleUSBOHCI_UIM.cpp
2090,2092c2090,2094
<		 clock_get_uptime( &currentTime );
<		 SUB_ABSOLUTETIME(&currentTime, &_lastCheckedTime );
<		 absolutetime_to_nanoseconds(currentTime, &elapsedTime);
---
>		 clock_get_uptime((uint64_t *) &currentTime );
> 		// Expand Macro below
>		 // SUB_ABSOLUTETIME(&currentTime, &_lastCheckedTime );
> 		(*(uint64_t *) (&currentTime)) -= (*(uint64_t *) (&_lastCheckedTime));
>		 absolutetime_to_nanoseconds((uint64_t) &currentTime, &elapsedTime);		
2098c2100
<			 clock_get_uptime( &_lastCheckedTime );
---
>			  clock_get_uptime((uint64_t *) &_lastCheckedTime );
2111,2113c2113,2117
<				 clock_get_uptime( &currentTime );
<				 SUB_ABSOLUTETIME(&currentTime, &lastRootHubChangeTime );
<				 absolutetime_to_nanoseconds(currentTime, &elapsedTime);
---
>				  clock_get_uptime((uint64_t *) &currentTime );
> 				// Expand Macro below
>				 // SUB_ABSOLUTETIME(&currentTime, &lastRootHubChangeTime );
> 				(*(uint64_t *) (&currentTime)) -= (*(uint64_t *) (&lastRootHubChangeTime));
>				 absolutetime_to_nanoseconds((uint64_t) &currentTime, &elapsedTime);				
diff -i -E -b -r IOUSBFamily-270.4.1/AppleUSBUHCI/Classes/AppleUSBUHCI.cpp IOUSBFamily-PCGen-270.4.1/AppleUSBUHCI/Classes/AppleUSBUHCI.cpp
370c370
<		 clock_get_uptime(&_lastTime);
---
>		 clock_get_uptime((uint64_t *) &_lastTime);
1164c1164
<	 clock_get_uptime(&timeStamp);
---
> 	clock_get_uptime((uint64_t *) &timeStamp);
diff -i -E -b -r IOUSBFamily-270.4.1/AppleUSBUHCI/Classes/AppleUSBUHCI_Interrupts.cpp IOUSBFamily-PCGen-270.4.1/AppleUSBUHCI/Classes/AppleUSBUHCI_Interrupts.cpp
145c145
<			 clock_get_uptime(&timeStamp);
---
>			 clock_get_uptime((uint64_t *) &timeStamp);			
diff -i -E -b -r IOUSBFamily-270.4.1/AppleUSBUHCI/Classes/AppleUSBUHCI_RootHub.cpp IOUSBFamily-PCGen-270.4.1/AppleUSBUHCI/Classes/AppleUSBUHCI_RootHub.cpp
547,549c547,551
< 				clock_get_uptime(&currentTime);
< 				SUB_ABSOLUTETIME(&currentTime, &_portRecoveryTime[i-1] );
< 				absolutetime_to_nanoseconds(currentTime, &elapsedTime);
---
> 				clock_get_uptime((uint64_t *) &currentTime);
> 				// Expand Macro below
> 				// SUB_ABSOLUTETIME(&currentTime, &_portRecoveryTime[i-1] );
> 				(*(uint64_t *) (&currentTime)) -= (*(uint64_t *) (&_portRecoveryTime[i-1]));	
> 				absolutetime_to_nanoseconds((uint64_t) &currentTime, &elapsedTime);				
569c571
< 						clock_get_uptime(&_portRecoveryTime[i-1]);
---
> 						clock_get_uptime((uint64_t *) &_portRecoveryTime[i-1]);
624c626
< 		clock_get_uptime(&_rhChangeTime);
---
> 		clock_get_uptime((uint64_t *) &_rhChangeTime);
873,875c875,879
< 			clock_get_uptime( &currentTime );
< 			SUB_ABSOLUTETIME(&currentTime, &lastRootHubChangeTime );
< 			absolutetime_to_nanoseconds(currentTime, &elapsedTime);
---
> 			clock_get_uptime((uint64_t *) &currentTime );
> 			// Expand Macro below
> 			// SUB_ABSOLUTETIME(&currentTime, &lastRootHubChangeTime );
> 			(*(uint64_t *) (&currentTime)) -= (*(uint64_t *) (&lastRootHubChangeTime));	
> 			absolutetime_to_nanoseconds((uint64_t) &currentTime, &elapsedTime);			
diff -i -E -b -r IOUSBFamily-270.4.1/AppleUSBUHCI/Classes/AppleUSBUHCI_UIM.cpp IOUSBFamily-PCGen-270.4.1/AppleUSBUHCI/Classes/AppleUSBUHCI_UIM.cpp
1392c1392
<	 clock_get_uptime(&currentTime);
---
>	 clock_get_uptime((uint64_t *) &currentTime);
1527,1528c1527,1530
<	 SUB_ABSOLUTETIME(&t, &_lastTime);
<	 absolutetime_to_nanoseconds(t, &elapsedTime);
---
> 	// Expand Macro below
>	 // SUB_ABSOLUTETIME(&t, &_lastTime);
> 	(*(uint64_t *) (&t)) -= (*(uint64_t *) (&_lastTime));
>	 absolutetime_to_nanoseconds((uint64_t) &t, &elapsedTime);	
1547,1548c1549,1552
<				 SUB_ABSOLUTETIME(&t, &_rhChangeTime);
<				 absolutetime_to_nanoseconds(t, &elapsedTime);
---
> 				// Expand Macro below
>				 // SUB_ABSOLUTETIME(&t, &_rhChangeTime);
> 				(*(uint64_t *) (&t)) -= (*(uint64_t *) (&_rhChangeTime));
>				 absolutetime_to_nanoseconds((uint64_t) &t, &elapsedTime);				
1999c2003
<	 clock_get_uptime(&timeStamp);
---
>	 clock_get_uptime((uint64_t *) &timeStamp);
2118c2122
<	 clock_get_uptime(&timeStamp);
---
>	clock_get_uptime((uint64_t *) &timeStamp);
diff -i -E -b -r IOUSBFamily-270.4.1/IOUSBFamily/Classes/IOUSBDevice.cpp IOUSBFamily-PCGen-270.4.1/IOUSBFamily/Classes/IOUSBDevice.cpp
703,704c703,704
<	 clock_get_uptime(&currentTime);
<	 absolutetime_to_nanoseconds(currentTime, &elapsedTime);
---
> 	clock_get_uptime((uint64_t *) &currentTime);
>	 absolutetime_to_nanoseconds((uint64_t) &currentTime, &elapsedTime);
diff -i -E -b -r IOUSBFamily-270.4.1/IOUSBFamily/Classes/IOUSBLog.cpp IOUSBFamily-PCGen-270.4.1/IOUSBFamily/Classes/IOUSBLog.cpp
143,144c143,144
<			 clock_get_uptime(&currentTime);
<			 absolutetime_to_nanoseconds(currentTime, &elapsedTime);
---
>			 clock_get_uptime((uint64_t *) &currentTime);
>			 absolutetime_to_nanoseconds((uint64_t) &currentTime, &elapsedTime);
Only in IOUSBFamily-PCGen-270.4.1: IOUSBFamily-PCGen-270.4.1.xcodeproj
Only in IOUSBFamily-270.4.1: IOUSBFamily.xcodeproj
diff -i -E -b -r IOUSBFamily-270.4.1/IOUSBHIDDriver/Classes/IOUSBHIDDriver.cpp IOUSBFamily-PCGen-270.4.1/IOUSBHIDDriver/Classes/IOUSBHIDDriver.cpp
1031c1031
<	 clock_get_uptime(&timeStamp);
---
> 	clock_get_uptime((uint64_t *) &timeStamp);
diff -i -E -b -r IOUSBFamily-270.4.1/IOUSBUserClient/Classes/IOUSBDeviceUserClient.cpp IOUSBFamily-PCGen-270.4.1/IOUSBUserClient/Classes/IOUSBDeviceUserClient.cpp
498c498
< 		clock_get_uptime(&data->timeStamp);
---
> 		clock_get_uptime((uint64_t *) &data->timeStamp);
540c540
<		 clock_get_uptime(&data->timeStamp);
---
>		 clock_get_uptime((uint64_t *) &data->timeStamp);
diff -i -E -b -r IOUSBFamily-270.4.1/IOUSBUserClient/Classes/IOUSBInterfaceUserClient.cpp IOUSBFamily-PCGen-270.4.1/IOUSBUserClient/Classes/IOUSBInterfaceUserClient.cpp
863c863
< 		clock_get_uptime(&data->timeStamp);
---
> 		clock_get_uptime((uint64_t *) &data->timeStamp);
902c902
<		 clock_get_uptime(&data->timeStamp);
---
>		clock_get_uptime((uint64_t *) &data->timeStamp);

 

EDIT: Ooops I did the wrong diff. I should have done 303. But the basic result is the same... I suspect it could be a 303 vs 308 issue.

Link to comment
Share on other sites

Just wanted to confirm that I used:

 

1. Darwin 9.0.0 - PCGenUSBEHCI_303.4.5.kext.zip ( 121.04K ) Number of downloads: 1370

- Any support queries must include the output of 'kextstat' and 'dmesg | grep -i USB'. After the test phase, I will release full sources etc.

 

and followed these directions:

 

(A). The risk takers approach

---------------------------------------------------

 

sudo su

rm -R /System/Library/Extensions/IOUSBFamily.kext/Contents/Plugins/AppleUSBEHCI.kext

cp -R <path to>/PCGenUSBEHCI.kext /System/Library/Extensions/IOUSBFamily.kext/Contents/Plugins

chown -R root:wheel /System/Library/Extensions/IOUSBFamily.kext/Contents/Plugins/PCGenUSBEHCI.kext

chmod -R 755 /System/Library/Extensions/IOUSBFamily.kext/Contents/Plugins/PCGenUSBEHCI.kext

touch /System/Library/Extensions

shutdown -r now

 

I've got 10.5.1 installed on my HP dv8000t laptop and I've got 4 functional USB drives on the laptop. From what I can gather, the high speed USB is already there. :(

 

This is perfect. One step closer to having a fully functional hackintosh. :)

Link to comment
Share on other sites

orByte is possible to modify the AppleUSBEHCI.kext to make it not waking up the computer?

 

on some models the System.log shows USB (EHCI) causes wake event (or someting like that).

 

I deleted the AppleUSBEHCI.kext and my Lappy (Dell XPS M1330) can sleep propperly, but of course high speed devices are connected as USB 1.0 without EHCI kext.

 

I'm trying to see if part of the code can be modified to bypass that behavior, any suggestions?

 

PCGenUSBEHCI have the same result -_-

Link to comment
Share on other sites

orByte is possible to modify the AppleUSBEHCI.kext to make it not waking up the computer?

 

on some models the System.log shows USB (EHCI) causes wake event (or someting like that).

 

I deleted the AppleUSBEHCI.kext and my Lappy (Dell XPS M1330) can sleep propperly, but of course high speed devices are connected as USB 1.0 without EHCI kext.

 

I'm trying to see if part of the code can be modified to bypass that behavior, any suggestions?

 

PCGenUSBEHCI have the same result :D

 

Hi macgirl,

 

This is always something I wanted to work at but I never have got around to it. My understanding is not complete but here goes: Have a look at AppleUSBEHCI::CheckSleepCapability in AppleUSBEHCI_PwrMgmt.cpp esp. around lines 105-136. What happens there is that, the code decides what type of power management support to give to the (on-board & other) usb devices it finds. In Hackintosh units, according to the comments at 105-108, the APPL clock-id property is not found and all these devices are registered as non on-board with 'controller cannot sleep' at line 134. And, as a consequence, when EHCI is enabled the devices do not sleep properly. But I never went into detail, and it would be great for someone to look into.

 

Hope this helps :)

Best

Link to comment
Share on other sites

Just wanted to report that this works on my custom install of 10.5.2. I included it in my new iso. The only issue is that when it is loaded I need to replug in my network cable to get it to show the cable plugged in. When I use the default usb kext I get two port working and have networking np. I need the four ports so I will replug for now.Do you have any idea why this would mess with networking.Also great wrk on this kext, keep it up bro.
Hi again, I finally made a diff of 303 vs. 308 and it looks like in 308 there are some changes in interrupt handling. I suspect that could be the cause for the network troubles. Also, released my source for 303 in post 1 now: PCGen-303.4.5 sourceBest
Thanks a lot, I will play with that and see if I can make any change.
CheersPS: I have released the PCGen-303.4.5 source. Here it is: PCGen-303.4.5 sourceBest
Link to comment
Share on other sites

My understanding is not complete but here goes: Have a look at AppleUSBEHCI::CheckSleepCapability in AppleUSBEHCI_PwrMgmt.cpp esp. around lines 105-136.

 

I did remove the checks and always set sleepcapability to true, and for me it seem like it is working well.

Link to comment
Share on other sites

orByte, i follow all the steps to install...but doesnt work in my 10.5.2 with 9.2.0 (ToH) kernel.

My USB devices (like a pendrive) mounts on desktop and works, but slow (i think is working in USB 1.1 speed) the BIOS is set to USB 2.0

 

i'm using IOUSBFamily v 3.0.8. (the last version that comes with 10.5.2 upgrade)

Link to comment
Share on other sites

I've installed this Kext on an Asus P5B with Kalyway 10.5 updated to 1.5.2.

And that's worked great, no more error messages while booting the os.

My USB card reader know wors at every boot and my external USB 2 Hard drive

runs faster than before !!!!!

 

Great Job Mr orByte !!!

 

I'did remove the AppleUSBEHCI.kext from the plugins folder of IOUSBFamily.kext.

And installed the PCGenUSBEHCI.kext with KextHelper b7, rebooted and that's working fine. biggrin.gif

Link to comment
Share on other sites

Ok this is very confusing...how do I do this?

 

Do I do it like trauma23? remove the AppleUSBEHCI.kext from the plugins folder of IOUSBFamily.kext.

And installed the PCGenUSBEHCI.kext with KextHelper b7, and then reboot?

Or what?

 

Thanks

Link to comment
Share on other sites

Thanks a lot.

 

Works perfect on my Asus P5B with Vanilla kernel 9.2.2.

This is what I get during boot

 

USBF: 0.362 Found USBLEGSUP_ID - value 0x10001 - writing OSOwned

USBF: 0.622 EHCI - Ownership conflict - attempting hard reset ...

USBF: 0.622 EHCI - Force BIOS Ownership to 0

USBF: 0.622 acquireOSOwnership done - value 0x1000001

Link to comment
Share on other sites

 Share

×
×
  • Create New...