Jan's Linux Log

This blog started out as an install log of RedHat 9 on a Compaq Presario 2538cl laptop (linuxpresario.blogspot.com) . However, I soon started to include little logs to myself when I made configuration changes to software, etc. So, I've moved it over to our domain, and changed its name to Linux Log. Here you will find some tips & tricks related to Linux configuration on a laptop, as well as software related things that I run into. I log here things that worked for me, of course, your mileage may vary.

Any questions/comments? E-mail me at linux_atsign_boshoff|za|net.

« Working swsusp kernel | Main | Not a lot happening... »

Hibernate using acpid

October 29, 2003

I've written a little script to hibernate when I hit the power button. On my laptop, everytime you hit the power button it registers two power button events in the acpid log. So I needed to work around it a little, to prevent two consecutive suspend-resume cycles everytime I hit the power. In /etc/acpi/events I have a script "power", which has:

# This is a sample ACPID configuration

event=button[ /]power
#action=sudo /usr/local/sbin/hibernate
action=/etc/acpi/events/start_suspend.sh %e

The %e passes the full entry of the acpi event to the script. I'm not using this yet. Here's the start_suspend.sh script:

#!/usr/bin/perl
$DIR = "/etc/acpi/events";

$counter=`cat $DIR/buttoncounter | bc`;

if ( $counter == 0 ) {
# First button event, suspend computer

$out = `echo 1 > /etc/acpi/events/buttoncounter`;
$out = `sudo /usr/local/sbin/hibernate` || die "Unable to start hibernating: $!";

} else {
# Second button event, insert usb controller module

$out = `echo 0 > /etc/acpi/events/buttoncounter`;

}

What's nice about it is that it makes it easy to run additional things upon resume. I don't need this yet, but I can see how sometimes one would want to do this. As you can tell, it's basically a work-around for my dual-acpi-event-when-power-button-is-pressed problem.