Contribute
Register

Lenovo Y510p USB Troubleshooting

Status
Not open for further replies.
[Guide] Lenovo IdeaPad U330/U430/U530 using Clover UEFI

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

Correct. That was from your recommended OS check fix i applied before.

Not valid syntax. LOr takes two parameters.

My bad. I manually reverted the patch to post here. Forgot to remove LOr.

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

I don't get it. Should i remove the patch i applied before (Vista one) and apply this? Will they coincide?

Did you verify yet if on Windows whether your USB2 devices attach to EHC or XHC?

How to check that?

EDIT: It seems to be connected to \_SB.PCI0.XHC.RHUB.HS02 in windows. Also i use USB2.0 port for usb wifi just FYI.
 
[Guide] Lenovo IdeaPad U330/U430/U530 using Clover UEFI

...
I don't get it. Should i remove the patch i applied before (Vista one) and apply this? Will they coincide?

You should remove the patch you did before and apply only the "OS Check Fix (Windows 8)". That will insure you're getting the intended behavior. The reason I mentioned the order, is my _INI looks like this if I apply both patches:
Code:
        Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            Store (0x07D0, OSYS)
            If (CondRefOf (_OSI, Local0))
            {
                If (_OSI ("Linux"))
                {
                    Store (0x03E8, OSYS)
                }

                If (_OSI ("Windows 2001"))
                {
                    Store (0x07D1, OSYS)
                }

                If (_OSI ("Windows 2001 SP1"))
                {
                    Store (0x07D1, OSYS)
                }

                If (_OSI ("Windows 2001 SP2"))
                {
                    Store (0x07D2, OSYS)
                }

                If (_OSI ("Windows 2001.1"))
                {
                    Store (0x07D3, OSYS)
                }

[B]                If(LOr(_OSI("Darwin"),_OSI("Windows 2006")))
                {
                    Store (0x07D6, OSYS)
                }
[/B]
                If (_OSI ("Windows 2009"))
                {
                    Store (0x07D9, OSYS)
                }

[B]                If(LOr(_OSI("Darwin"),_OSI("Windows 2012")))
                {
                    Store (0x07DC, OSYS)
                }
[/B]
                If (_OSI ("Windows 2013"))
                {
                    Store (0x07DD, OSYS)
                }

                If (_OSI ("Linux"))
                {
                    Store (0x03E8, OSYS)
                }

                If (LGreaterEqual (OSYS, 0x07DC))
                {
                    If (WLEN)
                    {
                        Store (One, GP14)
                    }
                    Else
                    {
                        Store (Zero, GP14)
                    }

                    Store (One, WLST)
                }
            }

Because of the order, the "Windows 2012" wins, as that conditional is executed after the first one for "Windows 2006". Thus OSYS=0x7DC. But if they were reversed in order, you'd end up with OSYS=0x7D6.

How to check that?

EDIT: It seems to be connected to _SB.PCI0.XHC.RHUB.HS02 in windows. Also i use USB2.0 port for usb wifi just FYI.

It is probably easier for me to just look at what you have...

Download patchmatic: https://bitbucket.org/RehabMan/os-x-maciasl-patchmatic/downloads/RehabMan-patchmatic-2015-0107.zip
Extract the 'patchmatic' binary from the ZIP. Copy it to /usr/bin, such that you have the binary at /usr/bin/patchmatic.

In terminal,
Code:
rm -R ~/Downloads/RehabMan
mkdir ~/Downloads/RehabMan
cd ~/Downloads/RehabMan
patchmatic -extract

Post contents of Downloads/RehabMan directory (as ZIP).

Also, post ioreg: http://www.tonymacx86.com/audio/58368-guide-how-make-copy-ioreg.html. Please, use the IORegistryExplorer v2.1 attached to the post! DO NOT reply with an ioreg from any other version of IORegistryExplorer.app.

And output from:
Code:
kextstat|grep -y acpiplat
kextstat|grep -y appleintelcpu

Note: After your next post, I'll move all these off-topic posts to a new thread. I don't want to confuse people who actually have a u330/u430/u530.
 
[Guide] Lenovo IdeaPad U330/U430/U530 using Clover UEFI

....But if they were reversed in order, you'd end up with OSYS=0x7D6...
And that does not happen, right?

