Hi, I’m getting very poor battery life on a Lenovo Legion Slim 5 16APH8 running Zorin OS 18.
On Zorin, near-idle power draw is usually around 23–26 W, while on Windows the same laptop is around 11–12.5 W at near-idle.
powertop --auto-tune made almost no difference, and stopping background update processes did not fix it either.
I also tested prime-select intel, and power draw stayed almost the same, so NVIDIA/hybrid mode does not seem to be the main cause.
I then tested in TTY/text console, and power draw was still over 26 W, which makes GNOME much less likely to be the main issue.
In that stripped-down state, NVIDIA appeared suspended/inactive and nvidia-smi could not communicate with the driver.
At this point I suspect AMD iGPU/display behavior, kernel/firmware/platform power-state issues, or possibly device-driver wakeups.
Has anyone seen this on Zorin/Ubuntu-based distros on this model or similar AMD+NVIDIA Legion laptops, and what diagnostics would you suggest next?
I ran the commands. lspci shows both GPUs: NVIDIA RTX 4070 Mobile and AMD Phoenix1. The AMD side is using the amdgpu driver. For /sys/class/drm, I got:
card1 -> driver: amdgpu, power_state: D0, runtime_status: active
So the AMD iGPU is fully on / active, which may be expected since it is driving the internal display, but it still leaves open the possibility that the AMD display/iGPU path is using too much power at idle.
I tried TLP and measured power draw at near idle but it was still over 24W. I have had power saving energy profile on for all tests. I tried auto-cpufreq as well with the same results.
Breakthrough: I checked NVIDIA PCI runtime PM and found the main dGPU 0000:01:00.0 was stuck at power/control=on and runtime_status=active. After running echo auto | sudo tee /sys/bus/pci/devices/0000:01:00.0/power/control
it changed to power/control=auto and runtime_status=suspended. After that, powerstat dropped to about 9.75 W average. This strongly suggests the dGPU being forced awake is a major cause of the battery drain. The remaining issue is that I have not yet found how to make this state persist reliably across reboot.
The one clear positive result I got was by manually setting NVIDIA PCI runtime PM to auto for both functions:
echo auto | sudo tee /sys/bus/pci/devices/0000:01:00.0/power/control
echo auto | sudo tee /sys/bus/pci/devices/0000:01:00.1/power/control
sleep 3
cat /sys/bus/pci/devices/0000:01:00.0/power/runtime_status
cat /sys/bus/pci/devices/0000:01:00.1/power/runtime_status
In the two successful runs that I got, both NVIDIA functions then reported
runtime_status=suspended
, and powerstat dropped to about 9.75 W average.
However, this did not survive reboot. After reboot, the bad power state returned. In later tests, even when I again forced both NVIDIA functions to power/control=auto and both showed runtime_status=suspended, total system power could still remain around 24–27 W.
I have a very hard time replicating the good results. Both iGPU and dGPU show that they are suspended but still power draw stays at around 25W. Only idea I have left is going kernel shopping and trying if there is my answer. I have tried 6.18, 6.17 and 6.14 thus far. Any other suggestions?