Differences between revisions 17 and 20 (spanning 3 versions)
Revision 17 as of 2007-08-07 13:55:30
Size: 8587
Editor: ?timrichardson
Comment:
Revision 20 as of 2007-12-27 22:09:02
Size: 9557
Editor: ?timrichardson
Comment:
Deletions are marked like this. Additions are marked like this.
Line 9: Line 9:

This page gathers bits of information about getting software suspend to work in Debian. Because software suspend is still experimental, it is not enabled by default on most machines. Depending on your system, a few more steps are needed to get suspend partially or fully working. However, many people find that it works quite well now. 
This page gathers bits of information about getting software suspend to work in Debian. Because software suspend is still experimental, it is not enabled by default on most machines. Depending on your system, a few more steps are needed to get suspend partially or fully working. However, many people find that it works quite well now.
Line 15: Line 14:

Line 19: Line 16:
However, power management events are not only initiated by the menu system. The computer's power button may be pressed, for example.
A key package for Lenny's power management is HAL which watches for ACPI events. HAL has a built-in ACPI module, so you don't need to install the separate ACPI packages. However, the separate ACPI packages which provide acpid are still selected by the Debian installation process. HAL works with acpid if it is present; acpid is mature and its use with HAL is common.
However, power management events are not only initiated by the menu system. The computer's power button may be pressed, for example. A key package for Lenny's power management is HAL which watches for ACPI events. HAL has a built-in ACPI module, so you don't need to install the separate ACPI packages. However, the separate ACPI packages which provide acpid are still selected by the Debian installation process. HAL works with acpid if it is present; acpid is mature and its use with HAL is common. Recommendation: stick with the Debian default for a laptop install, and keep the acpi packages.
Line 22: Line 18:
Apart from ACPI events, the desktop environment (such as gnome-power-manager) will create events. HAL will be asked to handle events initiated by gnome-power-manager (for example, the computer being idle for a certain time).  Apart from ACPI events, the desktop environment (such as gnome-power-manager) will create events. HAL will be asked to handle events initiated by gnome-power-manager (for example, the computer being idle for a certain time).
Line 24: Line 20:
The policy manager (gnome power manager) sends its request for action back to HAL, and HAL then looks for power management scripts to do the real work. Unfortunately these scripts are located in various places, so it is rather complicated to understand how it works.
The policy manager (gnome power manager) sends its request for action back to HAL, and HAL then looks for power management scripts to do the real work. Unfortunately these scripts are located in various places, so it is rather complicated to understand how it works. Further, there are different sets of power management packages.
Line 31: Line 26:
This is getting a bit complicated, so I will summarise where we are: You choose "suspend" from the menu. The gnome-power-manager sends a message to HAL, and HAL is pleased to find scripts from pm-utils: it calls pm-suspend. It may pass pm-suspend some specific instructions based on hardware quirks (see below).
Line 32: Line 28:
This is getting a bit complicated, so I will summarise where we are:
You choose "suspend".
the gnome-power-manager sends a message to HAL, and HAL is pleased to find scripts from pm-utils: it calls pm-suspend. It may pass pm-suspend some specific instructions based on hardware quirks (see below)
(should you want to, it is possible to interfere with HAL before it calls pm-suspend: see /usr/share/hal/scripts/hal-system-power-suspend)
If however you press the suspend key on your machine, this makes an ACPI event that is sent to HAL, which then hands off to the pm-utils script.
Line 43: Line 36:
The Gnome Power Manager FAQ (see links below) gives hints on sending power management messages to Gnome: for example, if you want to stop automatic suspend in a script.

The acpid and acpi-support packages install scripts in /etc/acpi and /etc/acpi/events. I don't think these scripts are used if you have HAL and pm-utils installed. If you want to change suspend behaviour, you need to concentrate on the scripts from pm-utils (below).
Line 44: Line 41:
We stick with the script pm-suspend as the topic to explore further. It is a shell script, in /usr/sbin/pm-suspend. What it does is logged to /var/log/pm-suspend.log
Line 45: Line 43:
We stick with the script pm-suspend as the topic to explore further.
It is a shell script, in /usr/sbin/pm-suspend.
What it does is logged to /var/log/pm-suspend.log

