The difference is less pronounced than you might expect to see: [TRACKING] High Battery Drain During Suspend - #10 by Nils
and the followup: [TRACKING] High Battery Drain During Suspend - #48 by Nils
s2idle sleep with only USB-C expansion cards: around 0.8 W
deep sleep with only USB-C expansion cards: around 0.4 W
Maybe I’m interpreting the data differently…but that’s a 100% increase going from deep to s2idle.
at the follow-up, the number is much better. The difference, at least in that configuration, is almost completely resolved by nvme.noacpi=1
Ah…Got it. Thank you.
I’m testing that out now, in Linux. (On Windows, I got 0.32-0.33w like you did. So I guess that’s as good as it’s going to get in Linux)
Does anyone other than me have an 11th gen system that is on bios 3.20 and works fine with deep sleep and suspend? If you’re not on 3.20 and rely on deep sleep, please don’t dive in to test as you run the risk of losing that functionality. I am trying to understand why my machines work but others don’t. Both of them have the RTC replacement module installed.
Just checking. is this only on Linux or do you have that working on Win11 22H2
I have only tested it on linux, but I will boot up windows (I think I have win 10, not 11 on those machines/the expansion cards for them) and add a post with the outcome.
I have a horrible suspicion that Win 10 worked fine and Win 11 brought the issue to the front
Possibly, but we definitely have people running into the issue on linux as well.
I’m on an 11th gen FW13 and the 3.19 BIOS, just tried s2idle with four USB-C cards and the nvme.noacpi=1
option, and I calculate around 0.7 W/h consumed during suspend over the last three hours or so. I’ll try a more scientifical calculation overnight, but that’s about double what you reported. Have any tips?
11th gen, 3.20, Ubuntu 24.04.1 LTS, s2idle, 4 x USB-C…suspended for 8 hours and 15 minutes, depleted 8.1Wh. So burning at just under 1W.
I did not set the nvme.noacpi=1 option…Don’t see that from the Framework guides. There’s this where @Matt_Hartley mentioned the nvme.noacpi=1 hasn’t been required for quite sometime now: Ubuntu 24.04 on the Framework Laptop 13 - #36 by Matt_Hartley
Update with additional details:
Memory: 2 x 32GB (HX432S20IBK2/64)
SSD: Adata SX8200 1TB
Due to differences in configuration (memory brand and amount, brand of SSD) I suspect there will be differences in base line power use. I image it will depend on the type of SSD if the nvme.noacpi=1
option makes a difference. I haven’t tested for a while. I might try and see what results I presently get with 3.20 BIOS and fedora 40.
I don’t have those. I only have the original RTC battery. Maybe it is worth checking on the voltage and put a fresh one in or request that module from framework.
Good point, I’m updating the post above your with the additional details.
I’m now going to do a sleep test in Windows 11, again. See if there’s any changes now (vs when it was on BIOS 3.19).
By just taking the battery charge readings before and after s2idle sleep, I recently measured:
0.4 W with just USB-C and 0.93W with an HDMI and a USBA expansion card. This is for an 11th gen i7 with 16Gb memory. The laptop is running fedora 40 and I have TLP activated (and PowerProfile disabled). So it looks like nothing much has changed in terms of the software support and the expansion cards still take a very significant toll. It is a power use where on a 55Wh battery the laptop can survive for about 2 days in suspended state at a minimum. If you’re used to having the laptop plugged in frequently, that is quite workable.
What are you thinking about the nvme.noacpi=1 argument now? I saw a while back that it was taken out of Framework’s Fedora installation guide, along with the recommendation to use TLP, and somewhere Kieran (I think) said it hasn’t been necessary for a long time.
However, when nvme.noacpi=1 was first recommended in 2022, nrp said that it shouldn’t be necessary if we had the latest SN750 firmware, yet I was still measuring a significant difference despite having that latest firmware.
What are you thinking about the nvme.noacpi=1 argument now?
Nothing. I put it there originally when it had an enormous effect and haven’t had a reason to remove it. As far as I know, the SN730 hasn’t received firmware updates from what I received it with.
I’ve been measuring reduction in battery level every time I put the laptop to sleep the past couple days (calculating Wh from charge level * voltage level, not accounting for the voltage curve, but, close enough, I figure). There’s something about my numbers that doesn’t add up. It doesn’t seem like rebooting the laptop with different kernel parameters is sufficient to reliably commit the changes implied by the different kernel parameters. Maybe I need to reboot twice, or shut the laptop down fully instead of rebooting.
So far, s2idle w/o nvme.noacpi seems to use around 1.5 watts and deep sleep with or without nvme.noacpi uses either 0.9 watts or 0.5 watts, but I haven’t got reproducible numbers yet. I got that 0.5 watt number just now, but the laptop woke up too fast, without making me type in my password, for it to have been deep sleep. /sys/power/mem_sleep
says it’s deep
though.
s2idle w/o nvme.noacpi …deep sleep with or without nvme.noacpi…
I don’t think the nvme.noacpi argument was ever expected or measured to have any effect on deep sleep. The key test should be with and without the argument in s2idle.
People were using deep because s2idle was draining the battery, but the wake up time from deep was upwards of 10 seconds. The nvme.noacpi argument made s2idle on par with deep, so we could have instant wake up without the extra battery drain.
nvme.noacpi blocked using the ACPI power state handler call for the internal nvme drive which could power gate the internal m.2 ssd.
Our mainboard can fully power gate the m.2 ssd using a load switch in sleep, or other low power states, to offer some additional power savings.
I remember this worked around some compatibility issues with some drives, or higher power consumption.