问题诊断

问题诊断

这在 17.10 上运行良好,但昨天升级到 18.04 后,当盖子关闭时,屏幕会关闭,但无法正常挂起。

我经常到处旅行,当我把它从旅行箱中取出时,立即注意到了它的热量(和电池耗尽)。

我尝试在 /etc/systemd/logind.conf 中取消注释这些行

HandleLidSwitch=suspend
HandleLidSwitchDocked=suspend

并重新启动但没有任何变化。

答案1

我想我已经弄清楚到底发生了什么,这要感谢以下两个来源:Dell XPS 13 (9370) ArchLinux 安装说明Arch Linux 论坛

由于某种原因,笔记本电脑不再进入深度睡眠状态,而是进入一种s2idle仅仅屏幕关闭的挂起模式。

问题诊断

要确认您的系统是否存在这种情况,请使用您喜欢的方法挂起笔记本电脑(关闭盖子,按Fn+ Endpm-suspend如果已安装,则在终端中写入pm-utils,或者按下Windows键类型suspend并按下Enter键)。

从挂起模式唤醒并在终端中输入:sudo journalctl | grep "PM: suspend" | tail -2。如果输出为

May 13 18:41:00 mex kernel: PM: suspend entry (s2idle)
May 13 20:52:36 mex kernel: PM: suspend exit

那么你没有进入深度睡眠。你也可以检查cat /sys/power/mem_sleep哪个应该返回

[s2idle] deep

这确认了默认的挂起模式是 s2idle(因为它用括号突出显示)。

临时解决方案

要尝试临时修复,请echo deep > /sys/power/mem_sleep以 root 用户身份执行。通过查看输出来检查是否成功,输出内容cat /sys/power/mem_sleep应该是

s2idle [deep]

然后挂起笔记本电脑并再次唤醒。如果sudo journalctl | grep "PM: suspend" | tail -2返回

May 13 18:41:00 mex kernel: PM: suspend entry (deep)
May 13 20:52:36 mex kernel: PM: suspend exit

那么问题应该已经解决了。您可以让计算机休眠几个小时,然后检查电池消耗是否得到改善。

永久修复

要使它永久生效,您必须编辑引导加载程序命令行。为此,请以 root 用户身份编辑文件 /etc/default/grub,例如运行sudo -H gedit /etc/default/grub。将行替换为

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash mem_sleep_default=deep"

并重新生成你的 grub 配置(运行sudo grub-mkconfig -o /boot/grub/grub.cfg)。

答案2

尝试创建/etc/systemd/sleep.conf

[Sleep]
SuspendMode=
SuspendState=mem

然后重启。这对我来说似乎有效,尽管我不确定我是否也通过/etc/systemd/logind.conf我首先进行的更改得到了改进。无论如何,在关闭盖子的情况下悬挂时没有观察到热量或风扇噪音,并且它也没有响应通过 wifi 进行的 ping,这是我的以前也断断续续地出现过这种情况。

挂起时电池寿命仍然会减少,可能是因为挂起的工作方法效率低于默认的理想方法,显然无法正常工作,但它似乎比默认行为更好。

在我的 XPS 13 9370 上试过,我不知道旧型号,但它们看起来很可能相似。

我曾尝试安装pm-utils和使用pm-suspend,而且似乎暂停效果非常有效,所以我想看看我是否可以做systemd-suspend同样的事情。

我查看了脚本以pm-utils弄清楚它实际上在做什么,看起来,在这种情况下,它正在做echo -n "mem" > /sys/power/state。所以我创建了/etc/systemd/sleep.conf如上所示的文件来匹配它。

目前还不完全清楚默认行为是什么。手册页systemd-sleep.conf说发行版应该包含/etc/systemd/sleep.conf注释掉的编译默认值,所以你可以看到这个信息,但在 ubuntu 中这个文件丢失了。不过我注意到如果你cat /sys/power/state得到:

freeze mem

所以我猜测这是它默认所做的。我猜这freeze可能是被接受的,因为它不会抛出错误,否则会导致 systemd 继续前进mem,但实际上可能不是工作由于复杂的原因,我们似乎无法确定,因此无法正确或可靠地发送。因此,只需发送mem即可避免这种情况并采取相应的措施pm-suspend

我怀疑 SuspendMode 设置实际上是多余的,而且无论如何也不会起任何作用。我怀疑这是因为cat /sys/power/disk只会让你:

[disabled]

我是新用户,因此无法发表评论,只能将其作为答案呈现,就好像我对此非常有信心一样!但我认为它正在发挥作用。

答案3

这里的其他答案都非常棒、深入且研究充分。

