laptop fails to suspend or hibernate (wakes up after 2-5 seconds without user interaction)

Solution 1:

The following worked for me:

cat /proc/acpi/wakeup

Look for any items with status enabled that look like they don't belong there (for me, anything except LID0). Then disable them by saying, for example:

sudo sh -c "echo XHC0 > /proc/acpi/wakeup"

Check that the corresponding entries have indeed been disabled, send the laptop into suspend and hope for the best :)

Solution 2:

I have kernel 13.13 and Intel Z77X based motherboard, and following command works for me:

sudo sh -c "echo EHC1 > /proc/acpi/wakeup;echo EHC2 > /proc/acpi/wakeup;echo XHC > /proc/acpi/wakeup"

Solution 3:

Experiencing exactly the same problem (ThinkPad T530, Ubuntu 14.04, but also 13.10 and 13.04, after couple of suspends, computer resumes immediately after suspend).

Disabling IBGE from wakeup did not help at all.

As suggested by Romano, I've tried removing the e1000e module, et voila suspend as expected.

So:

sudo rmmod e1000e

prior to suspend resolves the issue.

Interestingly, the problem reappears immediately after installing the module back (sudo modprobe e1000e) and suspending without its removal. So, it must've been something related to hardware.

To automate it, I've created two simple suspend/wakeup scripts (tested on the above mentioned hardware, Ubuntu Trusty 14.04): sudo gedit /etc/pm/sleep.d/99_e1000e_remove :

#!/bin/sh

# Remove e1000e kernel module prior to suspend
rmmod e1000e

and sudo gedit /etc/pm/power.d/99_e1000e_probe :

#!/bin/sh

# Modprobe e1000e kernel module after resume
modprobe e1000e

Scripts should be executable (sudo chmod +x /etc/pm/sleep.d/99_e1000e_remove /etc/pm/power.d/99_e1000e_probe).

Notes:

  • I assume the scripts are pretty safe to use even when it does not address your problem.
  • I'm not using LAN wakeup, so I don't know how it behaves with the fix.