Linux上利用sunshine串流和虚拟显示器实现副屏扩展

十一月 22, 2025 [网络与安全] #Git #Linux #obsidian #密码学 #桌面应用

Linux上利用sunshine串流和虚拟显示器实现副屏扩展

1. 方法

1.1 设置虚拟显示器

  1. 查看当前系统记录的显示器设备接口的连接情况,使用命令for p in /sys/class/drm/*/status; do con=${p%/status}; echo -n "${con#*/card?-}: "; cat $p; done;选取一个标记为disconnected的空闲接口(如HDMI-A-1)

  2. 按需获取一个 EDID 文件,注意选取的 EDID 要支持上一步选择的空闲端口的类型

  3. 将获取的 EDID 文件放置在/usr/lib/firmware/edid/目录下(如果没有的话创建)

  4. 编辑/etc/default/grub文件,在GRUB_CMDLINE_LINUX_DEFAULT=中添加drm.edid_firmware=HDMI-A-1:edid/<EDID> video=HDMI-A-1:e

    • 其中``为上一步放置在/usr/lib/firmware/edid/目录下的 EDID 文件名(文件名没有限制,可以重命名),HDMI-A-1位置为选择的空闲接口
  5. 执行sudo update-grub更新grub配置,然后重启系统使更改生效

  6. 重启后检查系统设置界面,如果设置中认为连接了一个新的显示器,证明虚拟显示器配置成功

    • 在 Wayland 下,如果不需要使用虚拟显示器可以直接在设置中关闭

1.2 sunshine + moonlight安装与配置

sunshine配置

  1. 在 sunshine WebUI Troubleshooting # Logs 中找到KMS Monitor List,从中获取虚拟显示器接口对应的编号,将 sunshine WebUI 中Configuration # Audio/Video # Display number 设置为对应编号
  2. 对Configuration中其他选项按需调整
  3. 保存并应用 sunshine 配置更改
  4. 如果系统使用ufw,需要开放sunshine WebUI Configuration # Network下显示的端口族以允许 moonlight client 端发起连接

moonlight配置

2. problems

2.1 虚拟显示器缩放带来的moonlight端问题

2.2 moonlight端黑屏问题

2.3 sunshine音频输出问题

3. notes

参考