Starting point: fresh Fedora, old battery
Since October 2026 my Dell XPS 13 9320 has been running a freshly installed Fedora 44. At the start: BIOS 2.19.0, kernel 6.19.10. The battery is no longer young – upower still reports 67 % of its design capacity, roughly 36 of 54 Wh.
Important for everything that follows: this model no longer supports classic deep sleep (S3). It only offers the modern standby mode s2idle. You can see that directly in sysfs:
cat /sys/power/mem_sleepWith s2idle the system formally stays “on”, but the chipset is supposed to drop into a very low-power state called S0ix. If it doesn't, a laptop in standby is basically just a laptop with a dark screen.
The symptom: lid closed overnight, noticeably emptier in the morning
The problem was unspectacular: lid closed in the evening, and in the morning the battery was much emptier than you would expect from a laptop in standby. No error message, no crash – just a charge level that didn't add up.
Wrong turn: is it just the battery?
The obvious suspect was the battery itself. 67 % remaining capacity isn't much, and a weak battery quickly feels “empty”.
But that only explains half of it: an aged battery means shorter runtime, not higher consumption in standby. If the laptop is really asleep, it uses next to nothing even with a half-dead battery. The measurement in the next section finally ruled the suspicion out: the laptop hadn't been sleeping properly at all – no matter how good or bad the battery is.
Investigation: did the chip sleep at all?
The kernel keeps track of whether and for how long the chipset was in S0ix. There are two counters for this:
# Time in S0ix according to the Intel PMC driver (microseconds, debugfs, needs root)
sudo cat /sys/kernel/debug/pmc_core/slp_s0_residency_usec
# Time in system-wide low-power idle according to cpuidle (microseconds)
cat /sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_usI compared the values before and after a standby. The laptop sat with its lid closed from 14 Oct at 16:50 until 15 Oct at 10:08 – a good 17 hours. Result:
Counter: 0.
In 17 hours the chipset never reached the low-power state, not even for a second. The processor, parts of the chipset and the Wi-Fi stayed active all night. That made it clear the battery wasn't the problem – something was blocking S0ix.
The cause: “RAID On” a.k.a. Intel VMD
The search for the blocker ended in the BIOS. The SSD mode was set to “RAID On” – which means Intel VMD/RST. VMD preventing S0ix on Dell laptops under Linux is a known problem. Under Windows the Intel driver handles it; under Linux the chipset stays awake because of it.
On top of that, the BIOS was outdated: 2.19.0 was installed, 2.30.0 was current.
Before switching: will the system still boot afterwards?
Changing the storage mode in the BIOS is not entirely risk-free: if the boot image doesn't contain the matching driver, the system can no longer find its own SSD. So beforehand I checked that the NVMe driver is in the boot image (initramfs).
Only once that was confirmed did I go into the BIOS.
The fix in three steps
- Update the system. First I installed all Fedora updates; afterwards the kernel was 7.2.10.
- Update the BIOS. The BIOS update from 2.19.0 to 2.30.0 came through
fwupdmgrand was applied on reboot – with the power adapter connected. - Change the SSD mode. At startup I pressed F2 to enter the BIOS and switched Storage from “RAID On” to “AHCI/NVMe”. Fedora then booted normally.
The proof: the counter runs, the battery lasts
Short test on 15 Oct from 10:59 to 11:59: afterwards the S0ix counter read 60 minutes – practically the entire hour in the low-power state. Before, it had been zero after 17 hours. The battery went from 53 to 52 % in that hour.
Overnight test from 15 Oct 12:05 to 16 Oct 08:03, about 20 hours without the power adapter: the counter read 75,620 seconds – roughly the entire standby time. The battery dropped from 51 to 31 %.
Quick math: about 1 % per hour. At 36 Wh of remaining capacity that's around 0.36 W. A full battery would therefore last a good four days in standby.
What remains open
- Which change was it? I applied the BIOS update and the switch to AHCI/NVMe together. I didn't measure separately which of the two was decisive. The known reports point to the VMD mode as the cause.
- 1 %/h is more the upper limit of what you can expect. A healthy battery would have lost less in terms of watt-hours.
- A side finding from the same night – my restic backup ran into nothing after waking up – is a story of its own.
Conclusion
If a Linux laptop with s2idle drains its battery in standby, look at the S0ix counters before blaming the battery. If the counter is at zero after a night, the laptop simply isn't sleeping. On my XPS 13 9320 the culprit was the BIOS mode “RAID On” (Intel VMD). After a BIOS update and switching to “AHCI/NVMe” – check the initramfs first! – it reaches the low-power state all night long.
Ad · Affiliate link – if you buy through it, I may earn a commission. It doesn’t change the price for you.