NAME
apmd - Advanced Power Management (APM) daemon
SYNOPSIS
apmd [ -TVWciqv ] [ -P program ] [ -T seconds ] [ -c seconds ] [ -p
percent ] [ -v level ] [ -w percent ]
DESCRIPTION
apmd is an monitoring daemon for the Advanced Power Management (APM)
subsystem. The APM subsystem consists of power-management hardware,
firmware usually referred to as the APM BIOS and a driver in the
operating system kernel. The daemon can execute a program (usually a
shell script) when events are reported by the APM subsystem, and will
log, via syslogd(8), certain changes in power status. When the
available battery power becomes very low it can alert the user.
When the APM subsystem notifies the daemon of a pending suspend or
standby request, apmd will run a proxy program, log the event, sync(2)
data to the disk and then tell the APM subsystem to continue its
operation.
Preparations for power management events are made mainly by the proxy
program specified using the -P option. The proxy program is invoked
with one or two arguments:
start Invoked when the daemon starts.
stop Invoked when the daemon stops.
standby ( system | user )
Invoked when the APM subsystem reports that standby has been
initiated. The second parameter indicates whether firmware
("system") or software ("user") was the originator of the event.
The "standby" mode conserves power but leaves the machine able
to respond almost immediately to user activity. Most laptops
can’t stay in standby mode on battery power for more than a few
hours or a day. Normally, nothing special needs to be done to
prepare for "standing by".
suspend ( system | user )
Invoked when the APM subsystem reports that suspension has been
initiated. The second parameter indicates whether firmware
("system") or software ("user") was the originator of the event.
The "suspend" mode aggressively conserves power. Usually this
involves shutting off power to all devices except the CPU core
and memory, which are put into a very low power mode. Most
laptops can stay suspended, using battery power alone, for
several days. ("Hibernation" is a kind of super-suspend, where
all that state is written to disk and the machine uses no power.
Hibernation is treated like suspension by the APM subsystem.)
Before suspending, PCMCIA devices may need to be disabled using
cardctl(8), and some modular device drivers may need to be
unloaded if they have not been designed to support power
management.
resume ( suspend | standby | critical )
Invoked when the APM subsystem reports that computer has resumed
normal operation. The second parameter indicates the kind of
event from which the system is resuming. (A "critical" suspend
is a suspension that the APM subsystem performs in an emergency.
Some kernels do not pass this event to user space. If apmd
receives the event, it acknowledges the event and exits
immediately without logging or running the proxy program.)
When resuming, PCMCIA devices may need to be re-enabled using
cardctl(8), and some modular drivers may need to be reloaded.
Note that in the case of a critical suspend, the system state
may not have been completely saved.
change power
Invoked when the APM subsystem reports a change in power status,
such as a switch from mains to battery power.
change battery
Invoked when the APM subsystem reports that the charge of one or
more batteries is low. A few minutes of battery power may
remain.
change capability
Invoked when the APM subsystem reports some change in power
management capabilities. It may have been caused by operation
of a setup utility, or by the installation or removal of
devices.
apmd emits various messages, most of which are self-explanatory.
Battery status log entries contain three fields, separated by commas.
The first field indicates how full the battery is as a percentage of
its capacity. The second field indicates whether the battery is
charging, not charging, or discharging. When possible, apmd adds in
parentheses its estimate of the rate of charging or discharging. The
third field indicates how much time the battery can or could be used to
power the computer. This information is provided by the APM subsystem.
When possible, apmd adds in parentheses its own estimate of the battery
life (if discharging) or of the time required to charge the battery
fully (if charging).
OPTIONS
-P program, --proxy program
Specifies the proxy program to execute when events are received.
See above for information about the arguments supplied to this
program.
-T [seconds] , --proxy-timeout [seconds]
Sets a time-out for the proxy. Without this option (or with
this option and a negative argument) apmd waits indefinitely for
the proxy to finish. If the proxy enters an infinite loop or
wait then the machine may appear to have crashed. If this
option is given a positive integer argument then apmd will wait
only that many seconds for the proxy to finish, after which it
will log a warning, kill the proxy, and continue processing the
event. The default is 30 seconds.
-V, --version
Prints the version of the apmd program.
-W, --wall
In addition to logging low battery status (as determined either
by the -w level or by the firmware) using syslog(2), apmd will,
given this option, also use wall(1) to alert all users. This is
most useful if syslogd(8) is not set up to write ALERT messages
to all users. If both methods are used, more warnings will be
made during the critical time period.
-c [seconds] , --check [seconds]
Controls how many seconds to wait for an event. Without this
option (or with this option and a negative argument) apmd waits
indefinitely for an event. If this option is given a positive
integer argument then apmd will wait only that many seconds
before checking the battery level and possibly sending out a
warning, calling the proxy or making an entry in the log. The
default is 30 seconds.
-i, --ignore-bios-battery-low
Causes apmd to ignore a LOW BATTERY signal sent by the APM
subsystem. Some firmware signals a low battery at the wrong
time. Note that LOW BATTERY events may still be generated by
apmd itself based on the warning level.
-p percent, --percentage percent
Controls how often the battery status is logged. A new line is
printed each time the battery content changes by percent_change
if logging is enabled. The default is 5. Use a value greater
than 100 to disable periodic logging of the battery level.
-q, --quiet-bios-battery-low
Causes apmd not to generate a warning when a LOW BATTERY signal
is received from the APM subsystem. The firmware on some
machines produces an audible warning when power is about to be
used up, so an extra warning may not be needed.
-v [level] , --verbose [level]
The daemon can generate messages of varying degrees of
unimportance. Each message is assigned one of the priority
levels defined for the syslogd(8) subsystem, ranging from 0
(EMERG, least unimportant) to 7 (DEBUG, most unimportant). This
option sets the threshold level above which messages are
suppressed. Without an argument it increments the threshold by
1, thus making apmd more verbose. The default is 5 (NOTICE).
-w percent, --warn percent
When the battery is not being charged and the battery content
falls below the specified percent of capacity, and no such event
has yet occurred in the current discharge cycle, apmd will log a
warning at the ALERT log level to syslog(2) and generate a LOW
BATTERY event. If the -W or --wall option was given, the daemon
will also use wall(1) to alert all users of impending doom. The
default warning level is 10. Use a negative value to disable
this feature.
-h, --help
Causes apmd to print a brief command summary and exit.
BUGS
This daemon supports all APM events described in the APM BIOS
specification version 1.2; however it fails to support some of the
advanced features of APM 1.2, such as reporting the conditions of
multiple batteries. (Multiple batteries are currently treated as if
they were just one large one.)
Estimates of charge and discharge rates and times can be very
inaccurate.
There is no interaction yet with ACPI support as found in newer PC
hardware.
FILES
/dev/apm_bios
Device through which apmd communicates with the Linux APM
driver.
/proc/apm
APM driver status information
/etc/apmd_proxy
Proxy program that is run if none is specified.
/etc/apm/apmd_proxy
Proxy program that is run if none is specified. (Debian)
AUTHOR
This program was written by Rik Faith (faith@cs.unc.edu) and may be
freely distributed under the terms of the GNU General Public License.
There is ABSOLUTELY NO WARRANTY for this program. The current
maintainer is Avery Pennarun (apenwarr@worldvisions.ca).
SEE ALSO
apm(1), xapm(1), cardctl(8), syslogd(8).
January 2004