suspend/resume broken on Lenovo 3000 N100

Bug #63834 reported by LarryGrover on 2006-10-03
4
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Undecided
Unassigned
linux-source-2.6.17 (Ubuntu)
Undecided
Unassigned

Bug Description

Binary package hint: linux-image-2.6.17-10-generic

Suspend/resume is broken on my laptop (Lenovo 3000 N100 model 0689-6EU). I am running Edgy, with all updates applied.

If I try to suspend my laptop (to RAM) with the wireless network up, then suspending never completes. The screen goes blank but the laptop does not go into low power state: the CPU fans and hard drive are still running. At this point, the only way to recover is to force a hard power-off (press and hold the power button until the system turns off).

If I try to suspend with the wireless network down, then things work a little better. The laptop appears to finish suspending (screen goes dark, CPU fans stop spinning, hard drive stops and the sleep LED lights up). Sometimes I can resume the laptop from this state, but most of the time will not resume properly. When the laptop fails to resume I am left with a blank screen containing only the mouse pointer. The pointer cycles between "busy" and "normal". Sometimes the pointer will respond to movement of the mouse/touchpad and sometimes it will not. The system does not seem to respond to keyboard input (ctl-alt-backspace and ctl-alt-delete have no effect). To recover I need to force a hard power-off.

Some additional information on my system:

$ uname -a
Linux skink 2.6.17-10-generic #2 SMP Mon Oct 2 13:48:24 UTC 2006 i686 GNU/Linux

$ lspci
00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #4 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller IDE (rev 02)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)
03:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
05:01.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
05:04.0 CardBus bridge: ENE Technology Inc CB1410 Cardbus Controller (rev 01)
05:06.0 FireWire (IEEE 1394): Ricoh Co Ltd Unknown device 0832
05:06.1 Class 0805: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 19)
05:06.2 System peripheral: Ricoh Co Ltd Unknown device 0843 (rev 01)
05:06.3 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 0a)
05:06.4 System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev 05)

It seems that this problem is common with bug #63937, the power management of the SATA disk with ata_piix module.

LarryGrover (lgrover) wrote :

I am not so sure this is the same bug as 63937:
(1) when I try to suspend, I do *not* get any unusual sounds from the hard drive. It certainly does not sound like the disk is failing.
(2) on my laptop the failure to suspend is clearly related to the wireless network -- if I bring the wireless network down then I can usually suspend the laptop successfully, but it fails when I try to resume (wake) the laptop.

Diego Iastrubni (cuco3001) wrote :

on my system (same moduel, running kubuntu 6.10) hibernation works, even tough it fails to resume on rare cases.

however, the wireless fails to work when i resume from "suspend". a workaround i found was killing the

   killall ipw3945d-2.6.17-10-generic
   rmmod ipw3945
   modprobe ipw3945

it seems that the daemon fails on resume.

Diego Iastrubni (elcuco) wrote :

I just wanted to comment that this is working nicely on 7.04.

Hoever, I am facing heat problems on my machine after upgrade, so I would not recommend you upgrade yet. See:
https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.17/+bug/85894

LarryGrover (lgrover) wrote :

In case it was not clear, the bug report I originally filed was about suspend to RAM, not hibernate (to disk). Hibernate worked almost all the time in 6.10 and continues to work well in 7.04 (except for the issues with ipw3945, noted above by Diego Iastrubni, which require removing and reloading the ipw3945 module).

On my laptop, suspend/resume (to RAM) was broken in 6.10 and remains broken in 7.04.

derp (dgharibi) wrote :

I had the same problem and addressed it a few months prior. Please refer to https://wiki.ubuntu.com/LaptopTestingTeam/Lenovo3000N100_0768 "Sleep and Hibernate"

derp (dgharibi) wrote :

I thought it would be better to outline the solution instead of just giving a link with my vague description.

Make a new file (with sudo) in /etc/acpi/suspend.d called "04-set-cpu-scaling.sh" containing:

#!/bin/sh

echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Make another file (with sudo) in /etc/acpi/resume.d called "99-reset-cpu-scaling.sh" containing:

#!/bin/sh

echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Also make sure to chmod ugo+x for both files.

ls -l should give:
-rwxr-xr-x 1 root root 81 2007-03-19 21:40 99-reset-cpu-scaling.sh

LarryGrover (lgrover) wrote :
Download full text (4.0 KiB)

I have figured out the cause of this bug, and it is not in the kernel.

