我有一个简单的要求:远程访问我的linux(ubuntu 22.04 base)桌面替换。这需要远程访问我的路由器并通过 wifi 发送 WoL 数据包,然后登录到我的电脑,这样就可以了。
问题是,我的电脑在我不希望的时候被唤醒。
虽然英特尔认为它需要将几个永远在线的特洛伊木马黑匣子潜入我们的电脑(英特尔ME、EC、SMM),但显然要求无线局域网适配器能够重新连接到 WiFi 是太过分了当连接在待机期间丢失时(因为,你知道,这对于 PC 用户来说实际上是有用的改变)。
因此,解决方案是让支持 wowlan 的 WLAN 适配器在魔术数据包以及丢失的 wifi 连接时唤醒,以便操作系统可以重新连接。
再说一次,这就是我所需要的:能够远程唤醒我的电脑。
AFAICT,这需要:
- 设置 WoWLAN 并睡眠。
- 唤醒时,让电脑检查唤醒原因:
- 如果它是一个魔术包或任何其他唤醒触发器,我们就完成了。
- 如果是连接丢失:
- 尝试重新连接一段时间。如果成功,再去睡觉。
- 否则灯可能会熄灭,路由器会暂时消失,而我们将依靠电池运行。所以让我们使用 rtcwake 之类的东西来休眠一段时间,然后唤醒并重试连接等等。我们甚至可以在这里进行一些指数退避以节省电池。或者,我们可以检查 AC 适配器和 rtcwake-sleep 一段时间,然后重试,直到 AC 电源恢复,然后等待 wifi 重新连接,然后再次休眠。关键是,如果路由器坏了,我们可能无论如何都应该睡觉,以节省电量,而且因为无论如何也没有什么可以交谈的。
这有点微不足道,似乎是很多用户可能想做的事情。我真的不相信这个问题还没有得到解决,我需要开始摆弄 systemd 和脚本。
我有哪些选择?我倾向于在 WiFi 站模式下添加一个愚蠢的路由器和一个愚蠢的 USB 以太网适配器......太浪费了!
我的旧台式机替代品 (DELL) 可以通过交流启动唤醒(甚至可以从断电状态唤醒,当然也可以通过有线 WoL),这会给我更多选择,但这些消费类笔记本电脑完全是垃圾(联想)。
其他非 wowlan 解决方案也可以提供帮助,例如每隔几个小时唤醒电脑一分钟,这将在必要时强制重新连接,并在未明确唤醒的情况下节省电池。
有一些现成的解决方案吗?
编辑:
另一种解决方案:仅在因连接丢失而醒来后,等待一分钟重新连接,如果成功则进入睡眠状态。否则 rtcwake-sleep 一段时间,然后重试。
这就引出了一个问题:竞争条件怎么样?如果我们设置重新连接后睡眠(或者我们即将第一次睡眠)并且在进入睡眠时连接丢失怎么办?这一切真的像看上去那么脆弱吗?