ACPI action script for battery events

From ThinkWiki
Revision as of 20:30, 28 October 2008 by Sewerbeing (Talk | contribs)

Jump to: navigation, search

This is an example ACPI action script that makes Power Management adjustments according to if you are on battery or on AC. Usually this is saved as /etc/acpid/actions/

  1. Tried on Gentoo
  2. cpu throttling is in here it is the cpufreq-set lines
  3. turning swap off is only for those that feel comfortable
  4. doing something this nasty.
  5. comment out the laptop_mode line if you don't have it installed
  6. pcfe, 2008-10-28
  1. cpu throttling
  2. cat /proc/acpi/processor/CPU0/throttling for more info


  1. spindown time for HD (man hdparm for valid values)
  2. I prefer 2 hours for acad and 2 min for batt


  1. Power management level
  2. 255 (off) on AC
  3. 128 (medium) on batt
  4. lowered to 32, pcfe, 2004-06-23
  5. upped to 64, pcfe, 2004-07-14
  6. upped to 96, pcfe, 2004-10-20


  1. ac/battery event handler

status=`awk '/^state: / { print $2 }' /proc/acpi/ac_adapter/AC/state`

if [ "$status" = "off-line" ] then

              logger "Running /sbin/laptop_mode stop"
              /sbin/laptop_mode stop
              logger "Setting HD spindown for AC mode with hdparm -S $ACAD_HD /dev/hda."
              /sbin/hdparm -S $ACAD_HD /dev/hda > /dev/null 2>&1
              logger "Setting HD powersaving for AC mode with hdparm -B $ACAD_PM /dev/hda."
              /sbin/hdparm -B $ACAD_PM /dev/hda > /dev/null 2>&1
              logger "Turning on swap."
              /sbin/swapon -a

/usr/bin/cpufreq-set -g conservative else

              logger "Turning off swap."
              /sbin/swapoff -a
              logger "Running /sbin/laptop_mode start"
              /sbin/laptop_mode start
              logger "Setting HD spindown for battery mode with hdparm -S $BATT_HD /dev/hda."
              /sbin/hdparm -S $BATT_HD /dev/hda > /dev/null 2>&1
              logger "Setting HD powersaving for battery mode with hdparm -B $BATT_PM /dev/hda."
              /sbin/hdparm -B $BATT_PM /dev/hda > /dev/null 2>&1
              /usr/bin/cpufreq-set -g ondemand