Revision of Troubleshooting suspend/hibernate from Mon, 04/14/2014 - 02:39
The revisions let you track differences between multiple versions of a post.
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/grub
, add "nomodeset"
with quotes to the line that says GRUB_CMDLINE_LINUX_DEFAULT=
(don't replace what is already there) and press Ctrl-X to exit nano.
Then 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 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 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