最近给笔记本电脑重装了ubuntu server,为能让屏幕自动息屏,在文件/etc/default/grub中添加配置:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash consoleblank=60 i915.enable_psr=0"

随即出现了一个很头疼的问题,即使是无操作有时候屏幕也会突然亮起来,而且诡异的是,屏幕虽然亮了,但是terminal的光标是不闪烁的,看起来像是卡死了一样,这时候虽然按一下键盘,屏幕就会恢复正常。

让AI帮我深度分析后最终测试发现此配置可避免这个问题:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash consoleblank=60 i915.enable_psr=0"

AI说似乎是和我的双显卡配置有关,系统PSR调度出了问题,i915.enable_psr=0关闭PSR才行,另外PSR关闭对系统影响也很有限。

2026-09-17 更新

最近问题再次出现。经过多天排查,我已经在这台机器上找到了可以稳定复现异常亮屏的直接触发条件。

当屏幕已经自动熄灭时,通过 SSH 执行:

sudo systemctl restart fwupd.service

屏幕会立即异常亮起。此时系统状态为:

fb0/blank=1
cursor_blink=0
bl_power=0

这说明 fbcon 仍认为控制台处于 blank 状态,但背光已经被重新打开,因此屏幕亮起后光标不会闪烁,自动熄屏计时也没有正常恢复。

fwupd 是 Linux 的设备固件更新服务。它启动时会枚举 BIOS、Thunderbolt、SSD 等支持固件更新的设备。需要注意,启动服务只会枚举设备,并不会自动刷写固件;实际更新需要另外执行 fwupdmgr update。

目前可以确认,在这台机器的当前软硬件环境中,fwupd.service 的启动过程是异常亮屏的直接触发条件。至于是 fwupd 的某个插件,还是设备枚举触发了 i915、ACPI 或背光驱动中的问题,还需要进一步定位。

解决方法

由于这是 Ubuntu Server,并不需要在后台持续检查设备固件,因此我选择禁用 fwupd 的自动刷新,并屏蔽该服务:

sudo systemctl disable --now fwupd-refresh.timer
sudo systemctl mask --now fwupd.service

验证状态:

systemctl is-enabled fwupd.service
systemctl is-active fwupd.service

预期输出分别为:

masked
inactive

这不会影响 APT 软件包、安全更新或内核更新,但会停止通过 fwupd 自动检查设备固件。

如果屏幕已经处于异常亮起状态,可以在不按键的情况下重新关闭背光:

echo 4 | sudo tee /sys/class/backlight/intel_backlight/bl_power

这里的路径只适用于使用 intel_backlight 的机器。其他机器可以先检查实际的背光设备名称:

ls /sys/class/backlight/

手动检查固件

需要检查固件更新时,先解除屏蔽并启动服务:

sudo systemctl unmask fwupd.service
sudo systemctl start fwupd.service
sudo fwupdmgr refresh
sudo fwupdmgr get-updates

确认需要升级时,再执行:

sudo fwupdmgr update

如果 fwupd 提示需要重启,应先重启并完成固件更新。确认更新完成且没有正在进行或等待重启的固件操作后,再次关闭并屏蔽服务:

sudo systemctl mask --now fwupd.service