I have kubuntu-desktop, kpowersave, and powersaved installed and running on my laptop. The bug originates in the way that kpowersave interacts with the suspend (to RAM) scripts from hal and powersaved. I believe the following description is accurate:

(1) When kpowersave detects an event that should trigger a suspend to RAM (lid closure, "sleep" button pressed, or selecting suspend to RAM from the panel applet menu), it (somehow) invokes the script:
/usr/lib/hal/scripts/linux/hal-system-power-suspend-linux

(2) The /usr/lib/hal/scripts/linux/hal-system-power-suspend-linux script checks to see which tools are available:

#Other distros just need to have *any* tools installed
else
        if [ -x "/usr/sbin/pm-suspend" ] ; then
                /usr/sbin/pm-suspend $QUIRKS
                RET=$?
        elif [ -x "/usr/bin/powersave" ] ; then
                $POWERSAVED_SUSPEND2RAM
                RET=$?
        elif [ -x "/usr/sbin/hibernate" ] ; then
                # Use hibernate configured for suspend-to-ram
                /usr/sbin/hibernate -F/etc/hibernate/ram.conf
                RET=$?
        elif [ -x "/etc/acpi/sleep.sh" ] ; then
                # Use acpi-support for suspend to ram
                /etc/acpi/sleep.sh force
                RET=$?
        elif [ -x "/usr/sbin/s2ram" ] ; then
                # uswsusp tools installed
                /usr/sbin/s2ram
                RET=$?
        elif [ -x "/usr/sbin/pmi" ] ; then
                /usr/sbin/pmi action suspend force
                RET=$?
        elif [ -w "/sys/power/state" ] ; then
                # Use the raw kernel sysfs interface
                echo "mem" > /sys/power/state
                RET=$?
        else
                # TODO: add other scripts support
                unsupported
        fi
fi

(3) When powersaved is installed (which includes /usr/bin/powersave), it "wins", and the powersave suspend script (/usr/lib/powersave/do_acpi_sleep) gets run

(4) The do_acpi_sleep script has a section that checks to see if the s2ram executable is available:

       if [ -x $S2RAM ]; then
                echo "Executing '$S2RAM $S2RAM_OPTS'" >> $S2RAM_LOG
                $S2RAM $S2RAM_OPTS >> $S2RAM_LOG 2>&1
                RET=$?
                case $RET in
                        127) $NOTIFY $S2RAM_NOT_SUPPORTED & ;;
                        126) $NOTIFY $S2RAM_FB_ONLY & ;;
                esac
        else
                echo "$S2RAM not found, falling back to echo." >> $S2RAM_LOG
                $MYECHO /sys/power/state mem
                RET=$?
        fi

(5) s2ram is part of the uswsusp package, which is not required by powersaved, and so was not installed on my system. Without s2ram, the do_acpi_sleep script suspends the computer simply by echoing "mem" to /sys/power/state. On my laptop model, this causes problems on resume (the video does not get restarted properly). This is likely to cause problems for other laptop models as well.

(6) The fix was to install the uswsusp package, and edit the configuration file for powersave (/etc/powersave/sleep) to set these two variables:
S...

Read more...

Diego Iastrubni (elcuco) wrote :

I just tested it (install a new package, and edit a configuration file), and it does seem to work. Sometimes.

From my minimal tests, hibernate seems to work. Suspend to RAM is a problem:

when you make the sleep from the Power Manager applet the machine comes back some of the times. When it does come back, there are some options

1) the num lock led is lighted, this means that the mouse-pad will not work. note also that the num luck is on, and to remove it, just press caps-lock twise.
2) Sometimes the machine just works perfectly.
3) Sometimes the machine just does not restore. this happens when I suspend more then once.

When asked the Power Manager to suspend the machine when I close the lid, it got into a loop: each time I returned from the suspend, it suspended the machine, until it got locks. and I have to force it to power off.

I also hibernated the machine now for 10 minutes and now the fan does not work. Funny, shorter hibernations (hibernate and immediately restore) it works pretty good.

