Sleep Quirk Debugger

Back to the main suspend page

Advanced things to try

Dodgy modules, suspend debugging procedure

Resume problems are difficult to debug since there is no non-volatile storage available during resume. The only hardware on a PC motherboard that retains information across reboots is the real time clock (RTC).

In order to stimulate your suspend/resume process, enter the following commands (as root):

echo 1 > /sys/power/pm_trace

At this point your computer should enter the suspend state within a few seconds. Usually the power LED will slowly flash when in the suspended state. When that has happened, initiate the resume process by pressing the power button. If resume fails to complete, then press the power button until the computer turns off. Power on your computer making sure that it loads the same kernel that exhibited the resume problem. You have about 3 minutes to start this boot process before the information saved in the RTC gets corrupted.

Start a terminal and enter:

dmesg > dmesg.txt 
cat dmesg.txt | grep "hash matches"
hash matches drivers/base/power/resume.c:26
hash matches device i2c-9191 

The drivers/base/power/resume.c:xx. The file line code (xx) is typically:

The last hash matches device match is the likely culprit.

The only way to prove that the driver may be at fault is to remove the module prior to initiating suspend using rmmod. Repeat as needed... If you are using a very up to date kernel, this matter should be reported to the kernel bugzilla. If this module is not in the Linux kernel, then the module can be blacklisted using pm-utils.

To do this, create a file in /etc/pm/config.d/unload_modules and add the following line:


You'll also need to make this script executable, which you can do using:

chmod +x /etc/pm/config.d/unload_modules

You can safely ignore the drivers/rtc/hctosys.c: unable to open rtc device (rtcX) warning. We are saving the hash data in the NVRAM in the RTC which has probably changed your machine clock.

64 bit processors


This proceedure will not work on X86_64 due to CONFIG_PM_TRACE being (for the moment) X86_32 specific. See here for more details and a kernel patch to work around the problem. You'll have to recompile your kernel with this patch, so this is not a step for new users. Sorry. The timeframe for merging this patch to the mainline kernel is probably post 2.6.22.

BIOS options

Check your BIOS settings for options that mention sleep, suspend or hibernate. If you have a setting for allow suspend mode on legacy OS try both on and off. Turning this on can make some old ThinkPads resume when nothing else helps.

GRUB kernel options

These are not standard quirks, but might get your system going. If they do, email the linux-acpi project to fix the issue properly.

Try these GRUB entries, one line at a time.

Back to the main suspend page