笔记本电脑随机唤醒 = 休眠/低电量?

Syn*_*ech 26 laptop windows-7 troubleshooting sleep power-management

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


当笔记本电脑在半夜醒来时,可以进行几个有说服力的观察:

  • 它持续约 20-50 秒(多于几个,少于很多)
  • 屏幕保持关闭(完全,不仅仅是背光)
  • 硬盘一直在颠簸(HD LED 几乎是稳定的)
  • 如果里面有光盘,DVD 驱动器会旋转并大声旋转约 5-10 秒
  • Windows 处于活动状态(如果在系统进入睡眠状态移除或插入驱动器/键盘/等,则会播放PnP bing-bong噪音)
  • (未经证实:按下一个键——如果启用——下次不会打开它;必须使用电源按钮)
  • 下次打开系统时,没有指示之前的随机活动(使用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
    
    Run Code Online (Sandbox Code Playgroud)

它不是什么:

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

关于它可能是什么,我有两种理论:

  1. 混合睡眠

    在 Windows Vista 及更高版本中,混合睡眠让系统首先睡眠(暂停到 RAM),然后在一段时间后将内存刷新到磁盘以休眠。这可能是有意义的,因为膝上型电脑处于睡眠状态,然后最终切换到休眠状态,因此它会唤醒以将内存刷新到磁盘。

    这可以工作,因为它不是直接进入 Windwos,而是 BIOS POST 和 Windows“恢复”。然而,它应该从睡眠到休眠状态的转变一样的时间,不随意。此外,这台特定的笔记本电脑没有启用混合睡眠。

    如果混合睡眠像这样工作,任何人都可以确认(在低级别)如何?

  2. 低电量

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

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

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

    任何人都可以确认 Windows 是否处于活动状态并在“关闭”时监控电池电量?


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

  • 当前设置是在使用电池小时后休眠,在插入平衡节电计划时小时后休眠(四小时,而高性能计划则完全没有)。该节电器计划实际上是今天早上当它发生时它拔掉
  • 在每个电源计划中禁用混合睡眠
  • powercfg 没有发生过的记录

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


一个很多经历在半夜上随机打开(所有品牌和型号)的笔记本电脑的人。不幸的是,他们中的大多数人都得到了相同的回应,但似乎很少能解决问题。

一些值得注意的包括:

  • 这个问题似乎与我上面所做的一些观察是相同的问题。
  • 这个问题似乎有同样的问题,但在 Linux 上。
  • 这个问题导致我关闭键盘/鼠标,以防触摸板灵敏度设置得太低,但它仍然这样做。
  • 该线程指向睡眠定时器,但它们已经被禁用。

Eve*_*ett 17

冒着看起来很愚蠢的风险,我发现了以下内容:

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

在此处输入图片说明>

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

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

我没有看到你说你已经尝试过这个,所以如果我错过了你的指出,我为浪费你的时间道歉。


Pau*_*low 5

睡眠唤醒解决方案

对于那些希望他们的计算机永远不会自己从睡眠中醒来并且更简单的解决方案不起作用的人来说,这是一个解决方案。除了点击按钮或打开盖子外,没有其他方法可以唤醒它。不是计划唤醒系统的计划任务,例如 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
Run Code Online (Sandbox Code Playgroud)

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

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

适用于以下注册表项:

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
Run Code Online (Sandbox Code Playgroud)

以上已经过测试,可以在Win7和Win8下工作。测试过程中将Win8中的SKUACSettingIndexa0从a修改为1上述所有类别下的a ,也可以通过regedit手动完成作为替代。这使电源方案能够从睡眠中唤醒完全禁用。同样,我发现的唯一缺点是,如果电池电量过低,笔记本电脑将无法唤醒进入休眠状态。它只会死。

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

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

我还在其他两个系统上查看了事件查看器,自从我两周前在它们上实施命令提示符解决方案以来,这些系统上没有任何唤醒。

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

HKEY_USERS\S-1-5-19\Control Panel\PowerCfg - This lists the current Power Policy.
Run Code Online (Sandbox Code Playgroud)