Linux纯软件Sunshine与Moonlight极低延迟安卓副屏幕解决方案
发布本文的原因是,网上其他类似的配置方法都具有一定的局限性,比如需要显卡欺骗器、或者极其复杂需要其他开源软件,而本方案直接快捷,希望能直接帮助到大家(可能是因为自己比较懒惰🧐)。
本文将介绍如何通过 Sunshine + Moonlight 在 Linux 下将安卓平板设置为一块极低延迟的扩展屏幕。基于我个人的实际配置,以下是详细步骤和优化方案。
硬件环境
以下是我的设备配置(仅供参考):
OS: Arch Linux x86_64
Host: ThinkBook 16 G4+ ARA
Kernel: Linux 6.12.6-zen1-1-zen
WM: bspwm (X11)
CPU: AMD Ryzen 7 6800H
GPU: AMD Radeon 680M (Integrated)
Display (Internal): 2560x1600 @ 120 Hz
Display (External-1): 3840x2160 @ 50 Hz
Display (External-2): 2880x1800 @ 144 Hz (Android tablet as second screen)
第一步:安装 Sunshine
在电脑上安装 Sunshine
在 Arch Linux 下可以直接安装 Sunshine:
yay -S sunshine
安装完成后,启动 Sunshine:
systemctl start sunshine
打开浏览器访问 https://localhost:47990/ 进入 Sunshine 的管理页面,首次使用需要设置登录密码。
在 Applications 页面配置 do command
和 undo command
,如下所示:
-
do command 和 undo command:
xrandr --output DisplayPort-1 --mode 2880x1800_144.00 --rate 144.00
以上命令将在后续部分详细介绍。
第二步:平板安装 Moonlight
在安卓平板上,通过 Google Play 或其他渠道安装 Moonlight。安装完成后,可以直接在设置中调整分辨率和刷新率,以达到最佳显示效果。
第三步:Linux 配置屏幕
在 Linux 中,我们通过 xrandr
工具来管理显示器。
1. 查看当前显示器信息
执行以下命令查看所有连接的显示器及分辨率信息:
xrandr
我的设备输出。
Screen 0: minimum 320 x 200, current 9280 x 2160, maximum 16384 x 16384
eDP connected primary 2560x1600+0+0 (normal left inverted right x axis y axis) 344mm x 215mm
2560x1600 120.02*+ 60.03
HDMI-A-0 connected 3840x2160+2560+0 (normal left inverted right x axis y axis) 600mm x 340mm
3840x2160 60.00 + 50.00
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
DisplayPort-1 disconnected 2880x1800+6400+41 (normal left inverted right x axis y axis) 0mm x 0mm
2880x1800_144.00 95.03*
DisplayPort-2 disconnected (normal left inverted right x axis y axis)
DisplayPort-3 disconnected (normal left inverted right x axis y axis)
DisplayPort-4 disconnected (normal left inverted right x axis y axis)
DisplayPort-5 disconnected (normal left inverted right x axis y axis)
DisplayPort-6 disconnected (normal left inverted right x axis y axis)
通过 xrandr
确定平板所使用的 DisplayPort-1 接口。平板的分辨率为 2880x1800,支持 144Hz。
2. 添加新的分辨率模式
运行以下命令为平板显示器添加自定义分辨率模式:
cvt 2880 1800 144
输出类似以下内容:
# 2880x1800 144.00 Hz (CVT 2.60M9) hsync: 188.47 kHz; pclk: 711.00 MHz
Modeline "2880x1800_144.00" 711.00 2880 3128 3448 4016 1800 1803 1811 1863 -hsync +vsync
然后执行以下命令:
xrandr --newmode "2880x1800_144.00" 711.00 2880 3128 3448 4016 1800 1803 1811 1863 -hsync +vsync
xrandr --addmode DisplayPort-1 2880x1800_144.00
配置完成后,可以通过 xrandr
启用该模式:
xrandr --output DisplayPort-1 --mode 2880x1800_144.00 --rate 144.00
3. 配置 Sunshine 的命令
将上述 xrandr
命令填入 Sunshine 的 do command 和 undo command 中:
-
do command:
xrandr --output DisplayPort-1 --mode 2880x1800_144.00 --rate 144.00
-
undo command:
xrandr --output DisplayPort-1 --off
4. 桌面管理器重启 (可选)
如果像我一样使用 bspwm 桌面管理器,可以通过以下命令快速重启管理器,刷新屏幕布局:
bspc wm -r
第四步:使用 ARandR 快速调整屏幕位置
ARandR 是一个图形化工具,可以方便地调整屏幕布局。
安装 ARandR
在 Arch Linux 下安装 ARandR:
sudo pacman -S arandr
打开 ARandR 后,可以通过拖拽的方式调整屏幕的位置和排列。例如,将平板拖动到主显示器的右侧或其他位置。
点击右上角保存按钮:
保存到相应位置,例如 ~/.screenlayout/myscreen.sh
:
将生成的脚本添加到系统启动项中,以便每次启动自动应用。
我的屏幕启动脚本
以下是我的屏幕启动脚本内容:
cvt 2880 1800 144
xrandr --newmode "2880x1800_144.00" 711.00 2880 3128 3448 4016 1800 1803 1811 1863 -hsync +vsync
xrandr --addmode DisplayPort-1 2880x1800_144.00
sh ~/.screenlayout/myscreen.sh
第五步:平板与电脑连接
完成上述配置后,打开 Moonlight,搜索 Sunshine 提供的设备(也就是你的电脑)。按照提示输入 PIN 码完成配对。
连接成功后,平板即可作为一块独立的扩展屏幕使用,分辨率、刷新率根据你的设置进行应用。
连接后的效果如下图所示:
总结
通过 Sunshine 和 Moonlight,结合 xrandr 和 ARandR 工具,我们就可以直接在 Linux 下实现一套极低延迟的安卓平板副屏方案。这种方案不仅延迟极低,且分辨率和刷新率完全可控,非常适合对流畅度和画质要求较高的用户。
[/md]