Ubuntu 26.04 显示器熄灭后无法唤醒

目录

关键词:睡眠 休眠 熄屏 显示器熄灭

解决方案

按一下 Ctrl + Alt + F1 即可唤醒(也可能是 Fx,因个人电脑而异)。

触发虚拟终端 (Virtual Terminal) 切换操作,显示器就能重新点亮了。

碎碎念

Ubuntu 26.04 在 4 月底发布了正式版,彼时我还在使用 Ubuntu 24.04.x。可能出于稳定性考虑,旧版 LTS 只有在新版本发布第一个小版本更新的时候,才会被推送大版本更新,也就是 8 月底 24.04.x 才会收到 26.04.1 的更新。

Ubuntu 26.04 有一系列体验方面的更新,比如 HDR 支持之类的,我使用的 4K 160Hz QD-Mini LED 显示器在 Ubuntu 上一直发挥不出他的显示效果。另外还有 Linux 7.0 等升级......

5 月底,我实在没忍住,执行了 sudo do-release-upgrade -d

当时升级过程也遇到一些问题,我记得的有:

  1. 网络问题。Ubuntu 更新的时候,apt 源会被替换回官方源。当时我的电脑因为梯子不太好使,官方源不光更新慢,后面还网络连接报错了中止了更新进程。后来我把系统源替换回国内镜像源后,继续用 apt 执行更新了。
  2. 当时遇到一堆依赖冲突的问题,手动卸载了一些东西后解决的,具体是哪些没有记录了。

问题都解决后,随便捣鼓了一下就按 Super + L 去睡觉了。

第二天,随便敲了下键盘,准备继续捣鼓电脑。发现怎么都点不亮显示器了......

从键盘亮灯的状态看,电脑应该还是在运行的,但无奈怎么都点不亮,只能强制重启了。

后来又遇到了......我想起用切换 VT (Virtual Terminal, 虚拟终端) 的方式瞎按了一通,竟然显示器亮了。

于是临时解决方案就得到了......这也不失为一种加密方式,别人无法唤醒我的电脑,除非他重启......

关于睡眠后无法唤醒显示器的问题

当时使用 Hermes 尝试过帮我排查问题,一开始给的方案是从 NVIDIA 驱动层面修复,在 /etc/modprobe.d/ 下配置了几个内核参数:

复制代码
options nvidia NVreg_PreserveVideoMemoryAllocations=1
options nvidia NVreg_TemporaryFilePath=/var
options nvidia NVreg_UseKernelSuspendNotifiers=1

PreserveVideoMemoryAllocations 让驱动在睡眠时保留显存内容,UseKernelSuspendNotifiers 让驱动走内核标准的 suspend/resume 通知机制。加了没有任何变化。

我用的是 RTX 4060 Ti,通过 DP 接口连接一台 4K 160Hz QD-Mini LED 显示器。搜索发现这不是个例,NVIDIA 论坛上有人描述过完全相同的症状:

"The machine wakes up but the screen doesn't. If I press Ctrl-Alt-F1 to get to a text console the screen does wake up."

原因大致是:NVIDIA 闭源驱动在 Wayland 下,睡眠恢复时 DisplayPort 链路重新协商失败,驱动把输出设成了 NULL,GNOME 的合成器 Mutter 检测不到有效显示就停在那了。切 VT 会强制触发一次显示重初始化,所以屏幕能恢复。

高分辨率 + 高刷新率让 DP 链路协商更复杂,更容易触发。用 HDMI 或低分辨率显示器可能没这个问题。

但是,用惯了高刷的人,是很难回到 60Hz 的时代的。

因为按 Ctrl + Alt + F1 唤醒的操作也没有额外成本,这个问题就先搁置了,等 Ubuntu 26.04.1 看看是否会改善吧。

相关参考:

我的环境:

  • Ubuntu 26.04 LTS, 7.0.0-22-generic, GNOME 50, Wayland
  • NVIDIA RTX 4060 Ti, 驱动 595.71.05
  • AMD Ryzen 7 5700G