Since I received my first Framework laptop, I’ve been trying to get the power usage as low as possible. While I primarily use my laptop while connected to power, I want it to last as long as possible in the event I’m away from power using only the internal battery and something like the Anker 747 Power Bank. In a short 5 minute test, I have been able to get the power usage down to the following, as reported by upower while on battery:
Idle: 3.5 watts
Idle with Screen Locked and Off: ~1.5 watts (hovers between 1 and 2 watts with occasional spikes to 2.5 watts and 0.8 watts)
Typing in gedit: 6 watts
Youtube on Firefox: 9 watts
Before I get into the settings, the following is some additional information about my particular setup (probably more information than necessary, however any little thing could affect power usage):
Desktop environment: GNOME on Wayland, with GDM as the display manager
Plymouth: Installed and enabled on startup with the default theme
GNOME extensions: appindicator
Background programs (explicit): Flameshot, Caffeine-ng, Solaar, Syncthing
Framework expansion packs: all USB-C
Processors: 1280p (2x) and 1240p (1x) (all had the same results)
Filesystem: / and /boot are XFS with the following options: “-m crc=1,finobt=1,rmapbt=1,inobtcount=1,bigtime=1 -s size=4096”, along with the following for root (not supported by GRUB): “-i nrext64=1”.
Encryption: / is encrypted with the following settings: “–cipher aes-xts-plain64 --key-size 512 --hash blake2b-512 --pbkdf argon2id”
GRUB cmdline options: “intel_iommu=on mitigations=off ibt=off nowatchdog rootflags=noatime,swalloc,largeio”
mkinitcipo hooks: “base keyboard systemd plymouth autodetect modconf kms sd-vconsole block sd-encrypt filesystems fsck”
NVME SSD: Inland Performance Plus 8TB or 4TB depending on machine
RAM: Crucial 64GB Kit or Teamgroup 64GB Kit depending on machine
Power Profiles Daemon setting: Balanced (the default setting)
Bluetooth: Disabled (this saves like 2-3 watts on its own)
Webcam and microphone: Physically disabled via sliders above screen (iirc this also saves 2-3 watts on its own)
Screen Brightness: Slider is around 33% in GNOME
Volume: Slider is also around 33% in GNOME; also have 80db speakers installed.
Now, on to the settings. I actually have most of these split into individual files, however I’m presenting them here as single files for each configuration type for simplicity. I do have a few more settings than these however these are the ones that could affect battery life.
/etc/modprobe.d/custom.conf:
options snd-hda-intel power_save=1
options i915 enable_guc=3 enable_fbc=1 enable_psr=1 disable_power_well=0
options nvme noacpi=1
options iwlwifi power_save=1
options iwlmvm power_scheme=3
/etc/sysctl.d/custom.conf:
kernel.nmi_watchdog = 0
dev.i915.perf_stream_paranoid = 0
/etc/tmpfiles.d/custom.conf:
# Path Mode UID GID Age Argument
w! /sys/module/pcie_aspm/parameters/policy - - - - powersupersave
w! /sys/power/mem_sleep - - - - deep
/etc/profile.d/custom.sh:
#!/bin/sh
export MOZ_ENABLE_WAYLAND=1
export LIBVA_DRIVER_NAME=iHD
export VDPAU_DRIVER=va_gl
(you’ll also need the packages intel-media-driver
and libvdpau-va-gl
installed for the above LIBVA and VDPAU settings to actually do anything)
Firefox options (about:config):
media.ffmpeg.vaapi.enabled = true
Services enabled (along with whatever else gets enabled along with these, such as NetworkManager-dispatcher):
- bluetooth.service
- cups.service
- gdm.service
- ModemManager.service
- NetworkManager.service
- power-profiles-daemon.service
- syncthing.service (user)
- systemd-oom.service
- systemd-resolved.service
- systemd-timesyncd.service
- thermald.service
Some final notes:
- TLP and PowerTop don’t appear to affect the power usage in any positive or negative way, or at least the power savings aren’t enough to register any significant difference.
- Power Profiles Daemon, while installed and enabled, doesn’t appear to have any affect on power usage. This is true even when changing the setting to Power Saver.
Anyway, I hope this helps with your power efficiency journeys.
Edit(s): Corrected a few words and added idle with screen locked time.