Why Hibernate and Suspend Don't Work on Linux Mint in 2026
Linux Mint hibernate and suspend (sleep) issues are frustratingly common — the screen goes black, the laptop lid closes, or you click Suspend, and then the system either doesn't sleep at all, wakes immediately, or (for hibernate) doesn't come back properly and boots fresh instead. In 2026, the most common causes are: a swap partition or swap file that's too small for hibernate to work, a missing or corrupted initramfs resume hook, a kernel driver that doesn't support deep sleep states, or a BIOS setting overriding the suspend state. This guide fixes all of these step by step.
Understanding Sleep vs. Suspend vs. Hibernate on Linux Mint
These terms have specific meanings — and the fix depends on which one is broken:
- Suspend (S3 sleep): RAM stays powered, everything else turns off. Fast resume (~2 seconds). Loses state on power loss. This is what "Suspend" in the menu does.
- Hibernate (S4): RAM contents written to swap (disk), then full power off. Slow resume (~10–30 seconds). Survives power loss. Requires swap space at least equal to RAM size.
- Hybrid Sleep: Writes to swap AND keeps RAM powered. Best of both — fast resume, survives power loss. Not all hardware supports it.
Step 1: Fix Suspend (Laptop Wakes Immediately After Suspend)
If your Linux Mint laptop goes to sleep but immediately wakes up again, check what is waking it:
# Check the last wakeup source
sudo cat /sys/power/pm_wakeup_count
dmesg | grep -i wake | tail -20
journalctl -b | grep -i wake | tail -20
Common culprits: USB devices, network cards with Wake-on-LAN enabled, or the RTC alarm (scheduled wake). To check wake-armed devices:
grep -r "." /sys/bus/usb/devices/*/power/wakeup 2>/dev/null | grep enabled
Disable USB wakeup for a specific device:
echo disabled | sudo tee /sys/bus/usb/devices/usb1/power/wakeup
Replace usb1 with the device ID shown by the grep above. To make this permanent, add a udev rule or systemd unit.
To disable network card wakeup (Wake-on-LAN):
sudo ethtool -s eth0 wol d
Replace eth0 with your network interface name (run ip link to see them). Make it permanent by adding the command to /etc/rc.local or a systemd network service.
Step 2: Enable Hibernate on Linux Mint (It's Disabled by Default)
Linux Mint disables hibernate in the power menu by default because it requires properly configured swap space. To enable it:
First, verify you have enough swap space:
free -h
Look at the "Swap" row — you need at minimum the same size as your RAM (ideally RAM size + 20%). If your swap is too small or doesn't exist, you'll need to create or enlarge it before hibernate can work.
Check your swap UUID:
sudo blkid | grep swap
Note the UUID of your swap partition or swap file.
Configure the resume kernel parameter:
sudo nano /etc/default/grub
Find the line that starts with GRUB_CMDLINE_LINUX_DEFAULT and add resume=UUID=YOUR-SWAP-UUID:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Save, then update GRUB and initramfs:
sudo update-grub
sudo update-initramfs -u
Restart. Then add hibernate to the power menu:
sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
Add this content:
[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes
Save and restart the polkit service:
sudo systemctl restart polkit
Hibernate should now appear in the power menu and in System Settings → Power.
Step 3: Create or Enlarge Swap Space for Hibernate
If your swap is too small or missing, create a swap file:
# Check current swap
swapon --show
# Create a 16GB swap file (adjust to your RAM size + 20%)
sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Make it permanent
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Now get the offset for the swap file (needed for the resume kernel parameter when using a swap file, not a partition):
sudo filefrag -v /swapfile | head -5
Note the physical_offset value from the first row of the extent table. Then set the kernel parameter:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/sda2 resume_offset=PHYSICAL_OFFSET"
Replace /dev/sda2 with the device that contains the swap file (run df /swapfile to find it), and PHYSICAL_OFFSET with the offset value from filefrag. Run sudo update-grub && sudo update-initramfs -u and reboot.
Step 4: Fix "Failed to hibernate: Not enough storage" Error
This error means the swap space is smaller than the amount of RAM currently in use. Solutions:
- Close applications to free RAM before hibernating
- Enlarge swap (see Step 3)
- Reduce swappiness to use swap more aggressively before RAM is full:
sudo sysctl vm.swappiness=10
Step 5: Fix Suspend Not Working at All (Screen Won't Turn Off)
If clicking Suspend does absolutely nothing, check systemd-logind's handle:
sudo nano /etc/systemd/logind.conf
Ensure these lines exist and aren't commented out:
HandleSuspendKey=suspend
HandleLidSwitch=suspend
HandleLidSwitchExternalPower=suspend
IdleAction=suspend
IdleActionSec=30min
After editing, restart logind:
sudo systemctl restart systemd-logind
If the system still won't suspend, check if your hardware supports ACPI S3:
cat /sys/power/state
If the output shows freeze mem disk, S3 (mem) is supported. If it only shows freeze disk, your hardware doesn't support S3 sleep. Check your BIOS for an "S3 Suspend" or "Deep Sleep Control" setting.
Step 6: Fix Video Driver Issues With Suspend/Resume
If the screen doesn't come back after suspend (blank screen on wake), it's almost always a GPU driver issue:
NVIDIA proprietary driver:
sudo systemctl enable nvidia-suspend.service
sudo systemctl enable nvidia-resume.service
sudo systemctl enable nvidia-hibernate.service
These NVIDIA systemd services properly save and restore GPU state during suspend/hibernate. They're often not enabled after driver installation.
AMD and Intel:
sudo nano /etc/modprobe.d/blacklist.conf
# Add: blacklist nouveau (if using amdgpu/radeon but nouveau is loading)
sudo update-initramfs -u
Also try adding the amdgpu.dpm=1 kernel parameter for AMD cards with power management issues.
Need Expert Linux Power Management Help?
Hibernate and suspend configuration on Linux involves kernel parameters, initramfs hooks, swap sizing, and GPU driver services — a complex stack where one wrong setting can break the whole chain. If you're working through this on a laptop for a specific use case, CloudHouse Technologies' pay-per-ticket Linux support gives you access to a Linux specialist who can diagnose your specific hardware and kernel configuration.
