#!/bin/bash logger=/usr/bin/logger case "$1" in minimum) $logger -p daemon.info -t pwrctl-local "minimum power $2" case "$2" in ac) echo -n "0%50%100%performance" > /proc/cpufreq echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ;; *) echo -n "0%50%100%powersave" > /proc/cpufreq echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ;; esac ;; medium) $logger -p daemon.info -t pwrctl-local "medium power $2" case "$2" in ac) echo -n "0%50%100%performance" > /proc/cpufreq echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ;; *) echo -n "0%50%100%powersave" > /proc/cpufreq echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ;; esac ;; maximum) $logger -p daemon.info -t pwrctl-local "maximum power $2" case "$2" in ac) echo -n "0%50%100%performance" > /proc/cpufreq echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ;; *) echo -n "0%50%100%powersave" > /proc/cpufreq echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ;; esac $logger -p daemon.info -t pwrctl-local "skipping pwrctl-main" exit 1 ;; warning) /usr/bin/wall "Low battery, system going down any minute now" ;; lid-closed) $logger -p daemon.info -t pwrctl-local "lid-closed $2" ;; lid-opened) $logger -p daemon.info -t pwrctl-local "lid-opened $2" ;; sleep) $logger -p daemon.info -t pwrctl-local "sleep $2" # Some modules don't support sleep/resume /sbin/rmmod -a sleep 3 /sbin/rmmod -a sync;sync;sync fblevel off ;; wakeup) $logger -p daemon.info -t pwrctl-local "wakeup $2" /sbin/rmmod -a case "$2" in ac) echo -n "0%50%100%performance" > /proc/cpufreq echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ;; *) echo -n "0%50%100%powersave" > /proc/cpufreq echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ;; esac fblevel on ;; *) $logger -p daemon.error -t pwrctl-local "invalid arg $1 $2" exit 2 ;; esac exit 0