Ubuntu 18.04 - Dell XPS13 9370 不再在合上盖子时挂起

Mur*_*ray 77 suspend xps 18.04

这在 17.10 上运行良好,但在昨天升级到 18.04 后,当盖子关闭时,屏幕关闭但没有正确暂停。

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

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

HandleLidSwitch=suspend
HandleLidSwitchDocked=suspend
Run Code Online (Sandbox Code Playgroud)

并重新启动但没有任何区别。

小智 116

我想我设法弄清楚发生了什么,这要归功于这两个来源: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
Run Code Online (Sandbox Code Playgroud)

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

[s2idle] deep
Run Code Online (Sandbox Code Playgroud)

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

临时修复

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

s2idle [deep]
Run Code Online (Sandbox Code Playgroud)

然后暂停笔记本电脑并再次唤醒。如果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
Run Code Online (Sandbox Code Playgroud)

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

永久修复

要使其永久有效,您必须编辑引导加载程序 cmdline。为此,请以 root 用户身份编辑文件 /etc/default/grub,例如运行sudo -H gedit /etc/default/grub. 更换线路

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Run Code Online (Sandbox Code Playgroud)

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash mem_sleep_default=deep"
Run Code Online (Sandbox Code Playgroud)

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

  • 替代永久修复,不涉及更改内核参数:安装 `sysfsutils` 和 `echo 'power/mem_sleep = deep' > /etc/sysfs.d/mem_sleep.conf`。sysfsutils 是一个微小的服务,它只是像这样恢复 sysfs 参数。 (5认同)
  • 我喜欢这个深入的答案,但是在 ubuntu 18 中,我在“回声深度”步骤中遇到了问题,其中我收到了“回声:写入错误:无效参数”。这可能是因为我没有正确地处于 root 状态。我不能`su -` 因为ubuntu 禁用了它,所以我尝试了`sudo -i` 和`sudo su` (4认同)
  • 在 Dell XPS 13 (9370) 上,如果在 Ubuntu 18.04 上启用了磁盘加密,“深度”挂起模式将无法正常工作。https://www.dell.com/community/XPS/XPS-13-9370-Suspend-failure-on-Ubuntu-18-04-with-encryption/td-p/6138409 (2认同)
  • 如果您有联想 ThinkPad X1 Carbon 6th Gen,这篇文章会有所帮助:https://jonfriesen.ca/blog/lenovo-x1-carbon-and-ubuntu-18.04/ (2认同)
  • @CalebJay:Ubuntu 将 `su -` 拼写为 `sudo -i`。您还可以使用 `sudo passwd` 更改 root 密码,如果这是您管理 Unix 机器的方式。 (2认同)

Str*_*ses 9

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

[Sleep]
SuspendMode=
SuspendState=mem
Run Code Online (Sandbox Code Playgroud)

并重新启动。这似乎对我有用,尽管我不确定我首先所做的/etc/systemd/logind.conf更改是否也没有得到改善。在任何情况下,在盖子关闭的情况下悬挂时都没有观察到热量或风扇噪音,并且它也没有响应 ping wifi,这是我之前间歇性地得到的。

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

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

所以我这就是它默认的做法。我的猜测是这freeze可能会被接受,因为它不会抛出错误,否则会导致 systemd 转到mem,但由于我们似乎无法确定的复杂原因,实际上可能无法正常或可靠地工作。因此,只是发送mem是一种有希望的尝试,可以避免这种情况并做该做的事情pm-suspend

我怀疑 SuspendMode 设置实际上是多余的,无论如何都不做任何事情。我怀疑这是因为cat /sys/power/disk只是让你:

[disabled]
Run Code Online (Sandbox Code Playgroud)

我是新用户,因此无法通过观察发表评论,被迫将其作为答案呈现,好像我对它非常有信心!但我认为它有效。


pHe*_*iOn 6

这里的其他答案非常好,深入且经过充分研究。

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

如果你有 nVidia 显卡,似乎有一个修复程序对很多人都有效,cascagrossa在回答这个问题时提供了帮助Ubuntu 18.04 crashes on resuming from suspend

它被怀疑是一个有缺陷的 nouveau 驱动程序,可以通过将nouveau.modeset=0添加到 grub来解决挂起问题,并且在帮助其他人解决问题的评论中也得到了确认。

我在我的问题机器上安装了 Intel 显卡,奇怪的是我在至少 3 台其他机器(我朋友和我自己的)上的 Ubuntu 或 Kubuntu 18.04 没有挂起问题,那么为什么这台特定的机器如此糟糕不清楚。

我建议遇到此类问题的任何人按照以下步骤操作以帮助确定问题:

  1. 你有 nVidia 显卡吗?如果是这样,请尝试nouveau.modeset=0 grub 技巧。

  2. 检查暂停是否有效。如果您关闭盖子然后稍后再打开它并且它没有醒来,则它似乎无法“恢复”。

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

    • 通过选择挂起,您可以检查屏幕是否已关闭电源 LED 是否正常闪烁,并且您希望任何风扇运行也会停止。如果这一切发生,但那么你不能让你的机器唤醒那么它似乎是一个“恢复”的问题,而不是一个“暂停”的问题。

    • 我的问题是它实际上并没有进入暂停状态,而 Murray 提出了原始问题,当碰撞二要求检查这一点时,意识到手动暂停时也会出现问题。

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

    • 我试过在进入挂起状态时播放音乐(检查它不仅仅是屏幕变黑),但音乐停止并且机器基本上已经停止工作。

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

    • 这只会确认挂起问题与您安装的任何其他程序无关。

    • 在我的情况下,我怀疑这是因为我安装了tlp,它可能以某种方式干扰了挂起模式,但同样的行为发生在 Ubuntu 18.04 和 Kubuntu 18.04 的 Live USB 上

  4. 试试 monty47 和 StrangeNoises 在这里提供的另外两个经过充分研究的解决方案,看看你是否能得到好的结果。

    • 它们似乎帮助许多人在 18.04 上重新启动并正常运行,并且可能更多地与机器进入s2idle状态而不是通常的“暂停”的睡眠(深度)模式有关。
  5. 如果没有任何解决方案可以解决您在 18.04 上的挂起问题,请尝试对此接受的答案: Ubuntu 18.04 在从挂起恢复时崩溃

    • Matalak(也提出了这个问题)提供的解决方案是使用UKUU来尝试较旧的 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: suspend entry (deep)然后除了再次启动的许多行。

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

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

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


小智 5

只是想为 Thinkpad X1 Carbon 6th Gen 的用户添加一个答案,该用户有类似的症状,即挂起时电池耗尽,这也是由于未进入深度睡眠模式引起的。

联想论坛上的这个帖子讨论了这个问题,总之X1C6选择支持Windows Modern Standby。如果您仔细阅读该帖子,您会发现虽然症状相同,但 XPS 13 9370 和 X1C6 之间的根本原因差异很大cat /sys/power/mem_sleep例如, X1C6 上的输出仅[s2idle]指示缺少对睡眠的支持deep

到目前为止针对此问题发布的解决方案仅适用于 XPS 13,不适用于 X1C6。据我了解,解决 X1C6 挂起模式问题的最佳解决方案是DSDT首先应用Delta Xi提供的补丁,然后由 PombeirP更新。这篇文章将引导您了解如何应用补丁,但请确保在执行任何操作之前阅读该文章及其所有更新。

我写了一篇要点,记录了与在 Thinkpad X1 Carbon 6th Gen 上安装 Ubuntu 18.04 相关的问题,包括我发现的有关 LVM 导致的缓慢启动问题以及深度睡眠问题的解决方案。