Contribute
Register

Lenovo Y510p USB Troubleshooting

Status
Not open for further replies.
Joined
Apr 21, 2012
Messages
126
Motherboard
Lenevo Y510p IdeaPad
CPU
i7-4700MQ, HM86 (Haswell)
Graphics
Nvidia GT755M, Intel HD4600, 1920x1080
Mobile Phone
  1. Android
.....I noticed that after I booted into Win8.1 that my USB2 devices were attached to AppleUSBEHCI not XHCI. This is probably the way this laptop should work. After reading the 8-series chipset data sheet, I discovered the registers that enable USB2/EHCI passthrough from XHCI. In this DSDT, these registers are manipulated to enable this configuration when XSEL is called. XSEL is called if the DSDT believes Windows 2012 (or greater) is running. So... I changed the patched DSDT to simulate "Windows 2012" for "Darwin" (instead of "Windows 2006")....

If this info is from Intel 8-series data sheet, then all of the above [including patch (2006->2012)] should be generic (meaning for all 8-series) right?

Changed the way _PRW is handled for EHC/XHC/HDEF devices:

Instead of just removing them, I now return Package() { 0x6d, 0 }. The original return was Package() { 0x6d, 3 }. Reading the ACPI spec, this is how one disables "Wake on USB"/etc. If our BIOS had an option to disable wake on USB, this would be the effect. Although removing _PRW worked, it had the side effect of warnings about plugged in devices left across a sleep/wake cycle. This seems to fix that...

I don't quite understand this one. Does this mean no usb accessories can wake from sleep?

PS. This is what i have in EHC1/EHC2/XHC

Code:
Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
{
       Return (GPRW (0x0D, 0x03))
}

Should i change "method" to "name" as per your patch? and also rename "XHC" to "XHC1"?
 
[Guide] Lenovo IdeaPad U330/U430/U530 using Clover UEFI

If this info is from Intel 8-series data sheet, then all of the above [including patch (2006->2012)] should be generic (meaning for all 8-series) right?

The way to implement pass through is fairly generic. In the case of the u430, it was easy to see that enabling "Windows 2012" would do it, so I went with that. Other DSDTs may not work the same.

I don't quite understand this one. Does this mean no usb accessories can wake from sleep?

Correct. As has always been the case with my patches for this laptop.

There is probably a way to make this work properly... but that would require further research into the USB2/USB3 8-series datasheet details...

For my use, I'd rather not have USB devices wake the computer...

PS. This is what i have in EHC1/EHC2/XHC

Code:
Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
{
       Return (GPRW (0x0D, 0x03))
}

Should i change "method" to "name" as per your patch? and also rename "XHC" to "XHC1"?

You can probably use the patches as-is, except change the 0x6D to 0x0D.
 
[Guide] Lenovo IdeaPad U330/U430/U530 using Clover UEFI

Ok. Good to know. I am now using AppleUSB instead of GenericUSBXHCI. Without GenericUSBXHCI.kext -gux_defer_usb2 is not required right?

...For my use, I'd rather not have USB devices wake the computer...

Me too.
 
[Guide] Lenovo IdeaPad U330/U430/U530 using Clover UEFI

Ok. Good to know. I am now using AppleUSB instead of GenericUSBXHCI. Without GenericUSBXHCI.kext -gux_defer_usb2 is not required right?

Correct. -gux_defer_usb2 is specific to GenericUSBXHCI.kext.
 
[Guide] Lenovo IdeaPad U330/U430/U530 using Clover UEFI

