睡眠唤醒解决方案

睡眠唤醒解决方案

自从我买了一台(Windows 7)笔记本电脑以来,它就一直让我很烦。当它进入睡眠状态(盖子合上)时,它似乎会间歇性地唤醒随机在夜间(即晚上 10 点、凌晨 1 点 30 分、早上 7 点等)很多人都遇到过这种情况,但我已经做了几次测试并做了大量观察,以便提供尽可能多的信息来诊断问题。


当笔记本电脑半夜醒来时,可以发现几个明显的现象:

  • 持续时间约为 20-50 秒(多则几秒,少则很多)
  • 屏幕保持关闭状态(完全关闭,而不仅仅是背光)
  • 硬盘一直处于损坏状态(高清 LED 几乎稳定)
  • 如果 DVD 驱动器中有光盘,则它会旋转并发出约 5-10 秒的响声
  • Windows 处于活动状态(PnP冰棒如果驱动器、键盘等被移除或插入,则会发出噪音系统已进入睡眠状态)
  • (未确认:按下某个键(如果启用)将不会在下次打开它;必须使用电源按钮)
  • 下次打开系统时,不会出现上一次随机活动的迹象(使用powercfg -lastwake返回唤醒历史唤醒源计数共 0)

其他观察结果包括:

  • Windows 关闭或休眠时似乎不会发生这种情况,只有进入睡眠状态时才会发生这种情况(例如,盖子关闭)
  • Windows 7 中的任务计划程序中有无数任务,但快速扫描似乎表明没有一个是负责任的(尽管我已启用历史记录来跟踪)
  • (我一直试图抓住它,按下一个键来让屏幕显示出来,看看发生了什么,但它似乎总是在不合时宜的时刻发生,并且在我有机会之前关闭)
  • 作为马克建议之后,我检查了事件日志,发现了一组迄今为止最好的线索:

    6:51:37pm The system is entering sleep.
              Sleep Reason: Button or Lid
    6:51:42am The system time has changed to ‎2012‎-‎08‎-‎21T10:51:42.500000000Z from ‎2012‎-‎08‎-‎20T22:51:39.080510600Z.
    6:51:42am-6:51:47am Six services were stopped…
    6:51:47am The system has resumed from sleep.
              Sleep Time: ‎2012‎-‎08‎-‎21T10:51:46.021150600Z
              Wake Time: ‎2012‎-‎08‎-‎21T10:51:44.010053500Z
              Wake Source: S4 Doze to Hibernate
    6:51:55am The system is entering sleep.
              Sleep Reason: Hibernate from Sleep
    

