Contribute
Register

<< Solved >> Battery draining fast after wake from sleep

Status
Not open for further replies.
Joined
May 17, 2011
Messages
152
Motherboard
Razer Blade 15 (2019)
CPU
i7-8750H
Graphics
UHD 630 | RTX 2070
Mac
  1. MacBook Pro
Mobile Phone
  1. Android
My laptop battery is draining fast when I close the lid and open it again (sleep and wake). On a fresh boot I'm getting around 4 hours of battery life, once I wake it up from sleep it's about 1:20 and the battery percentage is draining fast.

My guess is that on wake my dGPU is activated again, because even though my CPU idles at 0.8 ghz and pkg wattage is about 2, my fans are ramping up and my CPU starts getting hotter. It's around 42C on a fresh boot and somewhere between 55 and 60C after sleep.

I followed stonevils guide on github to get everything working. For disabling the dGPU I have to add an _INI method to \_SB.PCI0.PEG0.PEGP that calls \_SB.PCI0.PEG0.PEGP._OFF. Then there is a patch to \_SB.PCI0.GFX0._INI that also calls \_SB.PCI0.PEG0.PEGP._OFF.

Lastly I'm using the patch [gfx0] Disable/Enable on _WAK/_PTS (DSDT) in my DSDT.

I did some more digging and found that \_SB.PCI0.PEG0.PEGP.PS0 calls _ON (), so I commented that out but that didn't do anything. The only other thing I found was a call to \_SB.PCI0.PEG0.PEGP.INIO in my DSDT but I can't find that method anywhere else.

Another thing is that the internal display stays black after I open the lid. I have to close it and open it again and then it works. It's not a big deal for me but maybe that's something related to my problem.

I can't be 100% sure that it really is my dGPU draining my battery life as I don't know how to check for it. IOReg looks the same after sleep and I can't find anything in System Information either. But my laptop generates a lot of heat and fans are spinnig while my CPU is idle so that's the only thing that comes to mind.
 

Attachments

  • debug_20465.zip
    2.9 MB · Views: 71
I finally fixed it. I debugged my DSDT using RehabMans OS-X-ACPI-Debug and it all came down to one faulty method. Just deleting the contents solves the issue completely and I can now finally use sleep without the gpu going crazy afterwards.

This is the method that needs patching:

Code:
Method (RTEC, 0, NotSerialized)
{
    Store (YEAR, Local0)
    Store (FBC (Local0), RTYR)
    Store (MON, Local0)
    Store (FBC (Local0), RTMH)
    Store (DAY, Local0)
    Store (FBC (Local0), RTDY)
    Store (HOR, Local0)
    Store (FBC (Local0), RTHR)
    Store (MIN, Local0)
    Store (FBC (Local0), RTME)
}

Just deleting the contents of the method is probably not the most elegant solution but I couldn't figure out how to make it work otherwise. The Problem is that the variable Local0 will always be undefined.

Static patch to remove method contents:
Code:
into method label RTEC replace_content begin
\n
end;

Cheers!
 
Status
Not open for further replies.
Back
Top