.\" Copyright (c) 2007, SUSE LINUX Products GmbH
.\"                     Bernhard Walle <bwalle@suse.de>
.\"
.\" This program is free software; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License
.\" as published by the Free Software Foundation; either version 2
.\" of the License, or (at your option) any later version.
.\"
.\" This program is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License
.\" along with this program; if not, write to the Free Software
.\" Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
.\" 02110-1301, USA.
.\"
.TH RTCWAKE 8 "June 2015" "util-linux" "System Administration"
.SH NAME
rtcwake \- enter a system sleep state until specified wakeup time
.SH SYNOPSIS
.B rtcwake
[options]
.RB [ \-d
.IR device ]
.RB [ \-m
.IR standby_mode ]
.RB { "\-s \fIseconds\fP" | "\-t \fItime_t\fP" }
.SH DESCRIPTION
This program is used to enter a system sleep state and to automatically
wake from it at a specified time.
.PP
This uses cross-platform Linux interfaces to enter a system sleep state, and
leave it no later than a specified time.  It uses any RTC framework driver that
supports standard driver model wakeup flags.
.PP
This is normally used like the old \fBapmsleep\fP utility, to wake from a suspend
state like ACPI S1 (standby) or S3 (suspend-to-RAM).  Most platforms can
implement those without analogues of BIOS, APM, or ACPI.
.PP
On some systems, this can also be used like \fBnvram-wakeup\fP, waking from states
like ACPI S4 (suspend to disk).  Not all systems have persistent media that are
appropriate for such suspend modes.
.PP
Note that alarm functionality depends on hardware; not every RTC is able to setup 
an alarm up to 24 hours in the future.
.PP
The suspend setup maybe be interrupted by active hardware; for example wireless USB
input devices that continue to send events for some fraction of a second after the
return key is pressed.
.BR rtcwake
tries to avoid this problem and it waits to terminal to settle down before
entering a system sleep.

.SH OPTIONS
.TP
.BR \-A , " \-\-adjfile " \fIfile
Specify an alternative path to the adjust file.
.TP
.BR \-a , " \-\-auto"
Read the clock mode (whether the hardware clock is set to UTC or local time)
from the \fIadjtime\fP file, where
.BR hwclock (8)
stores that information.  This is the default.
.TP
.BR \-\-date " \fItimestamp"
Set the wakeup time to the value of the timestamp.  Format of the
timestamp can be any of the following:
.TS
tab(|);
left l2 l.
YYYYMMDDhhmmss
YYYY-MM-DD hh:mm:ss
YYYY-MM-DD hh:mm|(seconds will be set to 00)
YYYY-MM-DD|(time will be set to 00:00:00)
hh:mm:ss|(date will be set to today)
hh:mm|(date will be set to today, seconds to 00)
tomorrow|(time is set to 00:00:00)
+5min
.TE
.TP
.BR \-d , " \-\-device " \fIdevice
Use the specified \fIdevice\fP instead of \fBrtc0\fP as realtime clock.
This option is only relevant if your system has more than one RTC.
You may specify \fBrtc1\fP, \fBrtc2\fP, ... here.
.TP
.BR \-l , " \-\-local"
Assume that the hardware clock is set to local time, regardless of the
contents of the \fIadjtime\fP file.
.TP
.B \-\-list\-modes
List available \-\-mode option arguments.
.TP
.BR \-m , " \-\-mode " \fImode
Go into the given standby state.  Valid values for \fImode\fP are:
.RS
.TP
.B standby
ACPI state S1.  This state offers minimal, though real, power savings, while
providing a very low-latency transition back to a working system.  This is the
default mode.
.TP
.B freeze
The processes are frozen, all the devices are suspended and all the processors
idled.  This state is a general state that does not need any platform-specific
support, but it saves less power than Suspend-to-RAM, because the system is
still in a running state.  (Available since Linux 3.9.)
.TP
.B mem
ACPI state S3 (Suspend-to-RAM).  This state offers significant power savings as
everything in the system is put into a low-power state, except for memory,
which is placed in self-refresh mode to retain its contents.
.TP
.B disk
ACPI state S4 (Suspend-to-disk).  This state offers the greatest power savings,
and can be used even in the absence of low-level platform support for power
management.  This state operates similarly to Suspend-to-RAM, but includes a
final step of writing memory contents to disk.
.TP
.B off
ACPI state S5 (Poweroff).  This is done by calling '/sbin/shutdown'.
Not officially supported by ACPI, but it usually works.
.TP
.B no
Don't suspend, only set the RTC wakeup time.
.TP
.B on
Don't suspend, but read the RTC device until an alarm time appears.
This mode is useful for debugging.
.TP
.B disable
Disable a previously set alarm.
.TP
.B show
Print alarm information in format: "alarm: off|on  <time>".
The time is in ctime() output format, e.g. "alarm: on  Tue Nov 16 04:48:45 2010".
.RE
.TP
.BR \-n , " \-\-dry-run"
This option does everything apart from actually setting up the alarm,
suspending the system, or waiting for the alarm.
.TP
.BR \-s , " \-\-seconds " \fIseconds
Set the wakeup time to \fIseconds\fP in the future from now.
.TP
.BR \-t , " \-\-time " \fItime_t
Set the wakeup time to the absolute time \fItime_t\fP.  \fItime_t\fP
is the time in seconds since 1970-01-01, 00:00 UTC.  Use the
.BR date (1)
tool to convert between human-readable time and \fItime_t\fP.
.TP
.BR \-u , " \-\-utc"
Assume that the hardware clock is set to UTC (Universal Time Coordinated),
regardless of the contents of the \fIadjtime\fP file.
.TP
.BR \-v , " \-\-verbose"
Be verbose.
.TP
.BR \-V , " \-\-version"
Display version information and exit.
.TP
.BR \-h , " \-\-help"
Display help text and exit.
.SH NOTES
Some PC systems can't currently exit sleep states such as \fBmem\fP
using only the kernel code accessed by this driver.
They need help from userspace code to make the framebuffer work again.
.SH FILES
.I @ADJTIME_PATH@
.SH HISTORY
The program was posted several times on LKML and other lists
before appearing in kernel commit message for Linux 2.6 in the GIT
commit 87ac84f42a7a580d0dd72ae31d6a5eb4bfe04c6d.
.SH AUTHORS
The program was written by David Brownell <dbrownell@users.sourceforge.net>
and improved by Bernhard Walle <bwalle@suse.de>.
.SH COPYRIGHT
This is free software.  You may redistribute copies of it under the terms
of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.
.SH "SEE ALSO"
.BR hwclock (8),
.BR date (1)
.SH AVAILABILITY
The rtcwake command is part of the util-linux package and is available from the
.UR https://\:www.kernel.org\:/pub\:/linux\:/utils\:/util-linux/
Linux Kernel Archive
.UE .
