NoteThis document is about Linux & ACPI on an Acer Travelmate 800. Most of it should apply to other computers as well, though.
Controlling ACPI Centrino features / enhanced speedstep via software in LinuxWhy the hell would anyone want to run their cpu at a lower speed than it is made for? Two reasons: 1. save energy, 2. prevent the noisy cpu fan from turning on during periods of higher load (provided speed is not that important), e.g. while watching a movie.
You can easily control the CPU clock when ACPI is enabled. Simply try the following:
cat /proc/acpi/processor/CPU0/performanceThis should output something like
state count: 5
grep CPUFREQ /usr/src/linux-2.6.x/.configIt should return CONFIG_X86_ACPI_CPUFREQ=y or CONFIG_X86_ACPI_CPUFREQ=m.
To be able to control the cpu frequency from userspace, you should also choose USERSPACE as the cpu frequency governor:
grep USERSPACE /usr/src/linux-2.6.x/.config
cd /sys/devices/system/cpu/cpu0/cpufreq/There you will find some files. You can control the cpu frequency by echoing a value in kHz to the file scaling_setspeed:
echo 600000 > scaling_setspeedThis will set your cpu to 600MHz.
You can also install a userspace daemon to dynamically change the cpu speed according to your power/acpi status and performance needs: cpufrqd, speedfreqd. wmthrottle (a dockapp) to be able to control (Pentium M / Centrino / Enhanced Speedstep) cpu performance states through a GUI. Download my version of wmthrottle supporting acpi/performance. This is a "prerelease" and not yet fully endorsed by the original author. It does work though. Features:
You can toggle dynamic/automatic state switching by clicking the T. If set to manual mode, you can click the state numbers to switch to a cpu performance/throttle state manually. Please read the README. If you have any questions, please send me an email.
Norbert wrote this TCL/TK script which allows setting the ACPI cpu performance state using a graphical interface under Linux. The .tgz contains the script and a readme. The script itself needs to be run as root of course. If you have any questions concerning it, send either me or Norbert an email.