rtcwake 无法在 MacBook Air(2012 年中)上安装的 Ubuntu 14.04 上运行

rtcwake 无法在 MacBook Air(2012 年中)上安装的 Ubuntu 14.04 上运行

我在 MacBook Air(2012 年中)上安装了 Ubuntu 14.04 GNU/Linux。我正在尝试用来rtcwake实现“从挂起延迟休眠”,如https://askubuntu.com/a/33192(具体用例在这里并不重要)。但是rtcwake,例如发布为,

sudo rtcwake --seconds 120  --mode mem

进入暂停 ( --mode mem)仅几秒钟(无论--seconds选项说什么)并立即返回。挂起和休眠都在此系统上正常工作,例如,当由pm-suspendpm-hibernate(使用内核的swsusp)触发时,或在关闭盖子时。机器保持正确的时间,并可以在 Ubuntu 中显示或更新它。相同的命令在另一台具有类似 GNU/Linux 操作系统的(非 Apple)机器上按预期工作。

我知道MAC OS X有这种功能,可以在预设时间或预设持续时间后从睡眠中唤醒。所以,我相信,他们正在访问内部时钟。我的问题是(所有相关):

幕后是否发生了一些唤醒事件,触发了立即唤醒?我怀疑这可能是罪魁祸首,因为正如我上面提到的,否则机器会正确挂起。 (但话又说回来,正确地挂起可能是由于SUSPEND_MODULES在这种“正常”挂起之前有问题的模块被钩子删除了。)此外,机器不会从正常挂起中唤醒,例如由当计划rtcwake要求时,合上盖子。

如果没有任何“隐藏”唤醒事件,我如何使用这个内部时钟来触发 GNU/Linux 中挂起的预定唤醒,因为它rtcwake似乎不起作用?该时钟 RTC 是否兼容以支持来自 GNU/Linux 工具的标准驱动程序模型唤醒标志?是否还有其他方法/解决方法可以实现此结果?

答案1

我已经找出罪魁祸首了。执行cat /proc/acpi/wakeup,并逐个禁用*enabled设备(例如,使用sudo echo 'DEVABBRV' > /proc/acpi/wakeup,其中DEVABBRV是上面输出中列出的设备缩写cat),结果证明这LID0是“过早”唤醒机器。

这可能是由于盖子中存在一些非标准的专有硬件传感器造成的。禁用 的唤醒功能LID0(可以通过添加到 使其永久化echo 'LID0' > /proc/acpi/wakeup/etc/rc.local使得rtcwake,特别是sudo rtcwake --seconds 120 --mode mem,按预期运行。

然而,对于我的特定用例来说,问题仍然没有解决(脚本在https://askubuntu.com/a/33192), 自从rtcwake 才不是在该脚本中运行时唤醒机器。

相关内容