[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