Power Management and ACPI

Most of this works out-of-the-box. [http://faq.pathfinderteam.org/index.php/Samsung_X20 this page on the Samsung X20 (in German)] has many good hints.

The battery lifetime numbers Samsung publishes (6h) are marketing exaggerations. The normal battery in my notebook lasts about 2h when I'm working normally.

There are several aspects to power management:

  1. React to "battery low" events by shutting down gracefully or suspending. acpid can do it (it works), but the actions must be written by hand.

  2. React to "critical temperature" events. Should be possible with acpid, too. Not tested.

  3. Do a graceful shutdown when the power button is pressed. OK with acpid.

  4. Carry out suspend-to-disk or suspend-to-RAM. Requires kernel recompilation on Debian:
     -> Power management options (ACPI, APM)
       [*] Software Suspend [EXPERIMENTAL]     
       -> ACPI (Advanced Configuration and Power Interface) Support                                                                  
         -> ACPI Support 
         [*] ACPI Sleep States [EXPERIMENTAL]
     ### enter suspend-to-disk state
     # echo 8:10 >/sys/power/resume ## swap partition for resuming
     # echo disk >/sys/power/state 
    Suspend-to-disk works fine on the X50 as long as the proprietary ATI graphics driver isn't used. Suspend-to-RAM didn't work for me yet.
  5. Regulate the power consumption of different subsystems according to battery/AC state and computing demands to obtain maximum battery lifetime. This can be done in several ways.
    • The most powerful approach is using ACPI power states, but this is hardly implemented in Linux right now (2005).
    • "laptop-mode-tools" for regulating disk activity (unfortunately pointless with SATA, see ["../HDDandCDrom"])
    • CPU frequency control: There are many tools for this ([http://www.gentoo.de/doc/de/power-management-guide.xml see here for a comparison]). I opted for cpufrequtils because it's lightweight, easy to use in scripts, and powerful enough for my purposes. I am using the kernel "performance" governor with AC connected, the "ondemand" governor on battery, and the "powersave" governor in "etiquette mode".

      I put the following into /etc/modules to enable power control:

freq_table
speedstep_centrino
cpufreq_ondemand
cpufreq_powersave