Linux 下利用rtcwake唤醒设备
2014-02-25 12:26
483 查看
以下是在OpenSuse上所做的测试
whereis rtcwake
rtcwake: /usr/sbin/rtcwake /usr/share/man/man8/rtcwake.8.gz
rtcwake --help
Usage:
rtcwake [options]
Options:
-d, --device <device> select rtc device (rtc0|rtc1|...)
-n, --dry-run does everything, but suspend
-l, --local RTC uses local timezone
-m, --mode <mode> standby|mem|... sleep mode
-s, --seconds <seconds> seconds to sleep
-t, --time <time_t> time to wake
-u, --utc RTC uses UTC
-v, --verbose verbose messages
-h, --help display this help and exit
-V, --version output version information and exit
For more details see rtcwake(8).
standby
普通待机模式,为默认选项,对应ACPI state S1
mem
待机到内存,即内存之外把其他设备都进入低功耗模式,对应ACPI state S3
disk
待机到硬盘,即休眠,把电脑的当前状态保存到硬盘,几乎不消耗外部电源,对应ACPI state S4
off
通过调用系统的关机命令来休眠, 对应ACPI state S5
可以通过以下命令查阅当前系统支持的休眠模式
cat /sys/power/state
standby mem disk
我的电脑目前支持以上三种,但是测试发现休眠到disk的时候,机器会迅速醒来,standby和mem两种模式则工作正常,个中原因还不清楚。
执行该命令的时候需要root权限
1. 系统休眠后20seconds唤醒,加-v选项可以看到更多的打印信息
sudo rtcwake -v -s 20 -m mem 或
sudo rtcwake -v -s 20 -m standby
打印信息:
rtcwake -v -s 20 -m mem
Using UTC time.
delta = 0
tzone = 0
tzname = UTC
systime = 1393296617, (UTC) Tue Feb 25 02:50:17 2014
rtctime = 1393296617, (UTC) Tue Feb 25 02:50:17 2014
alarm 0, sys_time 1393296617, rtc_time 1393296617, seconds 20
rtcwake: wakeup from "mem" using /dev/rtc0 at Tue Feb 25 02:50:38 2014
suspend mode: mem; suspending system
2. 系统在指定的时间醒来
rtcwake -v -t `date -d 10:53 +%s` -m mem
Using UTC time.
delta = 0
tzone = 0
tzname = UTC
systime = 1393296754, (UTC) Tue Feb 25 02:52:34 2014
rtctime = 1393296754, (UTC) Tue Feb 25 02:52:34 2014
alarm 1393296780, sys_time 1393296754, rtc_time 1393296754, seconds 0
rtcwake: wakeup from "mem" using /dev/rtc0 at Tue Feb 25 02:53:00 2014
suspend mode: mem; suspending system
rtcwake -v -t `date -d 10:54 +%s` -m standby
Using UTC time.
delta = 0
tzone = 0
tzname = UTC
systime = 1393296794, (UTC) Tue Feb 25 02:53:14 2014
rtctime = 1393296794, (UTC) Tue Feb 25 02:53:14 2014
alarm 1393296840, sys_time 1393296794, rtc_time 1393296794, seconds 0
rtcwake: wakeup from "standby" using /dev/rtc0 at Tue Feb 25 02:54:00 2014
suspend mode: standby; suspending system
如果发现systime 和rtctime时间不一致,需要利用hwclock进行调整。
whereis rtcwake
rtcwake: /usr/sbin/rtcwake /usr/share/man/man8/rtcwake.8.gz
rtcwake --help
Usage:
rtcwake [options]
Options:
-d, --device <device> select rtc device (rtc0|rtc1|...)
-n, --dry-run does everything, but suspend
-l, --local RTC uses local timezone
-m, --mode <mode> standby|mem|... sleep mode
-s, --seconds <seconds> seconds to sleep
-t, --time <time_t> time to wake
-u, --utc RTC uses UTC
-v, --verbose verbose messages
-h, --help display this help and exit
-V, --version output version information and exit
For more details see rtcwake(8).
standby
普通待机模式,为默认选项,对应ACPI state S1
mem
待机到内存,即内存之外把其他设备都进入低功耗模式,对应ACPI state S3
disk
待机到硬盘,即休眠,把电脑的当前状态保存到硬盘,几乎不消耗外部电源,对应ACPI state S4
off
通过调用系统的关机命令来休眠, 对应ACPI state S5
可以通过以下命令查阅当前系统支持的休眠模式
cat /sys/power/state
standby mem disk
我的电脑目前支持以上三种,但是测试发现休眠到disk的时候,机器会迅速醒来,standby和mem两种模式则工作正常,个中原因还不清楚。
执行该命令的时候需要root权限
1. 系统休眠后20seconds唤醒,加-v选项可以看到更多的打印信息
sudo rtcwake -v -s 20 -m mem 或
sudo rtcwake -v -s 20 -m standby
打印信息:
rtcwake -v -s 20 -m mem
Using UTC time.
delta = 0
tzone = 0
tzname = UTC
systime = 1393296617, (UTC) Tue Feb 25 02:50:17 2014
rtctime = 1393296617, (UTC) Tue Feb 25 02:50:17 2014
alarm 0, sys_time 1393296617, rtc_time 1393296617, seconds 20
rtcwake: wakeup from "mem" using /dev/rtc0 at Tue Feb 25 02:50:38 2014
suspend mode: mem; suspending system
2. 系统在指定的时间醒来
rtcwake -v -t `date -d 10:53 +%s` -m mem
Using UTC time.
delta = 0
tzone = 0
tzname = UTC
systime = 1393296754, (UTC) Tue Feb 25 02:52:34 2014
rtctime = 1393296754, (UTC) Tue Feb 25 02:52:34 2014
alarm 1393296780, sys_time 1393296754, rtc_time 1393296754, seconds 0
rtcwake: wakeup from "mem" using /dev/rtc0 at Tue Feb 25 02:53:00 2014
suspend mode: mem; suspending system
rtcwake -v -t `date -d 10:54 +%s` -m standby
Using UTC time.
delta = 0
tzone = 0
tzname = UTC
systime = 1393296794, (UTC) Tue Feb 25 02:53:14 2014
rtctime = 1393296794, (UTC) Tue Feb 25 02:53:14 2014
alarm 1393296840, sys_time 1393296794, rtc_time 1393296794, seconds 0
rtcwake: wakeup from "standby" using /dev/rtc0 at Tue Feb 25 02:54:00 2014
suspend mode: standby; suspending system
如果发现systime 和rtctime时间不一致,需要利用hwclock进行调整。
相关文章推荐
- 使用 rtcwake 定时唤醒休眠的linux
- 嵌入式Linux低功耗利用busybox制作rtcwake定时唤醒系统
- linux下利用rtc 实现精确定时器
- 利用Powershell SSH-Session 工具管理 linux或网络设备 推荐
- linux文件系统的系统分析--(十六)sysfs和设备模型--从platform和rtc来感受设备模型
- 嵌入式Linux系统中利用mdev自动创建设备文件节点
- arm驱动程序——点亮led-利用次设备号(韦东山的视频总结及针对linux-2.6.30)
- Linux使用wake_up_interruptible()唤醒注册到等待队列上的进程
- 【TINY4412】LINUX移植笔记:(25)设备树RTC驱动
- 利用udev、sys动态创建linux设备结点
- arm linux利用alsa驱动并使用usb音频设备
- Android在标准linux基础上对休眠唤醒的实现(wakelock)
- 通过rtcwake命令设置系统S3(休眠到内存)/S4(挂起到硬盘)一段时间后自动唤醒
- 利用linux 内核所提供的input子系统编写字符设备驱动的步骤
- 如何在Linux下利用Libusb与HID USB设备通信!
- STM32L151C8周期性从待机模式唤醒(RTC Wakeup Timer)
- 唤醒 -- try_to_wake_up() http://blog.csdn.net/linux__kernel/article/details/1476795
- S3C2440驱动篇—Linux平台设备驱动之RTC时钟
- 获取linux系统RTC设备的时钟
- linux0.11进程睡眠sleep_on函数和唤醒wake_up函数分析