首页 > 服务器 > ubuntu 利用sunshine和虚拟显示器实现副屏扩展

作者:ghostry 发布时间:2025-06-26 浏览: 6

转载注明出处: https://blog.ghostry.cn/server/1133.html

https://www.cnblogs.com/twinblade-i/p/18797195
方法来源

确认系统支持

lsmod | grep drm_kms_helper

如果输出为空,需要启用.

sudo modprobe drm_kms_helper
sudo nano /etc/modprobe.d/drm-virt.conf
options drm_kms_helper drm_fbdev_emulation=1
options drm_kms_helper fbdev_emulation=1
sudo update-initramfs -u
sudo reboot

安装虚拟显示器

查看设备接口情况,选一个没有使用的接口.比如 HDMI-A-1

for p in /sys/class/drm/*/status; do con=${p%/status}; echo -n "${con#*/card?-}: "; cat $p; done

获取一个edid文件,可用的 EDID 文件仓库

https://git.linuxtv.org/v4l-utils.git/tree/utils/edid-decode/data
https://github.com/linuxhw/EDID

对于 HDMI 接口,AOC model3277型号显示器的EDID文件中可用的分辨率、刷新频率配置选项比较全面
EDID 文件内容也可以使用 cur、wxedid 等工具自行修改,比较麻烦

将获取的 EDID 文件放置在/usr/lib/firmware/edid/目录下(如果没有的话创建)
编辑/etc/default/grub文件,在GRUB_CMDLINE_LINUX_DEFAULT=中添加drm.edid_firmware=HDMI-A-1:edid/<EDID> video=HDMI-A-1:e
其中<EDID>为上一步放置在/usr/lib/firmware/edid/目录下的 EDID 文件名(文件名没有限制,可以重命名),HDMI-A-1位置为选择的空闲接口
执行sudo update-grub更新grub配置,然后重启系统使更改生效
然后可以在显示管理界面看到有多出来的显示器,就成功了.
这里我有遇到一些问题,开始我选的dp接口,确实能虚拟出显示器,但是sunshine却识别不了,连接会503错误.后来换了hdmi1口,dp显示器怎么也亮.然后换了hdmi2k 接口.才算正常.如果遇到一个接口不行的,可以换换别的.

sunshine 配置

在 sunshine WebUI > Troubleshooting > Logs 中找到KMS Monitor List,从中获取虚拟显示器接口对应的编号,将 sunshine WebUI 中Configuration > Audio/Video > Display number 设置为对应编号
中文界面是 配置 > Audio/Video > 显示器编号
具体编号可以去sunshine的日志里看,
我实际测试的,显示并不准,不过好在显示器没几个,挨个测试就能试出来

moonlight 配置

moonlight没什么特别的,按常规的方式连上来就行.

其他问题

没声音: sunshine需要勾选声音,sunshine不能用root执行,要用当前用户.
黑屏: sunshine 配置>advanced>强制特定捕获方法,强制制定编码器,换个别的试试,正常用自动检测就行.

标签: ubuntu sunshine moonlight

上一篇: btrfs分区备份恢复
下一篇: 

添加新评论 »

*
*

欢迎评论!歡迎評論!Comments welcome!komentoj bonvenaj!댓글 오신 것을 환영합니다!
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: :cold: :cryy: :cute: :shy: :sleep: :struggle: :tea: :yahou: