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:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 | [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:
1 | 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:
1 2 | $ lsmod | egrep "^iwlwifi" iwlwifi 196608 1 iwlmvm |
Add, in this case, iwlwifi
and iwlmvm
to /etc/pm/config.d/modules
:
1 | SUSPEND_MODULES= "iwlmvm iwlwifi" |
Create /etc/pm/sleep.d/99_wpa_supplicant
:
1 2 3 4 5 6 7 | #!/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:
1 2 | $ 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?).