Jetson suspend 后 HDMI 黑屏
现象
算力舱执行 suspend 后可以从网络上恢复,SSH 和系统服务正常,但 HDMI 显示器上的 Ubuntu 桌面没有恢复,屏幕保持黑屏。
典型表现:
- 可以通过
ssh nvidia@<设备 IP>登录设备。 gdm或display-manager仍然是active。- X11 会话仍然存在。
- HDMI 显示器可以被识别,例如
xrandr仍显示HDMI-0 connected。 - 本地 HDMI 画面黑屏,GNOME 桌面没有正常渲染。
排查命令
通过 SSH 登录设备:
ssh nvidia@192.168.1.221查看系统版本:
cat /etc/nv_tegra_release
uname -a查看图形服务状态:
systemctl status gdm --no-pager
systemctl status display-manager --no-pager
loginctl list-sessions查看 HDMI 输出状态:
export DISPLAY=:0
export XAUTHORITY=/run/user/1000/gdm/Xauthority
xrandr --current查看 suspend/resume 和图形栈相关日志:
journalctl -b --no-pager | egrep -i "suspend|resume|PM:|gnome-shell|mutter|Xorg|nvgpu|semaphore|error notifier" | tail -n 200如果日志中出现类似内容,通常说明系统已经恢复,但 NVIDIA 图形栈或 GNOME Shell 没有正常恢复:
nvgpu ... semaphore acquire timeout
nvgpu ... error notifier set to 24 ... owned by gnome-shell
gnome-shell / mutter DisplayConfig timeout原因
这个问题不是整机没有从 suspend 中醒来,而是图形栈恢复异常。
在 Jetson Linux R36.4.3 / JetPack 6.2 环境中,suspend/resume 后可能出现 NVIDIA nvgpu、Xorg、GNOME Shell / Mutter 状态不一致。系统、网络和服务已经恢复,但 HDMI 桌面没有重新渲染,最终表现为黑屏。
NVIDIA 论坛中也有 R36.4.3 / JetPack 6.2 上 HDMI resume 黑屏的已知问题记录,长期建议升级到 Jetson Linux R36.5 / JetPack 6.2.2 或更新版本。
参考:
- https://forums.developer.nvidia.com/t/orin-nano-8g-hdmi-blank-when-resume/337317
- https://forums.developer.nvidia.com/t/after-suspend-wakeup-hdmi-can-not-display/353817
- https://developer.nvidia.com/embedded/jetson-linux-r365
临时方案一:手动重启 gdm
黑屏后,如果 SSH 还能登录,可以手动重启图形登录服务:
sudo systemctl restart gdm也可以使用通用服务名:
sudo systemctl restart display-manager这个操作会重启 HDMI 上的本地图形会话,当前桌面里的应用会被中断。
临时方案二:resume 后自动重启 gdm
如果暂时不能升级系统,但希望每次从 suspend 恢复后自动把桌面拉起来,可以添加 systemd sleep hook:
sudo tee /lib/systemd/system-sleep/restart-gdm-after-resume >/dev/null <<'EOF'
#!/bin/sh
case "$1" in
post)
systemctl restart gdm
;;
esac
EOF
sudo chmod +x /lib/systemd/system-sleep/restart-gdm-after-resume删除这个临时方案:
sudo rm -f /lib/systemd/system-sleep/restart-gdm-after-resume注意:这个方案只是绕过问题。每次 resume 后都会重启本地图形会话。
临时方案三:禁用休眠
如果设备主要作为服务设备运行,不依赖本地 HDMI 桌面,最稳的临时处理是禁用 sleep / suspend,避免再次触发黑屏:
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target验证:
systemctl status sleep.target suspend.target hibernate.target hybrid-sleep.target恢复休眠能力:
sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target长期方案
升级到 Jetson Linux R36.5 / JetPack 6.2.2 或更新版本,并重新验证 suspend/resume 后 HDMI 桌面是否恢复。