- Select main page

Power Management

One of the most important things of a mobile device is power management. Fortunately, Linux power management has become very mature and stable by now.


With APM the network card is unusable after resuming. Even removing and re-inserting the module before/after suspend crashes the machine on loading the module again. The machine is on full power all the time (fan always on). Therefore I don't recommend APM on this machine. If you really want to use APM, please try lvcool for linux, to keep the CPU cool.


ACPI [2003-01-25] works fine, the power button can be used to shut down cleanly (with a patched version of acpid). This version also calls /usr/local/bin/susp when pressing the sleep button [Fn+F12]! Note that acpid has to be restarted after using software suspend, because it takes 100% CPU usage after resuming. The susp script kills acpid on resume, but if it is called from acpid itself, the script is killed too, and acpid cannot be restarted automatically.
With ACPI the fan goes on from time to time, even with PowerNow! and only 500MHz. But this isn't different with XP.
ACPI also enables the Fn+Fx kombinations. You can switch to external monitor at runtime (without ACPI, this crashes the machine). I'm not fully sure, if ACPI is the reason for this to work, but it seems to be.


Reading the battery status from /proc/acpi/battery/BAT1/info takes ~0.1 sec, which is too long for use with battery monitors (mouse gets sluggish) [Update: This has become better with kernel 2.4.25 and up, it only takes half of the time which is much better].
Also, older battery applets don't support current ACPI versions and need to be patched. If you are in this situation, try to use APM+lvcool.
According to a test on german ZDnet homepage, the standard accu only lasts for 68 minutes. I tried it one time and came to about 50 minutes, so this is a bit less, but I did compiling and some other power hungry things ... Usually, I don't use the battery.

Software Suspend

For suspending, I'm using the swsusp kernel patch, which is still under development. My precompiled kernel supports swsusp. Just give your swap partition as parameter to the kernel: resume=/dev/hda6
It is working really fine, I had no reboots from June 22nd until July 4th 2002 with about 2 suspend/resume cycles per day. To bring the kernel into suspend mode, run my script (Updated: 2003-03-14) susp. To make it available to non-privileged accounts put the line
%users ALL = NOPASSWD: /usr/local/bin/susp
in /etc/sudoers and run the command "sudo susp" to suspend. The given line makes the susp command available to all members of group "users".
Update (2004-04-03): I still use the software suspend patches, the most stable version is for kernel 2.4.25. The same version for kernel 2.6 is not so stable, but I hope that this will become better in future. If you need current information about swsusp, visit their excellent homepage at sourceforge.

CPU cooling: AMD PowerNow!

A driver for powernow called rtvds is available for Linux 2.4. It is included in my kernel package. To use it, run modprobe powernowK7 in one of your init scripts (e.g. /etc/init.d/boot.local). To set the frequency, do something like "echo 500 > /proc/powernow". Don't go lower than that, on my 1GHz Athlon, the machine will crash. To show current speed, use cat /proc/powernow. A working version is also on my download page.
Update (2004-04-03): I don't use this - I also tried cpufreq for 2.6 but it doesn't make the CPU cooler. My batteries are also unusable meanwhile, so I really have no use for it.

CPU Throttling

Essentially, throttling is forced sleep that slows down the CPU and keeps it therefore cooler. But this is no voltage regulation, and therefore doesn't save much battery. You can use it to protect your machine from overheating, though:
echo 7 > /proc/acpi/processor/CPU0/throttling