Preparing a Laptop for Reliable Suspend/Resume

Get rock-solid suspend/resume on Linux laptops. This guide covers drivers, kernel parameters, display manager checks, USB wake-up control, kernel upgrades, and firmware updates — everything you need for trouble-free power management.

Preparing a Laptop for Reliable Suspend/Resume
Photo by Kompjuteri Com / Unsplash

Modern laptops promise instant-on convenience, but in reality many Linux users run into hiccups: black screens after waking, Wi-Fi that disappears, or systems that never actually go to sleep. These problems almost always come down to a handful of configuration points in the graphics stack, drivers, and firmware.

This guide walks you through a vendor-neutral, reproducible procedure for preparing a Linux laptop so suspend and resume “just work.”

1. Install the Correct Graphics Driver

If your laptop has only Intel or AMD graphics, the kernel’s built-in drivers are usually sufficient.

If your laptop uses hybrid graphics (Optimus) — an Intel internal GPU plus an NVIDIA dedicated or external GPU — you should install video driver:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-XXX   # replace XXX with the recommended version

This ensures you get the latest, distribution-tested proprietary driver with the proper ACPI hooks.

2. Resolve Conflicting Modules

On hybrid graphics laptops, both i915 (Intel) and nvidia can try to own the Direct Rendering Manager (DRM) node. That race is one of the most common reasons for failed resume.

Append this kernel parameter so NVIDIA takes control cleanly:

nvidia-drm.modeset=1

Add it to the GRUB_CMDLINE_LINUX_DEFAULT line in /etc/default/grub, then run:

sudo update-grub

Reboot to apply the changes.

3. Verify Your Display Manager

Suspend/resume cannot restore your graphical session if the display manager is disabled. After installing or changing graphics drivers, check:

systemctl status gdm    # or lightdm, sddm

If it’s inactive, restart or re-enable it:

sudo systemctl enable --now gdm

4. Back Up Your Current Configuration

Before tweaking power management, save the working config so you can roll back if needed:

sudo cp /etc/default/grub  ~/grub.backup
sudo cp -r /etc/modprobe.d/ ~/modprobe.backup

This preserves your kernel parameters and any custom module options.

5. Disable Unnecessary Wake-Up Devices

Many laptops wake up instantly because USB devices (mice, docks, Bluetooth dongles) trigger spurious signals. Check which devices can wake the system:

cat /proc/acpi/wakeup

You’ll see something like:

Device  S-state   Status
XHC     S3        *enabled

To toggle a device off (example: USB3 “XHC”):

sudo sh -c 'echo XHC > /proc/acpi/wakeup'

Re-run cat /proc/acpi/wakeup to confirm the change.

6. Run the Latest LTS or HWE Kernel

Kernel power management improves with almost every release. Even on LTS distributions you can install a newer “Hardware Enablement” (HWE) kernel:

sudo apt install --install-recommends linux-generic-hwe-20.04

Reboot into the new kernel and test suspend again. Many driver fixes (especially for NVIDIA) only exist in newer kernels.

7. Update BIOS/UEFI Firmware

Laptop vendors frequently ship ACPI table fixes and device-specific suspend quirks via firmware updates. On most Linux distributions you can use fwupd:

sudo apt install fwupd
sudo fwupdmgr refresh && sudo fwupdmgr update

Reboot after updates. This step alone resolves a surprising number of resume bugs.

8. Optional: Hybrid Sleep Configuration

If you want Hybrid Sleep (suspend-to-RAM plus a hibernation image for safety), edit /etc/systemd/sleep.conf:

sudo nano /etc/systemd/sleep.conf

Add:

[Sleep]
AllowHybridSleep=yes

Then test:

systemctl hybrid-sleep

This gives you instant wake most of the time but falls back to hibernation if the battery dies.

9. Troubleshooting Checklist

If suspend/resume still fails:

  • Check logs:
    journalctl -b -1 | grep -i suspend to see last resume messages.
  • Verify kernel parameters:
    cat /proc/cmdline must show nvidia-drm.modeset=1 (if using NVIDIA).
  • Confirm display manager running:
    systemctl status gdm (or your DM).
  • Retest without peripherals: unplug docks, USB devices, external monitors.
  • Try a different NVIDIA driver version:
    ubuntu-drivers devices shows recommended options.
  • Re-disable USB wake sources: some BIOSes reset them each boot.
  • Update firmware again: vendors push small ACPI fixes frequently.

Conclusion

Reliable suspend/resume on Linux laptops isn’t magic — it’s a combination of:

  • Correct graphics drivers
  • Clean kernel parameters
  • Proper display manager setup
  • Controlled wake sources
  • Up-to-date kernel and firmware

Follow this checklist and your laptop will enter and leave low-power states smoothly, without black screens or lost Wi-Fi, and you’ll gain confidence that closing the lid won’t crash your session.

Read next

Testing OpenGL Performance on CPU nouveau driver

While waiting for the right NVLink bridge, I decided to see how my dual RTX 2080 Ti setup performs without them—by turning the GPUs off entirely. The result? A deep dive into OpenGL on CPU using the humble Nouveau driver, where even spinning gears tell a story about patience and pixels.