这在 17.10 上运行良好,但昨天升级到 18.04 后,当盖子关闭时,屏幕会关闭,但无法正常挂起。
我经常到处旅行,当我把它从旅行箱中取出时,立即注意到了它的热量(和电池耗尽)。
我尝试在 /etc/systemd/logind.conf 中取消注释这些行
HandleLidSwitch=suspend
HandleLidSwitchDocked=suspend
并重新启动但没有任何变化。
答案1
我想我已经弄清楚到底发生了什么,这要感谢以下两个来源:Dell XPS 13 (9370) ArchLinux 安装说明和Arch Linux 论坛。
由于某种原因,笔记本电脑不再进入深度睡眠状态,而是进入一种s2idle
仅仅屏幕关闭的挂起模式。
问题诊断
要确认您的系统是否存在这种情况,请使用您喜欢的方法挂起笔记本电脑(关闭盖子,按Fn
+ End
,pm-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 时没有遇到任何挂起问题,因此为什么这台特定的机器会如此糟糕还不清楚。
我建议遇到此类问题的人按照以下步骤操作以帮助识别问题:
您有 nVidia 显卡吗?如果是这样,请尝试新模式=0grub 技巧。
检查暂停功能是否起作用。如果您关闭盖子然后稍后再打开它并且它没有唤醒,则可能看起来好像它无法“恢复”。
你应该能够在任何桌面上手动选择暂停,但它在 Gnome Shell 中稍微隐藏了一些 -您可以长按屏幕右上角菜单中的电源按钮,或者按住 Alt 键单击该按钮,或按下 Super 键并输入“suspend”
通过选择暂停,您可以检查屏幕已关闭, 这电源 LED 闪烁正如你所期望的那样任何运转的风扇也将停止.如果这一切都发生了,但是然后如果你无法让你的机器唤醒,那么这似乎是一个“恢复”问题,而不是“暂停”问题。
我的问题是实际上进入暂停状态,提出原始问题的 Murray 在被 collisionTwo 要求检查这一点时,意识到问题也是在手动暂停时出现的。
就我而言(在有问题的笔记本电脑上),屏幕变黑,但电源 LED 保持亮起,如果风扇正在运行,它将继续运行。机器对任何按键、触摸板移动或点击或电源按钮按下均无反应。唯一能做的就是关闭它。
我尝试在挂起状态下播放音乐(以检查不仅仅是屏幕变黑)但音乐停止并且机器基本上已卡住。
尝试使用 18.04 版的 Live USB 来检查您的机器是否有类似的挂起问题。
这只是确认暂停问题与您安装的任何其他程序无关。
就我而言,我怀疑这是因为我安装了閣下这可能会以某种方式干扰挂起模式,但 Ubuntu 18.04 和 Kubuntu 18.04 的 Live USB 都出现了同样的情况
尝试一下 monty47 和 StrangeNoises 提供的另外两个经过充分研究的解决方案,看看是否能获得良好的结果。
- 他们似乎已经帮助许多人在 18.04 上恢复正常运行,并且可能与机器进入空闲国家而不是深度睡眠通常的‘暂停’模式。
如果以上解决方案都无法解决 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 中都可以正常挂起。
如果您尝试了其他解决方案,并且只能通过返回 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。