Ubuntu 26.04 + Intel i915 + HDMI KVM 切换黑屏问题解决:使用 DRM EDID Override 恢复外接显示

📅 2026/7/18 3:20:31
Ubuntu 26.04 + Intel i915 + HDMI KVM 切换黑屏问题解决:使用 DRM EDID Override 恢复外接显示
1. 问题背景最近将主力工作环境从 Windows 迁移到 Ubuntu Desktop 26.04。硬件环境笔记本ThinkPad T14 Gen1GPUIntel CometLake-U UHD Graphics系统Ubuntu Desktop 26.04桌面环境GNOME Wayland外接显示器Lenovo ThinkVisionKVM绿联 HDMI KVM Switch4进1出支持 USB 键鼠切换连接方式ThinkPad HDMI | | HDMI KVM | | ThinkVision 外接显示器日常使用方式Ubuntu Laptop合盖 | | KVM | | 外接显示器 外接键盘鼠标问题表现Windows 通过 KVM 切换正常Ubuntu Server 无桌面环境也正常Ubuntu Desktop 切换出去没有问题但是切回 Ubuntu 后显示器无法点亮外接键鼠无响应必须打开笔记本盖子后恢复2. 初步怀疑Wayland / GNOME / 显卡问题首先确认桌面环境echo $XDG_SESSION_TYPE输出wayland显卡lspci | grep VGA输出Intel Corporation CometLake-U GT2 [UHD Graphics]由于Ubuntu 26.04 默认 WaylandIntel i915 驱动外接显示器KVM 热插拔初步怀疑Wayland 显示恢复问题i915 DRM 热插拔问题Intel PSR 问题3. 排查 Intel PSR查看cat /sys/module/i915/parameters/enable_psr结果-1表示auto mode尝试关闭echo 0 | sudo tee /sys/module/i915/parameters/enable_psr但是KVM切换问题仍然存在。因此排除 PSR。4. 关键发现DRM connector 状态变化为了确认显示器状态后台记录grep . /sys/class/drm/*/status正常/sys/class/drm/card1-HDMI-A-2/status:connected执行 KVM 切换Ubuntu ↓ 切到Windows ↓ 切回Ubuntu发现/sys/class/drm/card1-HDMI-A-2/status:disconnected直到打开笔记本盖子/sys/class/drm/card1-HDMI-A-2/status:connected问题定位KVM 切换导致 HDMI Hotplug 状态丢失Intel i915 认为显示器已经拔出。5. 尝试 DRM 自动重新检测尝试开启drm_kms_helper.poll1修改sudo nano /etc/default/grub增加drm_kms_helper.poll1更新sudo update-grub验证cat /proc/cmdline确认参数生效drm_kms_helper.poll1但是KVM切换问题仍然复现。说明定时轮询无法解决因为 KVM 没有恢复有效 HDMI 状态。6. 尝试强制 HDMI connector 保持存在测试videoHDMI-A-2:D修改 GRUBsudo nano /etc/default/grub修改GRUB_CMDLINE_LINUX_DEFAULTquiet splash videoHDMI-A-2:D更新sudo update-grub重启。结果KVM切换Ubuntu ↓ Windows ↓ Ubuntu显示器可以重新点亮。问题解决了一半。但是出现新问题显示器分辨率降低。例如2560x1440 ↓ 1920x1080原因videoHDMI-A-2:D只告诉 DRMHDMI 一定存在但是没有真实 EDID 信息。7. 获取显示器 EDID正常连接 ThinkVision 时查看 connectorgrep . /sys/class/drm/*/status发现card1-HDMI-A-2/status:connected读取 EDIDsudo cat \ /sys/class/drm/card1-HDMI-A-2/edid \ ~/thinkvision.edid检查ls -l ~/thinkvision.edid安装工具sudo apt install edid-decode解析edid-decode ~/thinkvision.edid确认厂商型号原生分辨率刷新率8. 使用 DRM EDID Override创建目录sudo mkdir -p /lib/firmware/edid复制sudo cp ~/thinkvision.edid \ /lib/firmware/edid/thinkvision.bin修改 GRUBsudo nano /etc/default/grub最终参数GRUB_CMDLINE_LINUX_DEFAULTquiet splash \ videoHDMI-A-2:D \ drm.edid_firmwareHDMI-A-2:edid/thinkvision.bin更新sudo update-grub sudo update-initramfs -u重启。9. 最终效果测试Ubuntu | KVM切换 | Windows | KVM切回 | Ubuntu结果✅ 外接显示器正常点亮✅ ThinkVision保持原始分辨率✅ 外接键盘鼠标正常✅ 不需要打开笔记本盖子10. 原因总结整个问题链路KVM切换 | | HDMI Hotplug丢失 | | Intel i915收到disconnect | | DRM connector变成disconnected | | GNOME Wayland认为显示器不存在 | | 无法恢复显示解决方案videoHDMI-A-2:D drm.edid_firmware分别解决参数作用videoHDMI-A-2:D强制 HDMI connector 存在drm.edid_firmware提供真实显示器能力信息11. 后续建议如果使用 Linux KVM建议 KVM 支持EDID EmulatorDisplay EmulationMonitor Keep Alive企业级 KVM 通常具备该功能。普通家用 HDMI KVM 可能在 Windows 下正常但 Linux 桌面环境对 HDMI 热插拔更加敏感。总结这次问题并不是 Ubuntu 无法支持 KVM而是HDMI KVM 在切换过程中没有正确保持 EDID/Hotplug 状态而 Linux DRM/i915 对显示链路状态管理更加严格。通过 Linux 内核提供的 DRM EDID Override 机制可以在不更换硬件的情况下实现类似企业 KVM 的显示保持效果。最终 Ubuntu 26.04 Desktop Intel i915 HDMI KVM 可以稳定工作。