System does not hibernate; the screen flashes off for a few seconds and nothing else happens
I just upgraded my Ubuntu 11.10 to 12.04. I have a problem with hibernation in my new 12.04.
I run the following command
sudo pm-hibernate
but my system does not hibernate, i.e. my system does not turn off; rather the screen just flashes out for few seconds and resumes previous state.
How do I fix this problem and enable hibernation on my system?
Solution 1:
Something in your hardware configuration is incompatible with the kernel's hibernation methodology. Unfortunately this is hard to troubleshoot unless the troubleshooter happens to have a very similar system.
You can try the alternative TuxOnIce (wikipedia) hibernation instead.
- TuxOnIce (wiki|homepage) is an alternative to the kernel's built-in hibernation technology, and is supposed to be compatible with a broader range of hardware, more reliable and more flexible.
- It is easily installed, and if it doesn't work for you, as easily removed.
-
It does require installing TuxOnIce's custom kernel, but the instructions that follow should make it easy. If you've never opened the terminal before, you may want to now :-)
0. Requirements
The only requirement for TuxOnIce is that your swap partition be at least as large as the amount of memory (RAM) you have. You can check this by:
Start the terminal with Ctrl+Alt+T
-
Type
free -m
, and you should see something like this:total used free shared buffers cached Mem: 1024 731 260 0 0 190 -/+ buffers/cache: 540 451 Swap: 1536 6 1530
The number after
Swap:
(e.g. 1536) should be more than the number afterMem:
(e.g. 1024)-
If this is not the case, and your swap is smaller than your memory, you must either resize and increase the size of your swap partition, or configure TuxOnIce to use a special swap file. That is beyond the scope of this answer, but if you ask another question and mention it in the comments, I will answer and explain how.
1. Installing the TuxOnIce kernel
Start the terminal with Ctrl+Alt+T
- Copy and paste the following into the terminal. This adds the TuxOnIce PPA and installs the custom kernel and headers.
-
sudo apt-add-repository ppa:tuxonice/ppa -y
and once the ppa is added: sudo apt-get update sudo apt-get install tuxonice-userui linux-generic-tuxonice -y sudo apt-get install linux-headers-generic-tuxonice -y
-
- Now reboot.
-
Ubuntu should now start up with the TuxOnIce kernel. If there are any problems, keep the Shift pressed at startup and you will get the Grub menu. Use the arrow keys to go to
Previous Linux Versions
, press enter, and press enter again to go back to the working kernel.2. Testing hibernation functionality.
Open some of the applications you normally use, e.g. Firefox, Thunderbird, LibreOffice, etc.
- Open the terminal again, with Ctrl+Alt+T.
- Type
sudo pm-hibernate
, press enter, enter your password. -
You should see the lock screen for a second, and then the TuxOnIce hibernation progress screen, like the one below:
- If TuxOnIce works, your computer will shutdown.
- Start it again, and wait. TuxOnIce should resume from the point you hibernated, including all the windows you opened at the position you opened.
-
If all this worked, go to Step 3, which lets you enable Hibernate from the dashboard.
3. Enabling hibernation from the dashboard
-
Press Alt+F2, type the below and then press enter:
gksudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
-
Paste the below, press Ctrl+S to save and Ctrl+Q to exit the editor:
[Re-enable hibernate by default] Identity=unix-user:* Action=org.freedesktop.upower.hibernate ResultActive=yes
-
Restart, and you should see the Hibernate option as shown below:
4. Removing TuxOnIce
-
If TuxOnIce doesn't work for you, or you simply wish to remove it, start the terminal and enter:
sudo apt-get remove tuxonice-userui linux-generic-tuxonice linux-headers-generic-tuxonice -y
-
and remember to disable the Hibernate option in the menu with:
sudo rm /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
Then restart.
-
Solution 2:
This worked for me. In a console run:
sudo apt-get install uswsusp
Then you can try to suspend your computer with:
sudo s2ram
or hibernate with
sudo s2disk
If that works for you then just reboot and you should be able to hibernate later from the usual button (on the top right on Unity Desktop and selecting Hibernate).
I made a short tutorial of this and other issues for Dell XPS 13 Developer Edition available here.