diff --git a/Makefile b/Makefile index 3d70d73..bc3ad56 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,8 @@ VERSION = 0.0.1 PREFIX = /usr/local MANPREFIX = ${PREFIX}/share/man +all: undervolt powersave + undervolt: undervolt.sh powersave: powersave.sh diff --git a/powersave.sh b/powersave.sh index 4597034..7f44997 100644 --- a/powersave.sh +++ b/powersave.sh @@ -1,8 +1,46 @@ #!/bin/sh -GOVERNOR='powersave' -if [ "$1" ]; then - GOVERNOR="$1" -fi +GOVERNOR="powersave" +apply_lm=true + +while getopts 'hopPg:' opt; do + case opt in + 'h') + echo "Usage: powersave [-hopP] [-g governor]" + echo " -h this message" + echo " -o set governor to ondemand and activate laptop mode" + echo " -p set governor to powersave and activate laptop mode (default)" + echo " -P set governor to performance" + echo " -g governor set governor to the specified value" + exit 0 + ;; + 'o') + GOVERNOR=ondemand + apply_lm=true + ;; + 'p') + GOVERNOR=powersave + apply_lm=true + ;; + 'P') + GOVERNOR=performance + apply_lm=false + ;; + 'g') + GOVERNOR=$OPTARG + apply_lm=false + ;; + esac + '' +done +shift $((OPTIND-1)) -echo "$GOVERNOR" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor +echo "$GOVERNOR" > /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor + +if $apply_lm; then + # "5 is a sensible time" https://www.kernel.org/doc/Documentation/laptops/laptop-mode.txt + sysctl 'vm.laptop_mode=5' +else + # disable laptop_mode + sysctl 'vm.laptop_mode=0' +fi diff --git a/undervolt.sh b/undervolt.sh index 9e77a3b..1179183 100644 --- a/undervolt.sh +++ b/undervolt.sh @@ -4,7 +4,6 @@ # TODO: check if all the required tools are available CPUS="$(nproc)" -GOVERNOR='ondemand' # Out your wanted values here CORE_SPEED_HZ_P0=2300000 # 2.30GHz slightly over the base (2.10GHz) CORE_SPEED_HZ_P1=1450000 # 1.45GHz @@ -26,12 +25,6 @@ MAX_TEMP_C=85 # enable cpu frequency boost if available echo 1 > /sys/devices/system/cpu/cpufreq/boost -# set governor -for c in $(seq 0 $((CPUS-1))) -do - echo $GOVERNOR > /sys/devices/system/cpu/"cpu$c"/cpufreq/scaling_governor -done - # # set voltage # ===========