不幸的是它们不适用于我的特定机器 :(

如果你有 nVidia 显卡,似乎有一个修复方法对很多人有用,由卡斯卡格罗萨在回答这个问题时:Ubuntu 18.04 从挂起状态恢复时崩溃

它被怀疑是一个有缺陷的新驱动程序,可以通过添加来解决暂停问题新模式=0到 grub 并且已经在评论中确认可以帮助其他人解决这个问题。

我的问题机器上有英特尔显卡,奇怪的是我在至少 3 台其他机器(我朋友的和我自己的)上运行 Ubuntu 或 Kubuntu 18.04 时没有遇到任何挂起问题,因此为什么这台特定的机器会如此糟糕还不清楚。

我建议遇到此类问题的人按照以下步骤操作以帮助识别问题:

  1. 您有 nVidia 显卡吗?如果是这样,请尝试新模式=0grub 技巧。

  2. 检查暂停功能是否起作用。如果您关闭盖子然后稍后再打开它并且它没有唤醒,则可能看起来好像它无法“恢复”。

    • 你应该能够在任何桌面上手动选择暂停,但它在 Gnome Shell 中稍微隐藏了一些 -您可以长按屏幕右上角菜单中的电源按钮,或者按住 Alt 键单击该按钮,或按下 Super 键并输入“suspend”

    • 通过选择暂停,您可以检查屏幕已关闭, 这电源 LED 闪烁正如你所期望的那样任何运转的风扇也将停止.如果这一切都发生了,但是然后如果你无法让你的机器唤醒,那么这似乎是一个“恢复”问题,而不是“暂停”问题。

    • 我的问题是实际上进入暂停状态,提出原始问题的 Murray 在被 collisionTwo 要求检查这一点时,意识到问题也是在手动暂停时出现的。

    • 就我而言(在有问题的笔记本电脑上),屏幕变黑,但电源 LED 保持亮起,如果风扇正在运行,它将继续运行。机器对任何按键、触摸板移动或点击或电源按钮按下均无反应。唯一能做的就是关闭它。

    • 我尝试在挂起状态下播放音乐(以检查不仅仅是屏幕变黑)但音乐停止并且机器基本上已卡住。

  3. 尝试使用 18.04 版的 Live USB 来检查您的机器是否有类似的挂起问题。

    • 这只是确认暂停问题与您安装的任何其他程序无关。

    • 就我而言,我怀疑这是因为我安装了閣下这可能会以某种方式干扰挂起模式,但 Ubuntu 18.04 和 Kubuntu 18.04 的 Live USB 都出现了同样的情况

  4. 尝试一下 monty47 和 StrangeNoises 提供的另外两个经过充分研究的解决方案,看看是否能获得良好的结果。

    • 他们似乎已经帮助许多人在 18.04 上恢复正常运行,并且可能与机器进入空闲国家而不是深度睡眠通常的‘暂停’模式。
  5. 如果以上解决方案都无法解决 18.04 上的暂停问题,请尝试以下可接受的答案: Ubuntu 18.04 从挂起状态恢复时崩溃

    • Matalak(他也提出了这个问题)提供的解决方案是使用尤克里里尝试较旧的 4.14 内核。

    • 我的问题机器在 Ubuntu 17.10 和 Kubuntu 17.10 上没有出现挂起问题,所以这是有道理的,因为 17.10 使用 4.14 内核。现在它在使用 4.14 内核的 Ubuntu 18.04 和 Kubuntu 18.04 中都可以正常挂起。

  6. 如果您尝试了其他解决方案,并且只能通过返回 4.14 内核来解决挂起问题,那么您可能会对错误报告感兴趣: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1774950

    • 它似乎只影响具有特定硬件组合的少数机器,并且很难在其他 nouveau 相关问题或 s2idle 问题中识别。

    • 对于运行 Bay Trail Atom Celeron/Pentium 的用户来说,这种情况似乎更为普遍,但其他人也报告了其他机器也存在类似问题。

    • 如果你能在这次挂起失败后检查你的 kern.log(例如,您必须关闭机器并重新启动)你可能会注意到它说PM:暂停进入(深)然后除了重新启动的许多行之外,您没有进一步的输入。

    • 目前有一个补丁似乎可以解决这个问题。

    • 如果您想在错误报告中添加自己的意见,那么看看哪些特定机器受到了影响(并检查补丁是否为每个人修复了该问题)将会很有趣。

还尝试在此线程中收集‘18.04 中的暂停问题’:https://ubuntuforums.org/showthread.php?t=2395562&p=13780724#post13780724

答案4

我相信这个内核错误与此有关:

https://bugzilla.kernel.org/show_bug.cgi?id=199689

特别参见评论#3:

[…] 实际上,我们有意在这台装有最新上游内核的机器上使用 s2idle。

相关内容