Update: After a lot of troubleshooting and testing different combinations of my kernel parameters; I conclude that it works a lot better when leaving pcie_aspm=force
(think I got it from an Arch wiki?), and also never resume when docked if the computer was hibernated on battery. This seems to be working even with the linux-image-generic-lts-xenial
kernel. You can check this pastebin with the results and combination that I’ve tested.
To enable hibernate in the menu, create /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
with the following 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
ResultActive=yes
[Re-enable hibernate for multiple users by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate-multiple-sessions
ResultActive=yes
Update /etc/default/grub
and add RESUME
parameter set to your swap partition in GRUB_CMDLINE_LINUX_DEFAULT
. Example:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.enable_fbc=1 i915.enable_rc6=7"
Don’t forget to run sudo update-grub2
.
Check if iwlwifi
has any dependencies:
$ lsmod | egrep "^iwlwifi"
iwlwifi 196608 1 iwlmvm
Add, in this case, iwlwifi
and iwlmvm
to /etc/pm/config.d/modules
:
SUSPEND_MODULES="iwlmvm iwlwifi"
Create /etc/pm/sleep.d/99_wpa_supplicant
:
#!/bin/sh
case "$1" in
resume|thaw)
/usr/bin/pkill wpa_supplicant
;;
esac
Don’t forget to make it executable, chmod +x /etc/pm/sleep.d/99_wpa_supplicant
.
Killing wpa_supplicant
on resume and thaw is needed due to bug #1311257.
And lastly, if you have TLP, make sure to restore previous device state on startup:
$ egrep "^RESTORE_" /etc/default/tlp
RESTORE_DEVICE_STATE_ON_STARTUP=1
Note: I had hibernate working perfect, but then I upgraded to linux-image-generic-lts-xenial
which caused KernelOops on every thawn. After reverting back it worked great again. I’m guessing the reason is that the gfx stack (xserver-xorg-video-intel-xenial
etc.) isn’t available in 14.04 (yet?).