Sleep/suspend script
From Superk
This script was shown to me by a friend of mine. It handle suspending/resuming a machine using ACPI while also logging some \'\'\'extremely\'\'\' useful information about battery usage during the suspended period:
#!/bin/sh
# sleep.sh test script for measuring power drain during suspend-to-ram with ACPI
# default settings, change if needed
LOG=/var/log/battery.log
BATTERY=BAT0
THRESHOLD=1000
# remove USB for external mouse before sleeping
if lsmod | grep \'^usbhid\' >/dev/null ; then
/sbin/modprobe -r -s usbhid
fi
if lsmod | grep \'^uhci_hcd\' >/dev/null ; then
/sbin/modprobe -r -s uhci_hcd
fi
if lsmod | grep \'^ehci_hcd\' >/dev/null ; then
/sbin/modprobe -r -s ehci_hcd
fi
# save system time
hwclock --systohc
# get start values
date >> $LOG
DATE_BEFORE=`date +%s`
BAT_BEFORE=`grep \'remaining capacity\' /proc/acpi/battery/$BATTERY/state | awk \'{print $3}\'`
# go to sleep
echo 3 > /proc/acpi/sleep
# get end values
DATE_AFTER=`date +%s`
BAT_AFTER=`grep \'remaining capacity\' /proc/acpi/battery/$BATTERY/state | awk \'{print $3}\'`
# do the calculations
DIFF=`echo \"$BAT_AFTER - $BAT_BEFORE\" | bc`
SECONDS=`echo \"$DATE_AFTER - $DATE_BEFORE\" | bc`
USAGE=`echo \"($DIFF * 60 * 60) / ($SECONDS)\" | bc`
# output the results
echo \"before: $BAT_BEFORE mWh\" >> $LOG
echo \"after: $BAT_AFTER mWh\" >> $LOG
echo \"diff: $DIFF mWh\" >> $LOG
echo \"seconds: $SECONDS sec\" >> $LOG
echo \"result: $USAGE mW\" >> $LOG
if [ $USAGE -gt -$THRESHOLD ]
then
echo \"Congratulations, your model seems NOT to be affected.\" >> $LOG
else
echo \"Your model seems to be affected.\" >> $LOG
fi
if [ $SECONDS -lt 1200 ]
then
echo \"!!! The notebook was suspended less than 20 minutes.\" >> $LOG
echo \"!!! To get representative values please let the notebook sleep\" >> $LOG
echo \"!!! for at least 20 minutes.\" >> $LOG
fi
echo \"\" >> $LOG
# restore USB support
if !(lsmod | grep \'^ehci_hcd\') >/dev/null ; then
/sbin/modprobe -s ehci_hcd
fi
if !(lsmod | grep \'^uhci_hcd\') >/dev/null ; then
/sbin/modprobe -s uhci_hcd
fi
if !(lsmod | grep \'^usbhid\') >/dev/null ; then
/sbin/modprobe -s usbhid
fi
# restore system time
hwclock --hctosys