I also played with some packages, see:
elcuco@pinky:~$ dpkg -l | grep powe
ii acpid 1.0.4-5ubuntu6 Utilities for using ACPI power management
ii kde-guidance-powermanager 0.8.0-0ubuntu5 HAL based Power Manager Applet
ii laptop-mode-tools 1.32-1ubuntu1 Scripts to spin down hard drive and save power
ii libgnomecanvas2-0 2.14.0-3ubuntu2 A powerful object-oriented display - runtime files
ii libgnomecanvas2-common 2.14.0-3ubuntu2 A powerful object-oriented display - common files
ii libimlib2 1.3.0.0debian1-4build1 powerful image loading and rendering library
ii libpowersave10 0.14.0-6ubuntu1 power management daemon - shared library
ii mc 4.6.1-7ubuntu1 midnight commander - a powerful file manager
ii powermanagement-interface 0.3.15 platform neutral powermanagement interface
ii powermgmt-base 1.29build1 Common utils and configs for power management
rc powernowd 0.97-1ubuntu7 control cpu speed and voltage using 2.6 kernel interfa
ii powersaved 0.14.0-6ubuntu1 power management daemon
ii tcpdump 3.9.5-2 A powerful tool for network monitoring and data acquis

BTW,
How can I tell which 3000 N100 model do I have...?

LarryGrover (lgrover) wrote :

Diego, it looks like you have powersaved installed. Please check if you also have uswsusp installed. I think powersave needs uswsusp to work well.

If you have uswsusp installed, and you are still having problems, you might find this tutorial helpful:
http://en.opensuse.org/S2ram
This tutorial explains how to get s2ram working (s2ram is provided by the uswsusp package, and if installed, will be used by powersave to suspend the system to RAM).

To find out which model of 3000 N100 you have:
(1) if you have uswsusp installed, simply run:
sudo s2ram -i
(2) otherwise, you can run:
sudo dmidecode -t system

wiki.ubuntu.com has a page on the 3000 N100 model 0768 - B9G, if it turns you that you have that model:
https://wiki.ubuntu.com/LaptopTestingTeam/Lenovo3000N100_0768
There is some information on this page about sleep/hibernate, if it turns out that you have this model (this information does not seem to apply to my model).

root@pinky:~# dpkg -l | grep susp
ii uswsusp 0.3~cvs20060928-6ubuntu3
tools to use userspace software suspend provided by Li
root@pinky:~# s2ram -i
This machine can be identified by:
    sys_vendor = "LENOVO"
    sys_product = "0768B9G"
    sys_version = "3000 N100 "
    bios_version = "61ET36WW"
See http://en.opensuse.org/S2ram for details.

I added the parameter i8042.nomux to grub (as explained on that page). Now I
can suspend to ram (by choosing the correct option from the logout menu in
KDE). When I do this 3 times at a row, the system gets stucked on resume. On
the times the machine booted back up, and the was functional and I
experienced no keyboard problems as explained before.

Next I tried suspend to disk, which worked quite good for several times.

Next test was to setup the machine to suspend to ram when I close the lid.
What happens is that when I close the lid the themachine logs out of my
session, and when it comes back I get the KDM menu. I log in once more, and I
get a message saying that the lid is close, and it suspends once more. The
machine gets into this nice loop, until I power it off by force.

Right now I have 2 problems:
 1) suspend to ram fails on the 3rd time.
 2) closing the lid, after I instruced KDE's PowerManager to suspend on lid
close even makes the machine suspend until I power it off brutally.

(1) will be hard to fix, but (2) should be easy. I am not sure why it locks
up, some help will be appreciated.

Diego Iastrubni (elcuco) wrote :

2 more points:

1) If some newbie is reading this: to add a parameter to the boot sequence
please edit a commented line which looks like this:

# kopt=root=UUID=2ea921be-867d-4841-a08c-5e91661aa5b8 ro i8042.nomux

and add the parameter to it. Then execute "update-grub". Do not edit directly
the grubentries.

2) When I suspend to disk, and the machine is down for a long period (about 20
mins is long enough), when the machine resumes the fan does not spin.

I should mention that this happens with 2.6.20-16-generic, and probably not
with 2.6.17. Do still, do not upgrade to the new kernel if you have an
option.

Kjell Braden (afflux) wrote :

Hardy Heron 8.04 was recently released. It would be helpful if you could test the new release and verify if this is still an issue - http://www.ubuntu.com/getubuntu/download . You should be able to test your bug using the LiveCD. Please let us know your results. Thanks.

Changed in linux-source-2.6.17:
status: New → Won't Fix
Changed in linux:
status: New → Incomplete
LarryGrover (lgrover) wrote :

I am the original reported of this bug. As I noted in comments above, this turned out to be a bug in the suspend scripts, and not a kernel bug.

I am running Hardy Heron (8.04) on my laptop, and the suspend scripts seem to have been cleaned up. I have had no problems with suspend/resume since I upgraded to Hardy. This bug can be closed as 'fixed'.

Kjell Braden (afflux) wrote :

Thanks for your investigation.

Changed in linux:
status: Incomplete → Invalid
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers