Difference between revisions of "How to make ACPI work"
(→Kernel configuration) |
(→Kernel configuration) |
||
Line 12: | Line 12: | ||
To do this open your kernel config and enable ACPI Power Management: | To do this open your kernel config and enable ACPI Power Management: | ||
:{{kernelconf|CONFIG_PM|<*>|Power Management support|Power management options|||}} | :{{kernelconf|CONFIG_PM|<*>|Power Management support|Power management options|||}} | ||
− | :{{kernelconf|CONFIG_ACPI|<*>|ACPI|Power management options|||}} | + | :{{kernelconf|CONFIG_ACPI|<*>|ACPI Support|Power management options|||}} |
You'd most likely want to enable the following ACPI options: | You'd most likely want to enable the following ACPI options: | ||
− | :{{kernelconf| | + | :{{kernelconf|CONFIG_SUSPEND|<*>|Suspend to RAM and standby|Power management options|||}} |
:{{kernelconf|CONFIG_ACPI_AC|<*>|AC Adapter|ACPI|Power management options||}} | :{{kernelconf|CONFIG_ACPI_AC|<*>|AC Adapter|ACPI|Power management options||}} | ||
:{{kernelconf|CONFIG_ACPI_BATTERY|<*>|Battery|ACPI|Power management options||}} | :{{kernelconf|CONFIG_ACPI_BATTERY|<*>|Battery|ACPI|Power management options||}} | ||
+ | :{{kernelconf|CONFIG_ACPI_BUTTON|<*>|Button|ACPI|Power management options||}} | ||
:{{kernelconf|CONFIG_ACPI_FAN|<*>|Fan|ACPI|Power management options||}} | :{{kernelconf|CONFIG_ACPI_FAN|<*>|Fan|ACPI|Power management options||}} | ||
:{{kernelconf|CONFIG_ACPI_PROCESSOR|<*>|Processor|ACPI|Power management options||}} | :{{kernelconf|CONFIG_ACPI_PROCESSOR|<*>|Processor|ACPI|Power management options||}} | ||
Line 24: | Line 25: | ||
If you prefer editing your {{path|.config}} file directly, you should set at least the following variables: | If you prefer editing your {{path|.config}} file directly, you should set at least the following variables: | ||
CONFIG_PM=y | CONFIG_PM=y | ||
− | + | CONFIG_ACPI=y | |
− | |||
− | |||
− | |||
CONFIG_ACPI_AC=y | CONFIG_ACPI_AC=y | ||
CONFIG_ACPI_BATTERY=y | CONFIG_ACPI_BATTERY=y | ||
Line 34: | Line 32: | ||
CONFIG_ACPI_PROCESSOR=y | CONFIG_ACPI_PROCESSOR=y | ||
CONFIG_ACPI_THERMAL=y | CONFIG_ACPI_THERMAL=y | ||
− | + | CONFIG_ACPI_BLACKLIRG_YEAR=0 | |
CONFIG_ACPI_EC=y | CONFIG_ACPI_EC=y | ||
CONFIG_ACPI_POWER=y | CONFIG_ACPI_POWER=y | ||
− | |||
CONFIG_ACPI_SYSTEM=y | CONFIG_ACPI_SYSTEM=y | ||
Then recompile your kernel. | Then recompile your kernel. | ||
− | {{HINT| ACPI SLEEP States option did only show up for me after patching [[Software Suspend 2]] into the kernel. With a vanilla 2.6.17 kernel, one must enable CONFIG_SMP and CONFIG_HOTPLUG_CPU for the option to appear, cf. [http://bugs.debian.org/383059 Debian bug #383059] .}} | + | {{HINT| ACPI SLEEP States option did only show up for me after patching [[Software Suspend 2]] into the kernel. With a vanilla 2.6.17 kernel, one must enable CONFIG_SMP and CONFIG_HOTPLUG_CPU for the option to appear, cf. [http://bugs.debian.org/383059 Debian bug #383059] . |
+ | (This should be fixed in 2.6.23, there are new CONFIG_SUSPEND and CONFIG_HIBERNATION config options)}} | ||
===Kernel boot parameters=== | ===Kernel boot parameters=== |
Revision as of 21:19, 25 April 2008
Contents
General
First, simply try using the power management features of Linux on your computer. Tell Linux to suspend (System > Preferences > Power Management in Gnome). Try closing the lid. ACPI may already work.
Update BIOS
ACPI requires a relatively new BIOS version. In particular, if you get the message,
ACPI: Could not use ECDT
during startup, you probably need a BIOS Upgrade. For example, a BIOS upgrade from version 1.02 to 1.10 was all that was needed for ACPI to start working on an A31 2652 running Red Hat Enterprise Linux 5 (CentOS 5).
Kernel configuration
Many Kernel 2.6 distributions like Red Hat Enterprise Linux 5 (Centos 5) have ACPI built in and ready to go. If not, you must enable ACPI support in your kernel.
To do this open your kernel config and enable ACPI Power Management:
- Power management options → <*>Power Management support (CONFIG_PM)
- Power management options → <*>ACPI Support (CONFIG_ACPI)
You'd most likely want to enable the following ACPI options:
- Power management options → <*>Suspend to RAM and standby (CONFIG_SUSPEND)
- Power management options → ACPI → <*>AC Adapter (CONFIG_ACPI_AC)
- Power management options → ACPI → <*>Battery (CONFIG_ACPI_BATTERY)
- Power management options → ACPI → <*>Button (CONFIG_ACPI_BUTTON)
- Power management options → ACPI → <*>Fan (CONFIG_ACPI_FAN)
- Power management options → ACPI → <*>Processor (CONFIG_ACPI_PROCESSOR)
- Power management options → ACPI → <*>Thermal Zone (CONFIG_ACPI_THERMAL)
If you prefer editing your .config file directly, you should set at least the following variables:
CONFIG_PM=y CONFIG_ACPI=y CONFIG_ACPI_AC=y CONFIG_ACPI_BATTERY=y CONFIG_ACPI_BUTTON=y CONFIG_ACPI_FAN=y CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_THERMAL=y CONFIG_ACPI_BLACKLIRG_YEAR=0 CONFIG_ACPI_EC=y CONFIG_ACPI_POWER=y CONFIG_ACPI_SYSTEM=y
Then recompile your kernel.
(This should be fixed in 2.6.23, there are new CONFIG_SUSPEND and CONFIG_HIBERNATION config options)
Kernel boot parameters
Many ThinkPads have been hit by a recent (kernel 2.6.16) change to ACPI4Linux that changed the default means of accessing the ACPI Embedded Controller as a way to shake out underlying bugs in the EC access code. If your ThinkPad fails to resume properly (a blinking Sleep light on resume that doesn't go away, or a hang when trying to suspend/standby a second time), adding ec_intr=0
to your kernel command line may help.
IBM specific ACPI driver
Unfortunately, special drivers for ACPI on ThinkPads were not included with kernels prior 2.6.10. So you'll have to compile one yourself or get it as precompiled module for your kernel.
You have the choice between thinkpad-acpi and ibm-acpi, with the latter being the recommended one.
If you use a post-2.6.10 kernel and you want to use ibm-acpi, it is recommended to look on its projects page for a possibly newer version.
ACPI daemon
Also you'll need to install acpid, if it isn't present on your system. acpid is a daemon that handles the ACPI events generated by the system. Read How to configure acpid.
Screen blanking (Standby)
Make sure you have
Option "DPMS"
in the Monitor section of your /etc/X11/XF86Config or /etc/X11/xorg.conf.
Running $ xset +dpms
and then $ xset dpms force off
will turn off the backlight on a laptop screen.
Note that this may not work in combination with $ echo -n "mem" > /sys/power/state
because switching to console causes the backlight to come back on before sleeping.
Suspend to RAM (Sleep)
ACPI Sleep/suspend-to-ram with recent 2.6.x kernels usually works fine. Have a look at the acpid configuration HOWTO. It includes a specific example for going to sleep on lid close.
For Troubleshooting, look at the Problems with ACPI suspend-to-ram page.
Suspend to disk (Hibernate)
There are two drivers for this available:
- swsusp, which is in the kernel and
- Software Suspend 2 which is more feature rich, but not yet in the kernel, so you have to patch it in yourself.
Both are reported to work fine as long as you use open-source graphic drivers. A comparison of the features can be found on this page.
Just in case you are in doubt...yes, it is safe in both cases to use the same swap partition as active swap and as suspend partition.
See the according drivers page for instructions.
ThinkPads on which it is recommended to use ACPI
- ThinkPad 770X, 770Z
- ThinkPad A20m, A20p, A20m, A20p, A21e, A21m, A21p, A22e, A22m, A22p, A30, A30p, A31, A31p
- ThinkPad G40, G41
- ThinkPad R30, R31, R32, R40, R40e, R50, R50e, R50p, R51, R52, R60
- ThinkPad T22, T23, T30, T40, T40p, T41, T41p, T42, T42p, T43, T43p
- ThinkPad X20, X21, X22, X23, X24, X30, X31, X32, X40, X41, X41 Tablet
- ThinkPad Z60t, Z60m, Z61m
- ThinkPad X60s
- ThinkPad TransNote
- ThinkPad T20 and T21 have old ACPI implementations, but there have been some reports of using ACPI successfully on these models with Ubuntu and Mandriva in particular. Check the related pages about installing Linux on these models for details.