Hi everyone,
As per guidance, I’m posting here with a persistent and thoroughly investigated issue regarding NVMe power consumption on my Framework Laptop. I’ve conducted extensive troubleshooting, and I believe I’ve pinpointed the exact kernel/platform override preventing deep sleep.
Required Details:
OS: Ubuntu
OS Release: 24.04 LTS (Noble Numbat)
Kernel Version: Mainline 6.15.6-061506-generic
Framework Laptop: 13th Generation AMD Ryzen HX 370 AI series (specifically a Framework Laptop 13 AMD)
Problem Description:
My NVMe SSDs consistently remain in the D0 (full power) state when idle, preventing deep power savings (like D3cold) and significantly impacting battery life. I’ve observed this behavior across two different drives, and through meticulous diagnostics, I’ve identified the precise kernel/platform overrides that appear to be the blocker.
Detailed Troubleshooting Journey:
Phase 1: Initial Investigation with WD_BLACK 4TB SN7100 NVMe (Retail - WDS400T4X0E)
Initial Status: Always showed D0 via cat /sys/class/nvme/nvme0/device/power_state.
Drive's Self-Reported Power Config: sudo nvme get-feature /dev/nvme0n1 -f 0xc -H consistently showed Autonomous Power State Transition Enable (APSTE): Disabled (all 32 Auto PST Entries were 0ms/State 0).
Attempted Fixes: Applied latest Framework BIOS; set kernel parameters: pcie_aspm=force nvme_core.default_ps_max_latency_us=0.
Result: Still stuck in D0. (Note: Unable to update firmware on Linux due to Western Digital's broken download servers for wd-fw-update).
Conclusion (SN7100): Seemed to be a fundamental firmware limitation (APSTE disabled) preventing proper deep sleep.
Phase 2: Transition to Samsung 990 EVO Plus 4TB (Retail - Controller: PM9C1a)
Reason for Change: Samsung advertises "Power Consumption (Device Sleep): Typical 5mW" for this drive.
Firmware Update: Updated to the latest firmware (version 2B2QKXG7) via Samsung Magician on a dedicated Windows PC (as it wouldn't work over USB).
Detailed Diagnostics with Samsung 990 EVO Plus (After Firmware Update & Parameters Applied):
Kernel Parameters Confirmed Loaded:
cat /proc/cmdline Output:
BOOT_IMAGE=/boot/vmlinuz-6.15.6-061506-generic root=UUID=45d0824f-b403-4d4f-ae78-ecd6cbe8b862 ro quiet splash pcie_aspm=force nvme_core.default_ps_max_latency_us=0 vt.handoff=7 vt.handoff=7
Drive's Self-Reported Power Config (CRITICAL CHANGE!):
sudo nvme get-feature /dev/nvme0n1 -f 0xc -H Output:
Autonomous Power State Transition Enable (APSTE): Enabled
(Initially showed disabled, but after the firmware update and kernel parameter attempts, it flipped to Enabled! Drive internally wants to go to Power State 3 after 100ms.)
Kernel Power Management Logging (dmesg - The Precise Problem):
sudo dmesg | grep -i "nvme\|pcie\|power" Output (relevant lines):
[ 0.044043] PCIe ASPM is forcibly enabled (SUCCESS! pcie_aspm=force is now working!)
[ 2.250474] nvme nvme0: D3 entry latency set to 10 seconds (THE SOLE REMAINING BLOCKER!)
Current Power State:
cat /sys/class/nvme/nvme0/device/power_state: Still D0.
Power Consumption (from powertop "Device stats" tab, though no direct wattage was shown for NVMe):
PCI Device: Samsung Electronics Co Ltd NVMe SSD Controller PM9C1a showed 100.0% usage, consistent with D0.
My Precise Problem Summary:
My Samsung 990 EVO Plus now reports APSTE: Enabled, and the kernel successfully forces PCIe ASPM to be enabled. My nvme_core.default_ps_max_latency_us=0 parameter is loaded. However, the kernel persistently logs nvme nvme0: D3 entry latency set to 10 seconds, which is overriding my desired low latency and preventing the drive from ever hitting D3cold.
Questions for the Community:
Has anyone with a Framework Laptop 13 AMD (7040 series) running Linux successfully achieved consistent D3cold/deep sleep (e.g., confirmed via cat /sys/class/nvme/nvme0/device/power_state showing D3cold and very low power in powertop) with a Samsung 990 EVO Plus (4TB), or any drive that exhibits this 10-second D3 entry latency in dmesg despite nvme_core.default_ps_max_latency_us=0? If so, what was your exact solution?
Is there a specific Framework BIOS setting for AMD laptops that controls or influences this "D3 entry latency" or could potentially override the kernel's stubborn 10-second default? (I've checked standard PCIe power management options).
Are there other, more powerful kernel parameters or workarounds that can force the D3 entry latency below 10 seconds on AMD platforms when nvme_core.default_ps_max_latency_us=0 is being ignored?
Beyond Solidigm P44 Pro (which is 4TB), are there any other 4TB NVMe drives that are proven to reliably achieve D3cold and genuinely low idle power on Framework 13 AMD with Linux?
Thank you in advance for any insights or shared experiences. This deep idle power is a critical factor for laptop battery life.