pm-suspend runs a number of shell scripts that do specific tasks to prepare for suspend, and then executes the the suspend.
The suspend operation is optionally handled by the Linux kernel, but pm-suspend looks first to see if the package uswsusp is installed (more accurately, it looks for the program called s2ram). If it finds s2ram, it uses this. Using s2ram seems to be the preferred way of working.
pm-suspend runs a number of shell scripts that do specific tasks to prepare for suspend, and then executes the the suspend. The suspend operation is optionally handled by the Linux kernel, but pm-suspend looks first to see if the package uswsusp is installed (more accurately, it looks for the program called s2ram). If it finds s2ram, it uses this. Using s2ram seems to be the preferred way of working.
Line 55: Line 47:
On my system, I see from the log file that /usr/lib/pm-utils/sleep.d is the source of about ten scripts executed when a suspend occurs.
They are executed in alphabetical order. You will notice that the same scripts are executed on a resume, but in reverse order.
There is a script to handle network connections: it calls the gnome package network manager, so you should probably be using it.
On my system, I see from the log file that /usr/lib/pm-utils/sleep.d is the source of about ten scripts executed when a suspend occurs. They are executed in alphabetical order. You will notice that the same scripts are executed on a resume, but in reverse order. There is a script to handle network connections: it calls the gnome package network manager, so you should probably be using it.
Line 59: Line 49:
Note: there is a package called powersaved which also provides scripts to handle suspend. It is not installed by default by Debian. If it is installed, it seems to get priority over pm-utils, and for me, suspend no longer works. So I don't recommend to install powersaved.
Line 73: Line 64:
+ '''ACPI-Support''' optional  + '''ACPI-Support''' optional
Line 75: Line 66:
+ '''acpid''' optional (HAL will use apcid if it is present) + '''acpid''' optional but recommended (HAL will use apcid if it is present)
Line 84: Line 75:
The uswsusp package is optional, but highly recommended.
s2ram comes with a database of known computers, but your computer configuration may not be included.
To find out, from a root terminal, execute
The uswsusp package is optional, but highly recommended. s2ram comes with a database of known computers, but your computer configuration may not be included. To find out, from a root terminal, execute
Line 90: Line 80:
to see if it works with your computer.
You may get "unknown computer".
In that case, try using the force option:
to see if it works with your computer. You may get "unknown computer".  In that case, try using the force option:
Line 96: Line 85:
Line 99: Line 87:
edit near the top of the file /usr/lib/pm-utils/defaults
to change the line with the options for s2ram. See this example:
edit near the top of the file /usr/lib/pm-utils/defaults to change the line with the options for s2ram. See this example:
Line 105: Line 92:

# what options should be passed to s2ram? 
# what options should be passed to s2ram?
Line 108: Line 94:
# for hal 0.5.9 and up don't set this option to get the options supplied  # for hal 0.5.9 and up don't set this option to get the options supplied
Line 112: Line 98:

Line 119: Line 103:
Line 125: Line 108:
Line 129: Line 113:
Script '''/etc/acpi/events/custom_lid'''
Line 130: Line 115:
Script '''/etc/acpi/events/custom_lid'''
Line 135: Line 119:
Script '''/etc/acpi/actions/custom_sleep.sh'''
Line 136: Line 121:
Script '''/etc/acpi/actions/custom_sleep.sh'''
Line 140: Line 124:
Line 143: Line 126:
Line 146: Line 128:
Line 148: Line 129:
Line 154: Line 134:
Line 156: Line 135:
Line 160: Line 138:
Line 163: Line 140:
Line 166: Line 144:
 * [http://people.freedesktop.org/~hughsient/quirk/index.html About HAL and power management from freedesktop.org] 
* [http://people.freedesktop.org/~hughsient/quirk/index.html About HAL and power management from freedesktop.org]
Line 168: Line 147:
 * [http://live.gnome.org/GnomePowerManager Home of the Gnome Power Manager. The FAQ is interesting]
Line 169: Line 149:
CategoryHardware  CategoryHardware

Help on software suspend

This page gathers bits of information about getting software suspend to work in Debian. Because software suspend is still experimental, it is not enabled by default on most machines. Depending on your system, a few more steps are needed to get suspend partially or fully working. However, many people find that it works quite well now.

For more reading material, see also the links at the bottom of this page about hibernate and suspend.

Suspend under lenny using Hal (example, kernel 2.6.21)

The Gnome Power Manager must be installed to enable suspend menu entries on the System -> Shut Down dialog.

However, power management events are not only initiated by the menu system. The computer's power button may be pressed, for example. A key package for Lenny's power management is HAL which watches for ACPI events. HAL has a built-in ACPI module, so you don't need to install the separate ACPI packages. However, the separate ACPI packages which provide acpid are still selected by the Debian installation process. HAL works with acpid if it is present; acpid is mature and its use with HAL is common. Recommendation: stick with the Debian default for a laptop install, and keep the acpi packages.

Apart from ACPI events, the desktop environment (such as gnome-power-manager) will create events. HAL will be asked to handle events initiated by gnome-power-manager (for example, the computer being idle for a certain time).

The policy manager (gnome power manager) sends its request for action back to HAL, and HAL then looks for power management scripts to do the real work. Unfortunately these scripts are located in various places, so it is rather complicated to understand how it works. Further, there are different sets of power management packages.

The package pm-utils is a package of power management software. It is actually a "front" to give common interface for HAL; it stands between HAL and actually suspending the system. pm-utils is designed for specific customisations to be "hooked" into it. This means that scripts in the directory /usr/lib/pm-utils/sleep.d are executed at suspend and resume. (pm-utils actually looks first in /etc/pm/sleep.d, but in the default Debian configuration, these directories are empty). The system can be suspended by user action, or idle-time timeout: both cases go via pm-utils if you have the package configuration discussed here.

hibernate and "thaw" are handled almost the same as suspend/resume.

This is getting a bit complicated, so I will summarise where we are: You choose "suspend" from the menu. The gnome-power-manager sends a message to HAL, and HAL is pleased to find scripts from pm-utils: it calls pm-suspend. It may pass pm-suspend some specific instructions based on hardware quirks (see below).

If however you press the suspend key on your machine, this makes an ACPI event that is sent to HAL, which then hands off to the pm-utils script.

pm-suspend runs any scripts it finds to prepare for suspension. Some kernel modules are unloaded, for example.Then it calls a program to cause suspend to happen: this could be in the kernel, but the software provided by the packaged uswsusp is preferred, if present.

(note: the man page for pm-suspend is interesting and easy to understand)

All this message sending may seem like a lot of work, but by putting HAL in the centre, some big advantages are gained. One is that HAL includes a growing database of hardware, and it can use "quirks" to tweak the suspend, hibernate and resume operations. HAL therefore lets all Linux distributions share this hardware-specific knowledge. This database of quirks is in the Debian package hal-info.

The Gnome Power Manager FAQ (see links below) gives hints on sending power management messages to Gnome: for example, if you want to stop automatic suspend in a script.

The acpid and acpi-support packages install scripts in /etc/acpi and /etc/acpi/events. I don't think these scripts are used if you have HAL and pm-utils installed. If you want to change suspend behaviour, you need to concentrate on the scripts from pm-utils (below).

About pm-utils

We stick with the script pm-suspend as the topic to explore further. It is a shell script, in /usr/sbin/pm-suspend. What it does is logged to /var/log/pm-suspend.log

pm-suspend runs a number of shell scripts that do specific tasks to prepare for suspend, and then executes the the suspend. The suspend operation is optionally handled by the Linux kernel, but pm-suspend looks first to see if the package uswsusp is installed (more accurately, it looks for the program called s2ram). If it finds s2ram, it uses this. Using s2ram seems to be the preferred way of working.

You should also have a look at the log file mentioned above.

On my system, I see from the log file that /usr/lib/pm-utils/sleep.d is the source of about ten scripts executed when a suspend occurs. They are executed in alphabetical order. You will notice that the same scripts are executed on a resume, but in reverse order. There is a script to handle network connections: it calls the gnome package network manager, so you should probably be using it.

Note: there is a package called powersaved which also provides scripts to handle suspend. It is not installed by default by Debian. If it is installed, it seems to get priority over pm-utils, and for me, suspend no longer works. So I don't recommend to install powersaved.

Summary of relevant packages for HAL and pm-utils

Here is a list of packages linked to power management. Only HAL seems to be necessary for gnome to work.

+ HAL Central to the modern power management approach

+ hal-info rules for specific hardware

+ pm-utils required for the configuration discussed here. Key scripts are placed in /usr/sbin and /usr/lib/pm-utils/sleep.d

+ uswsusp optional but recommended by pm-utils. the pm-utils scripts look for the executables in this package. Try to see if suspend and hibernate works without it first (more details below)

+ powermgmt-base provides some status scripts that are relied upon by other parts of Gnome and Debian, but it is not central to the operation of suspend and resume.

+ ACPI-Support optional

+ acpid optional but recommended (HAL will use apcid if it is present)

+ acpi not needed

+ libacpi0 not needed

+ hibernate not needed

Tips on using s2ram from uswsusp package

The uswsusp package is optional, but highly recommended. s2ram comes with a database of known computers, but your computer configuration may not be included. To find out, from a root terminal, execute

s2ram

to see if it works with your computer. You may get "unknown computer". In that case, try using the force option:

s2ram -f

If this works, then you need to make the -f option the default for pm-utils.

edit near the top of the file /usr/lib/pm-utils/defaults to change the line with the options for s2ram. See this example:

#######################################################################
# The following options require the uswsusp package being installed
# what options should be passed to s2ram?
# see http://en.opensuse.org/S2ram for more information
# for hal 0.5.9 and up don't set this option to get the options supplied
# by HAL
 S2RAM_OPTS="-f"

Now, suspend should work when using the uswsusp package.

This is a useful advanced reference: [http://gentoo-wiki.com/HOWTO_Software_Suspend_v2 Gentoo HOWTO_suspend]

Information for older kernels

Older versions of Debian do not use HAL as discussed above. They rely on the ACPI packages, and scripts handling acpi events.

The following scripts were needed to get suspend to ram working on a ?ThinkPad X22 running linux-image 2.6.14-2 and tracking unstable.

Script /etc/acpi/events/custom_sleepbtn

event=button/sleep
action=/etc/acpi/actions/custom_sleep.sh

Script /etc/acpi/events/custom_lid

event=button/lid
action=/etc/acpi/actions/custom_sleep.sh

Script /etc/acpi/actions/custom_sleep.sh

# enable xscreensaver
source /proc/`pidof xscreensaver`/environ && xscreensaver-command -lock
## optional: eject all pcmcia devices
#cardctl eject || true
# go to sleep
echo mem > /sys/power/state

Make sure the files you create in /etc/acpi/actions are executable:

$ sudo chmod +x /etc/acpi/actions/custom_sleep.sh

The first two links refer to old approaches.

These are more modern links (> kernel 2.6.20)