#!/bin/sh # # /usr/local/sbin/freq # simple command line interface to cpufreq # # Michael Ossmann # Original work # Jean Delvare # ACPI support # New inferface (/proc/cpufreq) support # # TODO: SMP support freq_usage () { echo "Usage: $0 [min|max|acpif|perf|power|acpip]" echo " min: set frequency to minimum" echo " max: set frequency to maximum" echo " acpif: use ACPI to choose frequency" echo " perf: set policy to performance" echo " power: set policy to powersave" echo " acpip: use ACPI to choose policy" exit 1 } if [ -r /proc/cpufreq ] then [ -n "$1" ] && case "$1" in "min" ) # set frequency to minimum echo -n '0%0%0%powersave' > /proc/cpufreq grep 'CPU 0' /proc/cpufreq exit 0 ;; "max" ) # set frequency to maximum echo -n '0%100%100%performance' > /proc/cpufreq grep 'CPU 0' /proc/cpufreq exit 0 ;; "acpi" ) echo "Use of \"acpi\" is deprecated, plese use \"acpif\" instead." exit 1 ;; "acpif" ) # use ACPI to choose frequency if [ ! -r /proc/acpi/ac_adapter/*/state ] then echo "Missing ACPI support" exit 1 fi if grep 'off-line' /proc/acpi/ac_adapter/*/state > /dev/null then echo -n '0%0%0%powersave' > /proc/cpufreq else echo -n '0%100%100%performance' > /proc/cpufreq fi grep 'CPU 0' /proc/cpufreq exit 0 ;; "perf" ) # set policy to performance echo -n '0%0%100%performance' > /proc/cpufreq grep 'CPU 0' /proc/cpufreq exit 0 ;; "power" ) # set policy to powersave echo -n '0%0%100%powersave' > /proc/cpufreq grep 'CPU 0' /proc/cpufreq exit 0 ;; "acpip" ) # use ACPI to choose policy if [ ! -r /proc/acpi/ac_adapter/*/state ] then echo "Missing ACPI support" exit 1 fi if grep 'off-line' /proc/acpi/ac_adapter/*/state > /dev/null then echo -n '0%0%100%powersave' > /proc/cpufreq else echo -n '0%0%100%performance' > /proc/cpufreq fi grep 'CPU 0' /proc/cpufreq exit 0 ;; * ) freq_usage ;; esac # display current frequency grep 'CPU 0' /proc/cpufreq exit 0 fi if [ -r /proc/sys/cpu/0/speed ] then [ -n "$1" ] && case "$1" in "min" | "power" ) # set frequency to minimum cat /proc/sys/cpu/0/speed-min > /proc/sys/cpu/0/speed echo "CPU 0 frequency set to $(cat /proc/sys/cpu/0/speed) MHz" exit 0 ;; "max" | "perf" ) # set frequency to maximum cat /proc/sys/cpu/0/speed-max > /proc/sys/cpu/0/speed echo "CPU 0 frequency set to $(cat /proc/sys/cpu/0/speed) MHz" exit 0 ;; "acpi" ) echo "Use of \"acpi\" is deprecated, plese use \"acpif\" instead." exit 1 ;; "acpif" | "acpip" ) # use ACPI to choose frequency if [ ! -r /proc/acpi/ac_adapter/*/state ] then echo "Missing ACPI support" exit 1 fi if grep 'off-line' /proc/acpi/ac_adapter/*/state > /dev/null then cat /proc/sys/cpu/0/speed-min > /proc/sys/cpu/0/speed else cat /proc/sys/cpu/0/speed-max > /proc/sys/cpu/0/speed fi echo "CPU 0 frequency set to $(cat /proc/sys/cpu/0/speed) MHz" exit 0 ;; * ) freq_usage ;; esac # display current frequency echo "CPU 0 frequency $(cat /proc/sys/cpu/0/speed) MHz" exit 0 fi echo "Missing cpufreq support" exit 1