New Linux Laptop Setup Checklist
Post-install laptop checklist covering TLP power management, systemd lid actions, S3 suspend, fingerprint enrollment with fprintd, and Wi-Fi tuning for reliability and battery life.
Before you start
- ▸Linux installed and booting to a desktop or TTY
- ▸sudo or root access
- ▸Internet connection for package installation
- ▸Basic familiarity with a terminal text editor (nano, vim)
You've just installed Linux on a new laptop. The desktop works, but a dozen small things will quietly drain your battery, break suspend, or leave your fingerprint reader collecting dust unless you address them now. This checklist walks through the essential post-install tuning — power management, lid behaviour, suspend/resume, battery optimisation, fingerprint enrollment, and Wi-Fi performance tweaks — in the order that matters.
1. Install and Enable Power Management
The single highest-impact tool for laptop power on Linux is TLP. It sets aggressive power-saving defaults for CPU scaling, USB autosuspend, SATA link power, and more, all via a single service.
Install TLP
# Debian / Ubuntu
sudo apt install tlp tlp-rdw
# Fedora / RHEL family
sudo dnf install tlp tlp-rdw
# Arch
sudo pacman -S tlp
sudo systemctl enable --now tlp
If your laptop has a ThinkPad battery controller or an ASUS/Lenovo charging threshold feature, install the matching extras:
# ThinkPad only
sudo apt install tp-smapi-dkms acpi-call-dkms # Ubuntu/Debian
sudo dnf install kernel-devel akmod-tp_smapi # Fedora
TLP's configuration lives in /etc/tlp.conf. The defaults are sensible; edit only what you need. Key entries to review:
CPU_SCALING_GOVERNOR_ON_BAT=powersave— keeps the CPU in the efficient governor on battery.START_CHARGE_THRESH_BAT0=75/STOP_CHARGE_THRESH_BAT0=80— limits charge to extend long-term battery health (ThinkPad/ASUS/Huawei only).WIFI_PWR_ON_BAT=on— enables Wi-Fi power saving on battery (more on this below).
2. Configure Lid and Power-Button Actions
systemd-logind controls what happens when you close the lid or press the power button. No need for a DE-specific tool for the base behaviour.
sudo nano /etc/systemd/logind.conf
Relevant options:
HandleLidSwitch=suspend # close lid on battery
HandleLidSwitchExternalPower=lock # close lid while plugged in
HandleLidSwitchDocked=ignore # close lid when docked/external display
HandlePowerKey=poweroff
IdleAction=suspend
IdleActionSec=20min
Apply changes without rebooting:
sudo systemctl restart systemd-logind
Warning: restarting logind will briefly drop your graphical session on some compositors. Save open work first.
3. Fix Suspend and Resume
Modern laptops support s2idle (S0ix, shallow suspend) and deep (S3, classic suspend-to-RAM). Most hardware sleeps better on deep; some ultrabooks only offer s2idle.
Check what your hardware supports
cat /sys/power/mem_sleep
# Example output: s2idle [deep] (brackets = current default)
Force S3 deep sleep if needed
sudo kernelstuck=0
# Add to GRUB: mem_sleep_default=deep
sudo nano /etc/default/grub
Find the GRUB_CMDLINE_LINUX_DEFAULT line and add mem_sleep_default=deep:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash mem_sleep_default=deep"
# Debian / Ubuntu
sudo update-grub
# Fedora / RHEL / Arch (grub2)
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# Arch (grub)
sudo grub-mkconfig -o /boot/grub/grub.cfg
If resume from suspend leaves you with a black screen, the most common culprits are the NVIDIA proprietary driver or missing firmware. Check journalctl -b -1 (the previous boot) for errors immediately after the resume timestamp.
4. Enroll Your Fingerprint Reader
fprintd is the standard daemon for fingerprint hardware on Linux. Most modern readers (Goodix, Synaptics, ELAN) are supported via libfprint.
# Debian / Ubuntu
sudo apt install fprintd libpam-fprintd
# Fedora
sudo dnf install fprintd fprintd-pam
# Arch
sudo pacman -S fprintd
sudo systemctl enable --now fprintd
Enroll a finger
fprintd-enroll
# Follow the prompts; swipe or press your finger ~5 times
Enable fingerprint for sudo and login
# Debian / Ubuntu — interactive PAM configurator
sudo pam-auth-update
Select Fingerprint authentication in the list, then OK. On Fedora and Arch, edit PAM manually or use authselect:
# Fedora
sudo authselect enable-feature with-fingerprint
sudo authselect apply-changes
Verify enrollment worked:
fprintd-verify
# Output should say: verify result: verify-match (done)
Note: Fingerprint login does not work as a second factor for sudo commands that require password entry in the same session on all configurations. Test your setup before relying on it.
5. Tune Wi-Fi for Reliability and Power
Linux Wi-Fi drivers apply aggressive power management by default, which causes latency spikes and random disconnects on some adapters. The right setting depends on whether you're on battery or mains.
Check current power management state
iwconfig wlan0 | grep -i power
# or
iw dev wlan0 get power_save
Disable power saving on AC (persistent via udev)
sudo nano /etc/udev/rules.d/81-wifi-powersave.rules
ACTION=="add", SUBSYSTEM=="net", KERNEL=="wlan*", \
RUN+="/usr/sbin/iw dev %k set power_save off"
TLP (installed in step 1) handles the battery-side setting automatically via WIFI_PWR_ON_BAT=on. You get power saving on battery and full performance on AC without manual toggling.
Intel Wi-Fi: disable 802.11n power-save aggregation if still unstable
sudo nano /etc/modprobe.d/iwlwifi.conf
options iwlwifi power_save=0
options iwlwifi uapsd_disable=1
sudo modprobe -r iwlwifi && sudo modprobe iwlwifi
# or simply reboot
6. Verify Everything Is Working
Run a quick sanity check after completing the steps above.
# TLP status
sudo tlp-stat -s
# Current power source and battery info
sudo tlp-stat -b
# Confirm suspend target
systemctl status sleep.target suspend.target
# Check logind settings took effect
loginctl show-session
# Wi-Fi power state
iw dev wlan0 get power_save
For battery wear, check the design capacity versus the current full-charge capacity:
upower -i $(upower -e | grep BAT)
# Look for: energy-full and energy-full-design
Troubleshooting
- Suspend works but resume shows a black screen: Add
nvidia.NVreg_PreserveVideoMemoryAllocations=1to kernel parameters if using the NVIDIA proprietary driver. Enable the associated systemd services:sudo systemctl enable nvidia-suspend nvidia-resume nvidia-hibernate. - Fingerprint device not detected: Run
lsusborlspciand cross-check against the libfprint supported device list. Some Goodix USB readers need a firmware upload viafwupd. - TLP conflicts with power-profiles-daemon: On GNOME 42+ and recent Fedora/Ubuntu systems,
power-profiles-daemonis installed by default and conflicts with TLP. Disable one:sudo systemctl disable --now power-profiles-daemonbefore enabling TLP. - Wi-Fi drops on battery even with TLP: Some Realtek adapters need the
rtw_power_mgnt=0module option set in/etc/modprobe.d/realtek.conf. - Lid close does nothing: Your desktop environment may be overriding logind. In GNOME, check Settings → Power. In KDE, check System Settings → Power Management. DE settings take precedence over logind for lid events when a session is active.
Frequently asked questions
- Does TLP conflict with GNOME's power-profiles-daemon?
- Yes. On GNOME 42+ and recent Fedora and Ubuntu releases, power-profiles-daemon is installed by default and conflicts with TLP. Disable power-profiles-daemon with 'sudo systemctl disable --now power-profiles-daemon' before enabling TLP, or use power-profiles-daemon instead and skip TLP.
- My fingerprint reader shows up in lsusb but fprintd can't find it. What's wrong?
- The device may need firmware before libfprint can use it. Run 'fwupdmgr get-devices' and 'fwupdmgr update' to push firmware via fwupd. Also check the libfprint supported device list at fprint.freedesktop.org to confirm your exact USB ID is supported.
- The lid-close setting in logind.conf isn't doing anything.
- Your desktop environment overrides logind for lid events when a graphical session is active. Check your DE's power settings (GNOME Settings → Power, or KDE System Settings → Power Management) and set lid behaviour there as well.
- How do I tell if my laptop actually entered S3 deep sleep and didn't just idle?
- After waking, run 'journalctl -b | grep -i suspend' and look for 'PM: suspend entry (deep)' in the log. If you see '(s2idle)' instead, deep sleep is not being used despite your kernel parameter — your firmware may not advertise S3 support.
- Should I set battery charge thresholds if my laptop isn't a ThinkPad?
- Charge thresholds are supported by TLP on select ASUS, Huawei, LG, and Lenovo (non-ThinkPad) models in addition to ThinkPads. Run 'sudo tlp-stat -b' and look for a 'Charge threshold' section — if it shows supported values, you can set START_CHARGE_THRESH_BAT0 and STOP_CHARGE_THRESH_BAT0 in tlp.conf.
Related guides
How to Back Up Your Linux System
Learn how to back up your Linux system using Timeshift, rsync, Borg, and Restic — then tie it all together with a practical 3-2-1 backup routine.
How to Choose a Linux Distribution
Match a Linux distro to your real needs — desktop, server, rolling vs LTS, hardware quirks, and package ecosystems — without wading through marketing noise.
How to Dual-Boot Linux and Windows
Shrink the Windows partition, install Linux without breaking the bootloader, configure GRUB, and handle Secure Boot — all in the correct order.
10 Things to Do After Installing Linux
Ten essential post-install steps for any Linux desktop: updates, drivers, firewall, codecs, backups, SSH hardening, and service cleanup — all with modern commands.