Contribute
Register

USB + Sleep + WebCam issues PRECISION M6500

Status
Not open for further replies.
Okay so I decided to start over conservatively because I think we were taking 1 step forward 2 steps back.

I took DSDT from origin. I saw it had EHCI instead of EHC1 and did have EHC2. I have encountered this situation for another laptop before. I renamed EHCI to EHC1 manually. Hope this is correct, else config.plist patch for EHCx --> EH0x wouldn't work. I also have AZAL-->HDEF in config.plist

You can rename EHCI->EH01 via config.plist. I don't know why you think you can't.

I fixed "PNP" and "Package" errors using your patches.

It sounds like you're not using the correct tools.
The only error in your native DSDT.aml is the *pnp issue (remove the '*').
If you have more errors than that, you used the wrong iasl.

I saw the _PRWs are different now.

How so?

Laptop sleeps but for all the wrong reasons. My EHC1 and EHC2 are completely kaput. USB2 ports external and internal (BT and WebCam) don't work. My USBInjectAll simply not doing anything. I have also temporarily removed SSDT injector reference from config.plist.

You forgot to apply "IRQ Fix" (your previous patched DSDT had it).
You should keep better notes regarding the patches you're using.
 
What I meant was MaciASL has a patch for fixing PNP so one does not have to edit manually.
When I said _PRWs look different, they have much more in them under EHCx nodes.
The reason I first renamed EHCI to ECH1 in DSDT was because I didn't want to mess with config.plist just yet.

To clarify, besides the PNP error I had a lot of "Package something" warnings for which you also have a patch under "Rehabman" group. So I applied that. I will be careful using words "error" vs "warning". Only PNP one was error preventing compilation.

I listed all the patches I applied. Didn't apply anything else that I didn't mention. Like I said I wanted to be conservative and not just keep applying not knowing what fixed / broke what functionality. So everything I applied in config.plist and DSDT.aml I listed in my previous post. So actually I am keeping note of patches I'm applying.

IRQ fix - Yes I had applied it before but now I'm trying to pay attention to the comments in the patches, and it says it will help HPET and AppledHDA and I was not having trouble with either. Will update this post with new set of problem reporting files based on outcome.
 
What I meant was MaciASL has a patch for fixing PNP so one does not have to edit manually.
When I said _PRWs look different, they have much more in them under EHCx nodes.
The reason I first renamed EHCI to ECH1 in DSDT was because I didn't want to mess with config.plist just yet.

To clarify, besides the PNP error I had a lot of "Package something" warnings for which you also have a patch under "Rehabman" group. So I applied that. I will be careful using words "error" vs "warning". Only PNP one was error preventing compilation.

I listed all the patches I applied. Didn't apply anything else that I didn't mention. Like I said I wanted to be conservative and not just keep applying not knowing what fixed / broke what functionality. So everything I applied in config.plist and DSDT.aml I listed in my previous post. So actually I am keeping note of patches I'm applying.

IRQ fix - Yes I had applied it before but now I'm trying to pay attention to the comments in the patches, and it says it will help HPET and AppledHDA and I was not having trouble with either. Will update this post with new set of problem reporting files based on outcome.

Warnings are not errors. No need to eliminate warnings. Don't apply patches that you don't have to.
 
Okay, I am being even more conservative. I started over.
1) PNP patch applied to DSDT
2) HPET, IRQ applied to DSDT
3) _PRW node removed from AZAL, PBTN, LID, EHC2

I have applied EHCI->EH01, EHC2->EH02,AZAL->HDEF in config.plist
USBInjectAll.kext loads fine and the injector SSDT also works fine.
I have BT, WebCam working before and after instant wake. And all external USB ports also work.

I have *not* removed _PRW from EHCI because the moment I do that I lose display after instant wake, just like before and I have to powercycle. So that looks like a closed door.

1)You mentioned we can remove even more _PRW, but I wanted to ask when I disable WebCam using kernel flag, my laptop sleeps, so if you can explain why we are removing _PRW from other places will help educate me. Also which others should I remove?
2)You mentioned _SJD, _RMV can be problematic. Can you be specific as to what I should do with them
3)S1D, S3D I will google for ACPI spec and hopefully find something I can understand
4)When you say OSI fix I think you are referring to OS Check Fix. The 3 patches available are not doing anything, so once again I need to google for "hotpatch" guide.

I hoped I would be a bit closer than before, but still in the same boat. Will try work remaining things out. Files attached
 

Attachments

  • Problem Reporting 9.zip
    2.6 MB · Views: 56
I have *not* removed _PRW from EHCI because the moment I do that I lose display after instant wake, just like before and I have to powercycle. So that looks like a closed door.

EHCI _PRW not related to your graphics issue... separate problem.

1)You mentioned we can remove even more _PRW, but I wanted to ask when I disable WebCam using kernel flag, my laptop sleeps, so if you can explain why we are removing _PRW from other places will help educate me. Also which others should I remove?

_PRW with the same GPE index are removed in order to disable "wake" via that GPE.

2)You mentioned _SJD, _RMV can be problematic. Can you be specific as to what I should do with them

Remove them.

4)When you say OSI fix I think you are referring to OS Check Fix. The 3 patches available are not doing anything, so once again I need to google for "hotpatch" guide.

