[ltp] Re: Suspend, hibernate and the 600E

S. Anthony Sequeira linux-thinkpad@linux-thinkpad.org
Sat, 06 Dec 2003 12:14:46 +0000


On Sat, 2003-12-06 at 03:44, Marc Wilson wrote:
> On Fri, Dec 05, 2003 at 12:01:01PM +0100, linux-thinkpad-request@linux-thinkpad.org wrote:
> > Message: 8
> > To: linux-thinkpad@linux-thinkpad.org
> > From: "Tony Sequeira" <tony@sequeira.com>
> > Date: Thu, 04 Dec 2003 14:16:09 +0000 (GMT)
> > Subject: [ltp] Suspend, hibernate and the 600E
> > Reply-To: linux-thinkpad@linux-thinkpad.org
> 
> > Attempting to get suspend working on a TP 600E, LFS kernel 2.4.23.
> 
> Heh... my experience was that it was hard to get it NOT to suspend.  I've
> been trying to use the 600E for wireless snooping and there are all sorts
> of ways the BIOS can put the machine to sleep while you're not looking.
> You have to pretty much lobotimize it with tpctl. ^_^
> 
> > Have compiled and instaklled apmd.  However suspend (apm -s) does not
> > work for the 'ordinary' user, only root.
> 
> Correct.  I wouldn't make the apm binary suid root, either... I'd use sudo
> first.  Making it suid root would mean that anyone who could run the binary
> could suspend the machine, which might not matter for a laptop, but is
> otherwise bad practice.
> 
> > I'm concerned however that neither addresses the 'suspend on lid close'
> > ability.
> 
> Well, apmd neither knows nor cares about the lid switch.  That's monitored
> by the BIOS, and tpctl gives you access to it.  There's also ntpctl which
> is the ncurses interface to tpctl.
> 
> On the 600E, you're looking for the "PM sedate lid closure" option (in
> ntpctl) or the "--pm-sedation-lid-closure" option in tpctl.  You want:
> 
> thinkpad $ tpctl --pm-sedation-lid-closure
> power management sedative events:       capability    current
>                                        (SZRHO)       (SZRHO)
>    lid-closure-initiated:               -Z---         -Z---
> 
> The option you want is "Z", which conveniently enough is also the only one
> the 600E supports.
> 
> On mine (Debian unstable), as soon as I close the lid, apmd gets an event,
> and he goes to sleep.  Open the top, and he wakes up, and apmd gets another
> event.  Until I figure out what's actually going on, I have apmd 'cardctl
> eject' my Cisco 350, and 'cardctl insert' it when I unsuspend it.  If I
> leave it enabled across the suspend, it doesn't survive, although my Prism2
> D-Link 650 does.
> 
> Debian has an initscript (part of the tpctl package) that handles the lid
> switch.  The supplied configuration file in /etc/default/tpctl looks like:
> 
> thinkpad $ cat /etc/default/tpctl
> # Set PSL to the letter indicating what normally should be done when the
> # ThinkPad's lid is closed.  The tpctl initscript will put the machine
> # into this mode after bootup.  During shutdown and bootup, lid-closure-
> # induced sedation will be disabled.  The letters to use are:
> #     S:tandby, Z:uspend, R:edisafe, H:ibernate, O:ff, -: do nothing.
> # Leave PSL unset to prevent the tpctl initscript from managing this feature.
> PSL="Z"
> 
> The initscript itself looks like:
> 
> thinkpad $ cat /etc/init.d/tpctl
> #!/bin/sh
> #
> # ThinkPad Configuration Tools for Linux initscript
> #
> # This script is part of the tpctl package
> #
> # Aug 2003: Written by Thomas Hood
> 
> PATH=/bin:/sbin:/usr/bin:/usr/sbin
> TPCTL=/usr/bin/tpctl
> unset PSL
> [ -f /etc/default/tpctl ] && . /etc/default/tpctl
> 
> test -x $TPCTL || exit 0
> 
> start()
> {
>         [ "$PSL" ] && tpctl --quiet --psl="$PSL" > /dev/null
> }
> 
> stop()
> {
>         [ "$PSL" ] && tpctl --quiet --psl=- > /dev/null
> }
> 
> case "$1" in
> start)
>         echo -n "Starting tpctl... "
>         start
>         echo "done."
>         exit 0
>         ;;
> stop)
>         echo -n "Stopping tpctl... "
>         stop
>         echo "done."
>         exit 0
>         ;;
> restart|force-reload)
>         echo -n "Restarting tpctl... "
>         stop
>         start
>         echo "done."
>         exit 0
>         ;;
> *)
>         echo "Usage: /etc/init.d/apmiser {start|stop|restart|force-reload}" >&2
>         exit 3
>         ;;
> esac
> 
> Hope this all helps!

It sure does, thanks.
-- 
Tony