Patchmatic extract attached. I did not yet remove the OS check Vista patch, so both the Vista and 2012 patches are applied in DSDT as you can see.

I'm a little uncomfortable attaching my ioreg here. As i have created a unique SN, MLB and ROM, i can see my SN in IOReg. I don't yet know where MLB and ROM are in IOReg, but i think they are somewhere in there, any help?

Code:
191 intruder:RehabMan$ kextstat|grep -y acpiplat
   13    2 0xffffff7f82271000 0x65000    0x65000    com.apple.driver.AppleACPIPlatform (3.1) <12 11 7 6 5 4 3 1>
192 intruder:RehabMan$ kextstat|grep -y appleintelcpu
193 intruder:RehabMan$

I have removed AppleIntelCPUPowerManagementInfo.kext. P-states are working fine.

...Note: After your next post, I'll move all these off-topic posts to a new thread. I don't want to confuse people who actually have a u330/u430/u530...

Great idea. Add a thread "Lenovo Y510p Troubleshooting"
 

Attachments

  • RehabMan.zip
    32.4 KB · Views: 52
[Guide] Lenovo IdeaPad U330/U430/U530 using Clover UEFI

And that does not happen, right?

No way to know until I saw your DSDT. The order would be at the discretion of the original DSDT programmer.

Since you've posted your patchmatic, I can see the order is the same as mine, and it is fine to have both patches applied.

Patchmatic extract attached. I did not yet remove the OS check Vista patch, so both the Vista and 2012 patches are applied in DSDT as you can see.

I would suggest remove the older patch, just to avoid confusion.

I'm a little uncomfortable attaching my ioreg here. As i have created a unique SN, MLB and ROM, i can see my SN in IOReg. I don't yet know where MLB and ROM are in IOReg, but i think they are somewhere in there, any help?

Change SMBIOS/MLB/ROM settings temporarily and boot to collect ioreg.

Great idea. Add a thread "Lenovo Y510p Troubleshooting"

Will move...
 
Move done.

Thanks. IOreg attached.

You can see a "Bluetooth USB Host Controller" under usb tree. I have inbuilt Intel Wireless Centrino N-2230. The bluetooth is currently "on" and i'm unable to switch it off.
 

Attachments

  • Intruder’s MacBook Pro.ioreg.zip
    542 KB · Views: 53
Thanks. IOreg attached.

Add some debugging code to your DSDT's XSEL method.

Here's what I have in mine:
Code:
            Method (XSEL, 0, Serialized)
            {
                \rmdt.p4("XSEL1:", MAUL, U2PR, U3SS)
                \rmdt.p3("XSEL2:", PR2, PR3)
                \rmdt.p3("XSEL3:", PR2M, PR3M)
                If (LEqual (MAUL, One))
                {
                    If (LOr (LEqual (XHCI, 0x02), LEqual (XHCI, 0x03)))
                    {
                        Store (One, XUSB)
                        Store (One, XRST)
                        Store (U3SS, PR3)
                        Store (U2PR, PR2)
                    }
                }
                Else
                {
                    If (LOr (LEqual (XHCI, 0x02), LEqual (XHCI, 0x03)))
                    {
                        Store (One, XUSB)
                        Store (One, XRST)
                        Store (Zero, Local0)
                        And (PR3, 0xFFFFFFC0, Local0)
                        Or (Local0, PR3M, PR3)
                        Store (Zero, Local0)
                        And (PR2, 0xFFFF8000, Local0)
                        Or (Local0, PR2M, PR2)
                    }
                }
            }

See ACPIDebug for more info on setup/kexts needed, etc: https://github.com/RehabMan/OS-X-ACPI-Debug

You might want to capture the output of XHCI as well. I did this previously with mine and found it is 3.

Also, check your BIOS settings for USB3. Those options feed into the values of MAUL, XHCI, etc.

My output in system.log is as follows:
Code:
Mar 28 04:46:17 u430 kernel[0]: ACPIDebug: { "XSEL1:", 0x1, 0x2, 0x1, }
Mar 28 04:46:17 u430 kernel[0]: ACPIDebug: { "XSEL2:", 0x0, 0x0, }
Mar 28 04:46:17 u430 kernel[0]: ACPIDebug: { "XSEL3:", 0x1ff, 0xf, }

