很多玩家热衷于通过Windows PC安装Sunshine,将Steam Deck作为串流客户端来玩PC游戏。可是,我却刚好反过来做了一件不一样的事情:我将Sunshine安装在Steam Deck上,然后通过iPad进行串流。这种逆向的方式,恰好解决了我在出门时对游戏设备的需求。
我将Steam Deck视为我的Galgame仓库,里面存储着大量二次元游戏,尤其是在日常使用中,它充当了我随时随地获取游戏的“移动硬盘”。
为什么我要用Steam Deck作为Galgame仓库?主要有以下几点原因:
- 许多未在Steam发售的游戏,存档无法同步,但通过Steam Deck,能方便地管理和存储这些游戏。
- Steam Deck非常便携,自带电池,让我可以随时随地玩游戏。
- 直接使用SteamOS,无需Windows,而且有多年玩鸡经验,对Linux系统比较熟悉,使用起来毫无问题。
- Galgame这类游戏对硬件要求不高,Steam Deck完全能够胜任。
但有一个问题:长时间玩这些游戏,尤其是想要更舒适的体验时,毕竟还是想用大屏幕,或者干脆用手机方便地玩。
因此,我的目标很简单——在Steam Deck上通过Sunshine进行游戏存储和管理,但在需要更大屏幕或者躺着玩的时候,利用Sunshine作为串流源,将游戏推送到iPad、手机,甚至其他设备上。这样的操作不仅让我在家中有更舒适的游戏体验,同时也能轻松带着Steam Deck出门,随时切换到我随身携带的设备,享受流畅的Galgame体验。
在这篇文章中,我将分享如何实现这一反向串流的配置。
开启 SSH
设置默认用户 deck 的密码
- 切换到桌面模式并打开 Konsole 终端。
- 设置当前用户密码:
默认情况下,deck
用户没有密码,需要手动设置。执行以下命令:
passwd
输入并确认新密码后,deck
用户的密码就设置好了。
设置 root 密码
- 设置 root 密码(可选):
如果你还想为root
用户设置密码,执行:
passwd root
输入并确认新密码后,root
用户的密码就设置好了。
开启 SSH
- 开启 SSH 服务:
执行以下命令启动并设置 SSH 服务开机启动:
systemctl enable sshd
systemctl start sshd
使用以下命令查看 SSH 服务的状态,确保它已经成功启动:
systemctl status sshd
如果显示 Active: running
,则表示 SSH 服务已成功启动。
解锁 SteamDeck
获取磁盘完整读写权限
Steam Deck 默认启用了只读模式,为了获得磁盘的完整读写权限,我们需要禁用该模式。执行以下命令:
sudo steamos-readonly disable
这会关闭只读模式,使你能够对磁盘进行完整的读写操作。
刷新包管理器并初始化密钥
接下来,为了确保系统能够正常更新并安装软件包,我们需要刷新包管理器并初始化相关的密钥。
- 刷新包数据库:
sudo pacman -Ssy
- 初始化 pacman 密钥环:
sudo pacman-key --init
- 使用默认的 Arch Linux 密钥填充 pacman 密钥环:
sudo pacman-key --populate archlinux
这三个步骤完成后,系统的包管理器将接受新包的更新和安装。
安装 SunShine
Steam Deck 有两个主要模式:大屏游戏模式
和桌面模式
。如果你想要在这两种模式下都进行串流,你需要分别安装两个不同的应用:
- 使用
flatpak
安装一个SunShine来串流桌面模式下的画面和声音。 - 使用
pacman
包管理器安装另一个SunShine来串流游戏模式和桌面模式下的画面和声音。
这两种模式的串流应用安装方式之所以不同,是因为 Steam Deck 的桌面模式和游戏模式在系统资源的访问和图形处理上有很大的区别。具体来说:
flatpak
安装的应用:由于flatpak
是基于沙盒技术,它只能在桌面模式下正常工作,无法访问游戏模式下的图形和音频资源。这是因为游戏模式使用 Vulkan 或 OpenGL 进行图形渲染,并对资源访问有更多的限制。pacman
安装的应用:通过pacman
安装的应用直接运行在主系统上,能够访问 Steam Deck 的所有系统资源,包括游戏模式下的图形和音频。因此,它可以在游戏模式和桌面模式下都顺利进行串流。
虽然通过 pacman
安装的应用能够很好地串流游戏模式和桌面模式下的内容,但在串流桌面模式时,它会出现一个问题:画面会被竖直显示,体验非常不友好,像下面这样:
因此,为了避免这个问题,我们选择通过 flatpak
来串流桌面模式,这样可以确保画面正确显示,不会出现竖屏的情况。
flatpak
安装 SunShine
首先切换到桌面模式,然后打开 Discover 软件管理中心,搜索sunshine安装即可。
pacman
包管理器安装 SunShine
安装 Sunshine 并配置权限
1.连接 SSH 后,切换到 root
用户
首先,连接到 SSH 后,切换到 root
用户:
sudo -i
2.下载并安装 Sunshine
在终端中运行以下命令来下载并安装 Sunshine:
wget https://github.com/LizardByte/Sunshine/releases/latest/download/sunshine.pkg.tar.zst
pacman -U --noconfirm sunshine.pkg.tar.zst
3.卸载 Sunshine(如需卸载)
如果需要卸载 Sunshine,可以执行以下命令:
pacman -R sunshine
4.配置 uinput
权限
Sunshine 需要访问 uinput
来创建鼠标和手柄事件。运行以下命令创建并加载 udev
规则:
echo 'KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess"' | \
sudo tee /etc/udev/rules.d/60-sunshine.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo modprobe uinput
5.配置 KMS 捕获权限
如果你需要启用 KMS 捕获权限,运行以下命令:
sudo setcap cap_sys_admin+p $(readlink -f $(which sunshine))
如果你只使用 Xorg/X11,可以禁用该权限:
sudo setcap -r $(readlink -f $(which sunshine))
6.启动和关闭
在 大屏游戏模式 下,PulseAudio 音频服务器是以 deck 用户身份运行的。因此,如果想要捕获声音并使用 Sunshine 进行串流,需要确保 Sunshine 以 deck 用户身份启动。
进入/home/deck/.config/systemd/user/
目录,创建sunshine.service
文件
nano /home/deck/.config/systemd/user/sunshine.service
写入如下配置:
[Unit]
Description=Sunshine self-hosted game stream host for Moonlight.
StartLimitIntervalSec=500
StartLimitBurst=5
[Service]
ExecStart=/usr/bin/sunshine
Restart=on-failure
RestartSec=5s
#Flatpak Only
#ExecStop=flatpak kill dev.lizardbyte.sunshine
[Install]
WantedBy=graphical-session.target
启动:systemctl --user start sunshine
关闭:systemctl --user stop sunshine
开机自动启动:systemctl --user enable sunshine
使用
Sunshine 默认运行在 47990 端口。如果你切换到桌面模式时使用 Sunshine,请记得先关闭另一个正在运行的 Sunshine 实例,以避免端口冲突。
左边是游戏模式,右边是桌面模式
可能遇到的问题
- 在大屏游戏模式下,鼠标活动时颜色会出现加深的现象,静止时色彩则恢复正常。这可能与 Steam Deck LCD 版本的默认色彩管理有关,具体原因还不明确,因为未在 OLED 版本上进行过测试和验证。
- 使用
flatpak
安装的 Sunshine,当你右键点击任务栏的小图标并手动重启时,有时会导致程序卡死。这时需要强制重启系统,目前未找到具体原因。如果遇到此问题,可以考虑暂时不使用手动重启功能,或者换用其他安装方式。 Failed to connect to bus: No medium found
: 表示当前用户的 D-Bus 会话没有正确启动。通常情况下,D-Bus 会话会在用户登录时自动启动,如果你在通过 SSH 或其他方式远程登录,可能没有设置正确的环境变量来连接到 D-Bus 会话。解决方法很简单, 退出当前的 SSH 会话,然后以你想用的身份重新登录,这样 D-Bus 会话就会自动启动,问题也就解决了。
其他
其实,使用 Steam Deck 玩 Galgame 并不像想象中那么麻烦。你可以参考这篇大佬的详细教程:Bilibili 文章链接,其中对如何在 Steam Deck 上体验 Galgame做了详细的介绍。