Some computers, especially laptops, can wake-up from a low-power suspend
to DRAM mode using the Real-time-clock (RTC) chip.
Apmsleep
can be used to set the alarm time in the RTC and to go into suspend or
standby mode. An interrupt from the RTC causes the computer to wake-up.
The program detects this event, by waiting for a leap in the kernel time
and terminates successfully. If no time leap occurs within one minute, or
something goes wrong, the exit value will be non-zero.
The wake-up time can be specified in two formats:
+hh:mm
specifies a relative offset to the current time. The computer
will suspend for exactly hh hours and mm minutes plus a few seconds
to wake up. On some laptops, the timing is not completely accurate so it
may be a few minutes (or more?) late.
hh:mm
specifies absolute
local
time in 24-hour format. The time stored in the RTC is not important.
You may change the time zone used, with
the TZ environment variable as usual. Daylight saving time is
not obeyed in this version, but might be in a future release.
WARNING:
Do not close cover of laptop after suspending the laptop with apmsleep.
Most laptops overheat when running with closed cover.
Energy conservation with APM is little for a desktop. Turning of the
screen will save 1/2, going into standby with drives turned off will
save another 1/6th of the current.
-V, --version
Print the
apmsleep
program version and exit immediately.
-s, --suspend
Put the machine into suspend mode if possible (default). On my laptop,
suspend mode turns off everything except the memory.
-S, --standby
Put the machine into standby mode if possible. On my laptop, standby mode
turns off screen, hard disk, and CPU.
-w, --wait
Wait indefinitely for the time leap.
-p, --precise
Wait for alarm time to match actual time. Do not wait for time leap.
This might be useful even without APM.
-n, --noapm
Do not call apm bios to suspend computer, just set the alarm clock
and wait for time leap indefinitely.
-d, --debug
Print some information about what is going on.
REQUIRED SYSTEM CONFIGURATION
Kernel
The special character device /dev/rtc must exist and the kernel needs
to be compiled with APM and RTC support.
BIOS
The computer must have the 'suspend to RAM'
feature enabled in the BIOS; 'suspend to Disk' will not work, because the
computer is turned off completely. You do not need to enable the ALARM
timer, it will be activated by apmsleep. On some boards, you can configure
which interrupts can be used to awake from suspend mode. If you have such
a board, you might want to make sure that keyboard (IRQ 1) and RTC (IRQ 8)
are among those interrupts. If your computer does not wake up, try to
enable 'modem ring' in the BIOS, even if you do not have a modem.
Privileges
The program must be run as root or have the SUID attribute set
(see chmod(1)).
BUGS
Apmsleep cannot detect which event terminated the suspension. Possible
events are: keyboard or mouse activity, modem ring, alarm from RTC, any
other interrupt. Sometimes, the time leap is not detected properly
(causing a wrong exit value).
Should use APM BIOS calls to set alarm clock (not yet supported by
kernel).
This program was tested on a Winbook XL laptop (Pentium) only.
It may not function on your hardware.
AUTHOR
Written by Peter Englmaier ([email protected]) and may be freely
distributed under the terms of the GNU General Public License. The
code is based on Paul Gortmacher's RTC test/example program. There is
ABSOLUTELY NO WARRANTY for this program. The current maintainer is
Peter Englmaier.