So, it takes this path in XSEL:
Code:
                If (LEqual (MAUL, One))
                {
                    If (LOr (LEqual (XHCI, 0x02), LEqual (XHCI, 0x03)))
                    {
                        Store (One, XUSB)
                        Store (One, XRST)
                        Store (U3SS, PR3)
                        Store (U2PR, PR2)
                    }

After sleep, it shows:
Code:
Mar 28 04:46:17 u430 kernel[0]: ACPIDebug: { "XSEL1:", 0x2, 0x1, }
Mar 28 04:46:17 u430 kernel[0]: ACPIDebug: { "XSEL2:", 0x2, 0x1, }
Mar 28 04:46:17 u430 kernel[0]: ACPIDebug: { "XSEL3:", 0x1ff, 0xf, }

Note: I don't know why the DSDT calls XSEL after sleep... It seems to me that the values written to U3SS and U2PR are retained after a sleep/wake cycle and do not need to be re-written.
 
...You might want to capture the output of XHCI as well. I did this previously with mine and found it is 3....

Sorry i did not notice that. What debug trace to add for that?

...Also, check your BIOS settings for USB3. Those options feed into the values of MAUL, XHCI, etc...

Here you can see the settings for usb my BIOS offers.

This is what i got at first reboot with usb wifi attached :

Code:
Mar 28 20:33:54 localhost kernel[0]: ACPIDebug: { "XSEL1:", 0x0, 0x0, 0x0, }
Mar 28 20:33:54 localhost kernel[0]: ACPIDebug: { "XSEL2:", 0x3fff, 0xf, }
Mar 28 20:33:54 localhost kernel[0]: ACPIDebug: { "XSEL3:", 0x3fff, 0xf, }

after reboot without usb wifi :

Code:
Mar 28 20:40:08 localhost kernel[0]: ACPIDebug: { "XSEL1:", 0x0, 0x0, 0x0, }
Mar 28 20:40:08 localhost kernel[0]: ACPIDebug: { "XSEL2:", 0x0, 0x0, }
Mar 28 20:40:08 localhost kernel[0]: ACPIDebug: { "XSEL3:", 0x3fff, 0xf, }

after sleep without usb wifi (unable to sleep properly with usb wifi) :

Code:
Mar 28 20:49:07 Intruders-MacBook-Pro kernel[0]: ACPIDebug: { "_PTS enter", 0x3, }
Mar 28 20:49:07 Intruders-MacBook-Pro kernel[0]: ACPIDebug: "_PTS exit"
Mar 28 20:49:07 Intruders-MacBook-Pro kernel[0]: ACPIDebug: { "_WAK enter", 0x3, }
Mar 28 20:49:07 Intruders-MacBook-Pro kernel[0]: ACPIDebug: { "XSEL1:", 0x0, 0x0, 0x0, }
Mar 28 20:49:07 Intruders-MacBook-Pro kernel[0]: ACPIDebug: { "XSEL2:", 0x3fff, 0xe, }
Mar 28 20:49:07 Intruders-MacBook-Pro kernel[0]: ACPIDebug: { "XSEL3:", 0x3fff, 0xf, }
Mar 28 20:49:07 Intruders-MacBook-Pro kernel[0]: ACPIDebug: "_WAK exit"
Mar 28 20:49:07 Intruders-MacBook-Pro kernel[0]: Wake reason: PWRB (User)
 
Sorry i did not notice that. What debug trace to add for that?

For example...
Code:
\rmdt.p2("XSEL4: XHCI is", XHCI)

Here you can see the settings for usb my BIOS offers.

Experiment with XHCI mode.

This is what i got at first reboot with usb wifi attached :

Code:
Mar 28 20:33:54 localhost kernel[0]: ACPIDebug: { "XSEL1:", 0x0, 0x0, 0x0, }
Mar 28 20:33:54 localhost kernel[0]: ACPIDebug: { "XSEL2:", 0x3fff, 0xf, }
Mar 28 20:33:54 localhost kernel[0]: ACPIDebug: { "XSEL3:", 0x3fff, 0xf, }

Need to know value of XHCI.

Make sure your DSDT is patched from a recent extract. If the SystemMemory addresses are wrong, the data in that OperationRegion is not reliable.
 
Ok. I'll do that. But first i have to make changes in my DSDT patching script to remove not needed ssdt's. That'll take a while.
 
Status
Not open for further replies.
Back
Top