HDMI欺骗设备 + Ubuntu + RDP完整踩坑记录!服务器4K远程桌面

2026-04-26 12:14:02 8点赞 47收藏 5评论

最近给家里的 Intel NUC 配了台不接显示器的「无头服务器」,想通过 RDP 远程访问桌面。买了个 HDMI 欺骗设备插上去,结果远程连上去分辨率只有 820×615,糊得像 20 年前的网页。折腾了半天终于搞定 4K,把完整过程记录下来,希望对有同样需求的朋友有帮助。


什么是 HDMI 显示器欺骗设备?

HDMI 欺骗设备(Dummy Plug / Display Emulator)是一个插在显卡 HDMI 口上的小东西,用来模拟真实显示器的 EDID 信号,让操作系统以为有显示器在线。

为什么需要它?

不插显示器的 Ubuntu,GNOME 桌面会话根本不会启动,RDP 连上去只有黑屏。插了欺骗设备之后系统才会正常跑桌面,但默认分辨率非常低,需要手动配置才能跑到 4K。

HDMI欺骗设备 + Ubuntu + RDP完整踩坑记录!服务器4K远程桌面

踩坑总结(先看这里)

坑 原因 解法 分辨率只有 820×615 欺骗设备默认 EDID 分辨率低 手动用 xrandr 添加 4K 模式 xrandr 切换报 BadMatch 虚拟显存不够支撑 4K xorg.conf 设置 VideoRam 256000 找不到 HDMI-1 输出 会话是 Wayland,xrandr 无效 禁用 Wayland,切换到 X11 显示器名不是 HDMI-1 dummy 驱动下输出名为 DUMMY0 用正确的输出名 重启后恢复低分辨率 xrandr 设置不持久 写 autostart 脚本


配置环境

  • 设备:Intel NUC11

  • 系统:Ubuntu 24.04 LTS

  • 桌面:GNOME

  • 显示管理器:GDM3

  • 远程桌面:xrdp(RDP协议)

  • 目标:3840×2160 @ 60Hz(4K UHD)


第一步:禁用 Wayland,切换到 X11

这是最关键的一步,也是我踩的最大的坑。

Ubuntu GNOME 默认跑 Wayland 会话,但 xrandr 这类分辨率管理工具只在 X11 下有效。Wayland 下你写的 xorg.conf 配置也完全不会生效。

怎么确认自己是 Wayland 还是 X11?在桌面终端里执行:

echo $XDG_SESSION_TYPE

如果输出是 wayland,就需要改。注意:SSH 里执行这个命令会显示 tty,要在 RDP 桌面的终端里执行才准确。

修改 GDM3 配置,禁用 Wayland:

sudo nano /etc/gdm3/custom.conf

找到这一行,去掉前面的 #

WaylandEnable=false

保存退出(Ctrl+O → Enter → Ctrl+X)。


第二步:配置 Xorg 扩大虚拟显存

不配这个,后面切 4K 分辨率会报 BadMatch 错误。原因是虚拟显存不够大,默认根本装不下 3840×2160 的画面缓冲。

创建 xorg 配置文件:

sudo nano /etc/X11/xorg.conf.d/10-dummy.conf

写入以下内容:

Section "Device" Identifier "DummyDevice" Driver "dummy" VideoRam 256000 EndSection Section "Monitor" Identifier "DummyMonitor" HorizSync 28.0-80.0 VertRefresh 48.0-75.0 Modeline "3840x2160_60.00" 712.75 3840 4160 4576 5312 2160 2163 2168 2237 -hsync +vsync EndSection Section "Screen" Identifier "DummyScreen" Device "DummyDevice" Monitor "DummyMonitor" DefaultDepth 24 SubSection "Display" Depth 24 Modes "3840x2160_60.00" Virtual 3840 2160 EndSubSection EndSection

💡 VideoRam 256000 大约是 256MB,4K 24bit 实际只需要约 32MB,这里留了充足余量。


第三步:重启 GDM3

⚠️ 建议通过 SSH 执行这条命令,因为会立即断开当前桌面会话:

sudo systemctl restart gdm3

等 10 秒左右,再重新用 RDP 客户端连接。


第四步:确认已切换到 X11

RDP 连进桌面后,打开桌面里的终端,执行:

