Troubleshooting suspend/hibernate

This guide is recommended only for users with considerable experience with the GNU/Linux terminal, and editing configuration files.

Symptoms

Your computer seems to suspend or hibernate, but then hangs at some point or does not wake up. Also if your virtual terminals get messed up in the process this can help.

Causes

Often these problems are caused by your wifi card and/or your video card.

Method

Try switching off your wifi, and see if you can then suspend or hibernate. Start by suspending first, as it is the easier of the two to get right. If your wifi is the culprit, you can use the rfkill command from the rfkill package to modify the scripts at /usr/lib/pm-utils/sleep.d/ to automatically take out and restore wifi.

Start by reading the suspend/hibernate log. It's at /var/log/pm-suspend.log. Sometimes it contains useful information, sometimes it tries to fool you. You might want to rename/delete the old log before starting to experiment.

If that did not (completely) fix the problem, move onto the video card. Do not turn the wifi back on until your problem is solved.

First, run sudo nano /etc/default/gruband add "nomodeset" to the parameters on the line that says GRUB_CMDLINE_LINUX_DEFAULT= (don't replace what is already there) and press Ctrl-X to exit nano.

Then sudo update-grub and reboot. Make sure you got it right by checking /proc/cmdline to see nomodeset is there. Sometimes just adding the nomodeset parameter does the trick, as then the default quirks from the quirk database can be utilized. Then try suspend&hibernate to see if the default quirks were correct.

If it is still not working, proceed to read the pm-suspend manual page info pm-suspend pm-suspend is the command your computer uses when it goes into suspend mode; the manual page describes the quirks you can try with your hardware. For some of the quirks, you will need to install the vbetool package. You may need other packages too; the log will be useful here.

Then start the guesswork. For example: sudo pm-suspend --quirk-dpms-on

After an unsuccessful attempt, go read the log to see what it has to say, usually not much. Then test the next quirk. Sometimes you need more than one. One quirk allowed me to suspend/hibernate but another was needed to make sure my virtual terminals wouldn't get messed up in the process.

If you find a working combination, as the manual page says, edit /etc/pm/config.d/anyfile and input ADD_PARAMETERS="--quirk-dpms-on --quirk-blabla ..."

Other things

You may or may not need to add a line like resume=/dev/sda5 (= your swap, see with cat /proc/swaps) to GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub (and then sudo update-grub) for hibernate to work.

zram could make hibernate not work even if suspend does work, one dubious workaround is to give your regular swap a higher priority by adding a pri=101 to the option column in /etc/fstab. Enter swapoff -a && swapon -a to apply the new priorities.

Good luck and patience!

  • Here is a forum thread about the issue.
  • Here is an example of someone who got it to work by following this guide.

If you cannot make it work

You can remove the suspend and hibernate buttons from the power off dialog (in Trisquel 5.5) by adding the following text to /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla

[Disable hibernate in power off dialog]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=no

[Disable suspend in power off dialog]
Identity=unix-user:*
Action=org.freedesktop.upower.suspend
ResultActive=no

Revisions

10/08/2012 - 16:41
lembas
04/09/2013 - 16:47
anonymous
08/13/2013 - 18:53
lloydsmart
04/14/2014 - 03:28
alguien
07/14/2015 - 22:48
Buddybenj