Tried it. Works well. No wake on USB now. The mouse lights blink with every click (logitech g300 - so many led's) but it doesn't seem to interrupt wake process.

Only thing i had to change in patch is 0x6D -> 0x0D.

One more question though and it's a known problem. USB wifi unplug leads to kernel panic with AppleUSB drivers. I didn't find any solution for this. Its not important now but i just wanted to know if there's any fix (without GenericUSB). Thanks

EDIT: Just saw your edited post "except change the 0x6D to 0x0D." and that's exactly what i did.
 
[Guide] Lenovo IdeaPad U330/U430/U530 using Clover UEFI

...
One more question though and it's a known problem. USB wifi unplug leads to kernel panic with AppleUSB drivers. I didn't find any solution for this. Its not important now but i just wanted to know if there's any fix (without GenericUSB). Thanks

Is your USB WiFi attached to AppleUSBEHCI (not AppleUSBXHCI)?

Best solution: Don't use USB WiFi.
 
[Guide] Lenovo IdeaPad U330/U430/U530 using Clover UEFI

Is your USB WiFi attached to AppleUSBEHCI (not AppleUSBXHCI)....?

Its attached to AppleUSBXHCI

...Best solution: Don't use USB WiFi....

I know. It's very problematic. That's why i ordered a BCM94352HMB/AW-CE123H. Hope it also survives next os x releases.
 
[Guide] Lenovo IdeaPad U330/U430/U530 using Clover UEFI

Its attached to AppleUSBXHCI

Try simulating "Windows 2012" instead of "Windows 2006". If your computer works like my u430, that will enable the EHC for USB2 ports (kind of a pass through).

The "Windows 2012" can be accomplished with "OS Check Fix (Windows 8)" patch from my repo...

If you want to test this temporarily, I noticed on mine that if I restarted from Windows8.1 that USB2 devices attached to AppleUSBEHCI (because the DSDT when run under "Windows 2012" setup the passthrough, and it was retained across restart..)
 
[Guide] Lenovo IdeaPad U330/U430/U530 using Clover UEFI

Both methods did no help. My bad i was not clear on my problem. If i open wifi utility and select "turn off radio" it hangs and then if i remove wifi, kernel panic occurs. Otherwise if i just remove wifi from usb without opening wifi utility, all usb ports in my laptop simply shuts down and do not get powered up until restart/shutdown.

In my DSDT under _SB.PCI0._INI i already have this :

Code:
If (LOr (_OSI ("Darwin"), _OSI ("Windows 2006")))
{
     Store (0x07D6, OSYS)
     Store (One, ^LPCB.EC0.OSTY)
}

and this

Code:
If (LOr (_OSI ("Windows 2012"))
{
     Store (0x07DC, OSYS)
     Store (0x04, ^LPCB.EC0.OSTY)
}

what the patch did is changed above code to this

Code:
If(LOr(_OSI("Darwin"),_OSI("Windows 2012")))
{
     Store (0x07DC, OSYS)
     Store (0x04, ^LPCB.EC0.OSTY)
}
 
[Guide] Lenovo IdeaPad U330/U430/U530 using Clover UEFI

Both methods did no help. My bad i was not clear on my problem. If i open wifi utility and select "turn off radio" it hangs and then if i remove wifi, kernel panic occurs. Otherwise if i just remove wifi from usb without opening wifi utility, all usb ports in my laptop simply shuts down and do not get powered up until restart/shutdown.

As would be expected when attaching to AppleUSBXHCI...

In my DSDT under _SB.PCI0._INI i already have this :
Code:
If (LOr (_OSI ("Darwin"), _OSI ("Windows 2006")))
{
     Store (0x07D6, OSYS)
     Store (One, ^LPCB.EC0.OSTY)
}

and this

It is "OS Check Fix (Windows Vista)" patch.

Code:
If (LOr (_OSI ("Windows 2012"))
{
     Store (0x07DC, OSYS)
     Store (0x04, ^LPCB.EC0.OSTY)
}

Not valid syntax. LOr takes two parameters.

what the patch did is changed above code to this

Code:
If(LOr(_OSI("Darwin"),_OSI("Windows 2012")))
{
     Store (0x07DC, OSYS)
     Store (0x04, ^LPCB.EC0.OSTY)
}

Whether what you have will simulate "Windows 2012" (eg. set OSYS=0x7DC) will depend on the relative order of the conditionals you mention.

Did you verify yet if on Windows whether your USB2 devices attach to EHC or XHC?
 
Status
Not open for further replies.
Back
Top