它不是:

  • Windows 更新:WU 设置为仅检查,不下载,并在中午进行下载(不是随机
  • LAN 唤醒:WoL 和 Magic-Packet 均已禁用装置经理,BIOS 中没有选项,并且电缆调制解调器在夜间关闭
  • 设备:所有键盘、鼠标、网卡均设置为不唤醒系统(powercfg -devicequery wake_armed返回空列表)
  • 恶意软件:这是一个新系统,具有最新的 Windows 更新和具有最新定义的活动 MSSE,再加上使用最新的 Chrome 进行仔细浏览,并且没有任何可疑的文件

对于其可能的原因我有两种看法:

  1. 混合睡眠

    在 Windows Vista 及更高版本中,混合睡眠允许系统首先进入睡眠状态(挂起到 RAM),然后过一段时间再将内存刷新到磁盘以进入休眠状态。这可能很合理,因为笔记本电脑处于睡眠状态,然后最终切换到休眠状态,因此它会被唤醒以将内存刷新到磁盘。

    这可能是可行的,因为 BIOS POST 和 Windows“恢复”不是直接进入 Windows。然而,它应该从睡眠过渡到冬眠相同的时间,而不是随机的。此外,这款笔记本电脑没有启用混合睡眠。

    有人能确认混合睡眠是如何(在低水平上)像这样工作的吗?

  2. 低电量

    当笔记本电脑的电池电量过低时,Windows 会自动休眠(当然,Windows 会在电池电量过低之前执行此操作,以便有足够的电量执行休眠)。当它执行此操作时,硬盘会抖动几十秒,然后关闭。这似乎与笔记本电脑随机唤醒时的行为相符,特别是因为电池可以在看似随机的时间达到耗尽点。

    这个理论的问题在于,当系统在随机唤醒后开启时,它不会像在运行时因电池电量低而进入休眠状态时那样打印有关 Windows 因电池电量低而关闭的消息。

    此外,它意味着 Windows 在睡眠状态甚至应该已经关闭/休眠时仍处于活动状态并(在某种程度上)进行处理。

    有人能确认 Windows 是否处于活动状态并在“关闭”时监控电池电量吗?


根据事件,系统每次开机时更新系统时间似乎都是正常的,所以不是这样的,但它显然是在从睡眠状态过渡到休眠状态十二小时在它进入睡眠状态后。这令人困惑,原因有三:

  • 当前设置为休眠后电池续航时间和小时,当插入均衡省电器计划(四个小时,根本没有高性能计划)。省电器计划已生效,今天早上发生事故时电源已被拔掉
  • 混合睡眠是已禁用在每个电源计划中
  • powercfg没有发生过这样的事

有人知道为什么 Windows 会随机唤醒并出现上述症状或者为什么电源计划设置似乎不正确吗?


A很多有笔记本电脑(所有品牌和型号)半夜随机开机的人。不幸的是,大多数人得到的答复都一样,而且似乎很少能解决问题。

其中一些值得注意的包括:

  • 这个问题这似乎与我上面提出的几个观察结果是相同的。
  • 这个问题似乎有同样的问题,但是是使用 Linux。
  • 这个问题如果触摸板灵敏度设置得太低,则导致我关闭键盘/鼠标,但它仍然会这样做。
  • 此主题指向睡眠定时器,但它们已被禁用。

答案1

尽管可能看起来很愚蠢,但我还是发现了以下事实:

我也遇到了同样的问题。我从不关闭笔记本电脑,我总是将其置于睡眠模式,它会在半夜意外醒来。我发现这个“S4 Doze to Hibernate”事件不是一个错误,而是一个功能。转到电源高级设置,并在“睡眠”下拉菜单下更改“休眠后”:

在此处输入图片描述>

选择从睡眠模式进入休眠状态前要等待的时间。我将其设置为 1440 分钟(24 小时),这足以过夜。

顺便说一下,还要检查“允许唤醒计时器”下没有任何内容。

我没有看到您说您已经尝试过这一点,所以如果我没有注意到,我很抱歉浪费了您的时间。

答案2

睡眠唤醒解决方案

对于那些希望计算机不再自动从睡眠状态唤醒的人来说,这是一个解决方案,而更简单的解决方案不起作用。除了点击按钮或打开盖子之外,没有其他方法可以唤醒它。不是计划任务(例如 Windows Media Center)或未知原因。我发现的唯一缺点是,如果电池电量过低,笔记本电脑将无法唤醒以进入休眠状态。它会直接没电,所有未保存的信息都会丢失。

打开命令提示符并运行以下命令:

powercfg -setacvalueindex scheme_current sub_sleep bd3b718a-0680-4d9d-8ab2-e1d2b4ac806d 0
powercfg -setdcvalueindex scheme_current sub_sleep bd3b718a-0680-4d9d-8ab2-e1d2b4ac806d 0
powercfg -setactive scheme_current

可以通过单击命令提示符窗口顶部的标题/编辑/粘贴将它们复制并粘贴到命令提示符中。

这会改变当前电源方案的默认值并阻止机器从睡眠状态唤醒。

适用于以下注册表项:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\PowerSettings\238C9FA8-0AAD-41ED-83F4-97BE242C8F20\BD3B718A-0680-4D9D-8AB2-E1D2B4AC806D
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\User\PowerSchemes\381b4222-f694-41f0-9685-ff5bb260df2e\238c9fa8-0aad-41ed-83f4-97be242c8f20\bd3b718a-0680-4d9d-8ab2-e1d2b4ac806d
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Power\PowerSettings\238C9FA8-0AAD-41ED-83F4-97BE242C8F20\BD3B718A-0680-4D9D-8AB2-E1D2B4AC806D
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Power\User\PowerSchemes\381b4222-f694-41f0-9685-ff5bb260df2e\238c9fa8-0aad-41ed-83f4-97be242c8f20\bd3b718a-0680-4d9d-8ab2-e1d2b4ac806d
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\238C9FA8-0AAD-41ED-83F4-97BE242C8F20\BD3B718A-0680-4D9D-8AB2-E1D2B4AC806D
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes\381b4222-f694-41f0-9685-ff5bb260df2e\238c9fa8-0aad-41ed-83f4-97be242c8f20\bd3b718a-0680-4d9d-8ab2-e1d2b4ac806d

上述内容已在 Win7 和 Win8 中进行了测试。在测试期间,它将Win8 中上述所有类别下的修改SKUACSettingIndex为,也可以通过 regedit 手动完成。这将启用电源方案,并完全禁用从睡眠状态唤醒的功能。同样,我发现的唯一缺点是,如果电池电量过低,笔记本电脑将无法唤醒进入休眠状态。它只会没电。01

重要提示:实施配置更改后,可能还需要执行额外的步骤,即转到控制面板/电源选项,然后在高级设置下将当前电源方案重置为默认值。然后,用户可以重新调整回自己的偏好。

在我对新的 Win8 系统进行命令提示符测试时,它似乎已将电源设置重置为默认值,因为使用命令提示符解决方案后,一切又恢复了默认的超时设置。在测试期间,事件查看器/系统中也没有报告任何唤醒。

我还检查了另外两个系统上的事件查看器,自从两周前我在这两个系统上实施命令提示符解决方案以来,这两个系统上没有出现任何唤醒现象。

要将默认值恢复为原始值,请输入相同的命令提示符行,但最后一个字符输入 1 而不是 0。然后在电源选项中将当前电源方案更改回默认值。

HKEY_USERS\S-1-5-19\Control Panel\PowerCfg - This lists the current Power Policy.

答案3

在 Win7 Pro 上,您无需直接摆弄注册表设置,而是可以使用组策略编辑器gpedit.msc > Computer Configuration > Administrative Templates > System > Power Management > Sleep Settings根据自己的喜好进行调整,然后重新启动。

相关内容