echo $XDG_SESSION_TYPE

看到 x11 就对了。再查一下显示器名称:

xrandr --query

我这里输出是这样的(注意显示器名是 DUMMY0,不是 HDMI-1):

Screen 0: minimum 64 x 64, current 2048 x 1152, maximum 32767 x 32767 DUMMY0 connected primary 2048x1152+0+0 0mm x 0mm 2048x1152 59.90* 1920x1080 59.96 ...


第五步:添加 4K 分辨率并应用

在桌面终端里依次执行:

# 生成并添加 4K 60Hz 模式 xrandr --newmode "3840x2160_60.00" 712.75 3840 4160 4576 5312 2160 2163 2168 2237 -hsync +vsync # 将模式绑定到虚拟显示器(注意用 DUMMY0,不是 HDMI-1) xrandr --addmode DUMMY0 "3840x2160_60.00" # 应用 4K 分辨率 xrandr --output DUMMY0 --mode "3840x2160_60.00"

验证是否生效:

xrandr --query | head -3

看到 current 3840 x 2160 就成功了 🎉


第六步:设置开机自动应用 4K

上面的 xrandr 设置重启后会失效,需要写一个自动启动脚本。

nano ~/.config/autostart/set-resolution.desktop

写入:

[Desktop Entry] Type=Application Name=Set Resolution 4K Exec=bash -c 'sleep 5 && xrandr --newmode "3840x2160_60.00" 712.75 3840 4160 4576 5312 2160 2163 2168 2237 -hsync +vsync; xrandr --addmode DUMMY0 "3840x2160_60.00"; xrandr --output DUMMY0 --mode "3840x2160_60.00"' X-GNOME-Autostart-enabled=true

💡 sleep 5 是为了等桌面会话完全启动后再执行,避免时序问题。如果还是失败可以改成 sleep 10


第七步:重启验证

sudo reboot

重启后 RDP 连入,等约 10 秒,在桌面终端确认:

xrandr --query | head -2

看到 current 3840 x 2160 即大功告成。


常见报错处理

BadMatch 错误

X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 139 (RANDR)

原因:虚拟显存不足,或 xorg.conf 没有被加载。

检查配置文件是否正确写入,并确认是通过 SSH 重启了 gdm3,不是在桌面里点重启。

找不到 HDMI-1 输出

warning: output HDMI-1 not found; ignoring

原因:dummy 驱动下虚拟显示器名称是 DUMMY0,不是 HDMI-1。先用 xrandr --query 确认实际输出名称。

xrandr 在 SSH 中无效

通过 SSH 执行 xrandr 时需要指定 DISPLAY:

DISPLAY=:0 xrandr --query


RDP 客户端设置

服务器端配好4K后,客户端也要设置分辨率:

  • Windows 远程桌面(mstsc):连接前在「显示」标签页将滑块拖到最右

  • Remmina:连接配置中将「分辨率」设为「使用客户端分辨率」或手动填 3840x2160

如果用的是 xrdp,还可以编辑配置允许高分辨率:

sudo nano /etc/xrdp/xrdp.ini

确认以下参数:

max_bpp=32 xres=3840 yres=2160


总结

整个流程最核心的两个点:

  1. 必须禁用 Wayland 切到 X11,否则 xrandr 和 xorg.conf 全部无效

  2. 必须在 xorg.conf 里设置足够大的 VideoRam,否则 4K 分辨率切换会报 BadMatch

其他的都是按部就班,照着命令来就行。希望这篇踩坑记录能帮到同样折腾无头服务器的朋友 👍


测试平台:Intel NUC11 / Ubuntu 24.04 LTS / GNOME / GDM3 / xrdp

作者提示含AI生成内容。作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
5评论

  • 精彩
  • 最新
  • 都服务器了,ssh够用了

    校验提示文案

    提交
    对头

    校验提示文案

    提交
    收起所有回复
  • 没有也照样用啊

    校验提示文案

    提交
  • 我已经从桌面版改成服务器版了,一开始也是图省事搞了个桌面版,出了几次问题了

    校验提示文案

    提交
  • 都设置dummy了,还需要HDMI欺骗器嘛?

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章

米尼克斯

不知道说什么好

关注 打赏
最新文章 热门文章
47
扫一下,分享更方便,购买更轻松