The hotpatch guide is linked from the main ACPI patching guide:
https://www.tonymacx86.com/threads/guide-patching-laptop-dsdt-ssdts.232984/
 
I think I have done pretty much whatever you asked but not able to make a dent

I removed _EJD and _RMV names/methods.

I also removed _PSW in EHC2 because ACPI spec suggested _PRW and _PSW work together. Spec also says _PSW is deprecated and I'm supposed to use _DSW but I dunno how and couldn't find any examples. _PSW /_DSW is supposed to inform whether a particular device can wake the computer. In my case I don't want webcam to wake computer so I was trying to explore that option. So I could put _PSW back with the correct values if you can tell me that's something to pursue.

I haven't removed _PRW from EHCI because like I said then I lose display on instant wake.

Under EHC2 I fiddled with S1D and S3D moving it to lower power states (I think 0x03 is lower than 0x02 which were original values). Thinking if I can get device to lower powered state it would sleep the laptop.

I have applied OSI check fix patches as per your guide - renaming in config.plist and added SSDT for it.

So I can keep fiddling with S1D, S3D and OS version in the SSDT for OSI check fix, but not feeling optimistic it's going to fix anything.

One thing I need to understand is GPE Index. You mentioned remove all _PRW with same GPE index. GPE Index for _PRW that existed in EHC2 not clear to me. Seemed like it was 0, but I can't tell. So if you can tell me which other _PRWs to remove?
 

Attachments

  • Problem Reporting 10.zip
    2.6 MB · Views: 63
One thing I need to understand is GPE Index. You mentioned remove all _PRW with same GPE index. GPE Index for _PRW that existed in EHC2 not clear to me. Seemed like it was 0, but I can't tell. So if you can tell me which other _PRWs to remove?

The GPE index used by EHC2 _PRW is 0x0d.
Look:
Code:
            Device (EHC2)
            {
                Name (_ADR, 0x001A0000)  // _ADR: Address
                Name (_S1D, 0x02)  // _S1D: S1 Device State
                Name (_S3D, 0x02)  // _S3D: S3 Device State
                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Store (UPRW (0x00, 0x00), Local0)
                    If (LEqual (Local0, 0x03))
                    {
                        Return (Package (0x02)
                        {
                            0x0D,
                            0x03
                        })
                    }

                    If (LEqual (Local0, 0x01))
                    {
                        Return (Package (0x02)
                        {
                            0x0D,
                            0x01
                        })
                    }

                    Return (Package (0x02)
                    {
                        0x0D,
                        0x00
                    })
                }

All return values return a package with GPE index 0x0d.

--

The DSDT in ACPI/patched that you attached has unpatched _PRW:
Code:
                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Store (UPRW (Zero, Zero), Local0)
                    If (LEqual (Local0, 0x03))
                    {
                        Return (Package (0x02)
                        {
                            0x0D, 
                            0x03
                        })
                    }

                    If (LEqual (Local0, One))
                    {
                        Return (Package (0x02)
                        {
                            0x0D, 
                            One
                        })
                    }

                    Return (Package (0x02)
                    {
                        0x0D, 
                        Zero
                    })
                }

--

One simple question: If the wake is caused by your bluetooth controller, did you disable wake on bluetooth in sysprefs?
 
Wake is not caused by Bluetooth which is on EHCI. It is caused by WebCam on EHC2. In any case I don't see that option in SysPrefs (while that does not seem to be the issue anyways). Not using USB mouse.

Back to _PRW. Sorry if I'm being dense. The only 0x0D in the DSDT is the one under EHCI. You mentioned "is not patched". Previously I thought you said remove it. Needless to say I have not removed because I lose display on instant wake.

Can you tell me which patch to use for this EHCI _PRW? I'm assuming that's what you are saying. There are USB3 PRW patches but this is USB2 port. So there must be some other patch I'm not seeing.

EDIT: Please see if attached is what you meant. IT did not make any difference. And if I remove _PRW from EHCI then I lose display on instant wake, so... :(
 

Attachments

  • DSDT.aml.zip
    11.1 KB · Views: 52
Last edited:
Back to _PRW. Sorry if I'm being dense. The only 0x0D in the DSDT is the one under EHCI. You mentioned "is not patched". Previously I thought you said remove it. Needless to say I have not removed because I lose display on instant wake.

You must remove or patch all _PRW that use the GPE index that is causing instant wake.

Can you tell me which patch to use for this EHCI _PRW?

Read ACPI patching guide:
https://www.tonymacx86.com/threads/guide-patching-laptop-dsdt-ssdts.232984/

You can then look at the provided _PRW patches and decide if they work for you.
They are simple though, and simply change _PRW to return Package() { GPE, 0 }.
(where GPE is either 0x0d or 0x6d, depending on which patch you're looking at).

I'm assuming that's what you are saying. There are USB3 PRW patches but this is USB2 port.

Ignore the naming.
If you look at the content of the patch, you'll see it patches EHCI, LAN, HDA, and XHC.

EDIT: Please see if attached is what you meant. IT did not make any difference. And if I remove _PRW from EHCI then I lose display on instant wake, so... :(

No idea when you don't attach "Problem Reporting" files.

Since you have never been able to sleep the laptop, it is very likely you have other issues related to display sleep/computer sleep, unrelated to "instant wake" and _PRW.
 
Status
Not open for further replies.
Back
Top