#!/bin/sh # Copyright (c) 2000-2002 Massachusetts Institute of Technology # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. set -e # The APMD_DRIVES setting specifies the drives to be changed. Set # this to an empty string to disable any changes. #APMD_DRIVES= # The spindown timeout is set to the value of APMD_SPINDOWN when the # computer is running on battery power. When the computer is on AC # power, the spindown timeout is disabled. The number specified here # is encoded in a complicated way. See the man page for hdparm(8) for # details. For small timeouts, numbers between 1 and 240 specify # multiples of 5 seconds. So the default value of 18 means 18*5=90 # seconds, or 1.5 minutes. APMD_SPINDOWN=18 HDPARM=/sbin/hdparm [ -x "${HDPARM}" ] || exit 0 [ -n "${APMD_DRIVES}" ] || exit 0 for DRIVE in $APMD_DRIVES; do [ -b "${DRIVE}" ] || exit 0 done [ "${APMD_SPINDOWN}" -gt 0 ] || exit 0 power_conserve () { # Set IDE hard disk spindown time to a short time. for DRIVE in $APMD_DRIVES; do "${HDPARM}" -q -S "${APMD_SPINDOWN}" "${DRIVE}" || true done } power_performance () { # Disable IDE hard disk spindown. for DRIVE in $APMD_DRIVES; do "${HDPARM}" -q -S 0 "${DRIVE}" || true done } choose_power () { if on_ac_power > /dev/null then power_performance else power_conserve fi } if [ "${1}" = "start" ]; then choose_power elif [ "${1}" = "resume" ] && [ "${2}" != "standby" ]; then choose_power elif [ "${1},${2}" = "change,power" ]; then choose_power elif [ "${1}" = "stop" ]; then power_performance fi exit 0