适用环境:Ubuntu 26.04 LTS / Wayland / AMD 核显(Radeon 780M, amdgpu 驱动)
结论:软件方案完全可以实现虚拟显示器,不需要买 HDMI Dummy Plug 硬件
一、目标
无物理显示器的机器上,让系统(GNOME/mutter)认为"有显示器",从而:
- 远程工具(rustdesk 等)能抓到有内容的画面
二、最终成功方案(一句话)
真实显示器的 EDID 文件 + 内核参数 drm.edid_firmware + video=<接口>:e 强制启用
# /etc/default/grub 中 GRUB_CMDLINE_LINUX_DEFAULT
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash \
drm.edid_firmware=HDMI-A-1:edid/dp-edid.bin \
video=HDMI-A-1:e"
两个参数缺一不可:
drm.edid_firmware=<接口>:edid/<文件>:给接口加载 EDID(让它"知道"有显示器)video=<接口>:e:强制启用该接口(即使物理未连接)——之前失败就是漏了这个!
三、完整操作步骤
# 先插一个真实物理显示器,一会用完就可以拨了,我这里插的是LG的USB显示器
for p in /sys/class/drm/*/status; do echo "${p#*/card?-}: $(cat $p)"; done
# 输出示例:
DP-1/status: disconnected
DP-2/status: connected #真实物理显示器
DP-3/status: disconnected
DP-4/status: disconnected
DP-5/status: disconnected
DP-6/status: disconnected
DP-7/status: disconnected
DP-8/status: disconnected
HDMI-A-1/status: disconnected
Writeback-2/status: unknown
# 复制物理显示器固件
sudo cp /sys/class/drm/*-DP-2/edid /lib/firmware/edid/dp-edid.bin
# GRUB_CMDLINE_LINUX_DEFAULT 加参数
sudo nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash drm.edid_firmware=HDMI-A-1:edid/dp-edid.bin video=HDMI-A-1:e"
sudo update-grub
sudo reboot
四. 验证
# 接口变成 connected
cat /sys/class/drm/card1-HDMI-A-1/status # → connected
# mutter 认到显示器(在 wl 用户会话下)
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus \
gdbus call --session --dest org.gnome.Mutter.DisplayConfig \
--object-path /org/gnome/Mutter/DisplayConfig \
--method org.gnome.Mutter.DisplayConfig.GetCurrentState
# → 能看到 HDMI-1, 2560x1600@59.97, is-current + is-preferred