Steam Deck 双系统设置笔记

Steam Deck 终于到手了,但是 Steam OS 只能支持 Steam 商城里面有限的几个游戏。要想玩 Xbox Game Pass 里面的游戏,还需要安装 Windows 才行。

0. 准备工作

现在的游戏容量越来越大,WiFi 下载要等很长时间。推荐先准备一个 USB C 扩展器,带千兆网和两三个 USB A 接口的那种就行。

1. 保留 Steam OS 并安装 Windows 11(双系统)

虽然目前 Valve 还没有推出 Steam Deck 双系统安装器,但是依然可以用老方法实现双系统启动。思路就是,将 Steam OS 最后一个分区(游戏数据分区)的尺寸缩减,腾出空间安装 Windows。需要 Gparted Live CD,可参照视频教程

2. 安装 Windows 驱动

Valve 提供了一些必要的 Windows 驱动,但是依然少了 AMD 芯片组驱动程序,需要去 AMD 官网,下载驱动安装工具,把缺少的芯片组驱动给补上。

3. 使用 Steam Deck 的手柄

3.1 安装 Steam 客户端

目前,要使用 Steam Deck 自带手柄的最佳方案就是使用 Steam 客户端启动游戏。

Steam Deck 启动的时候,系统固件会自动把手柄映射成鼠标/键盘,具体键位如下:

  • A -> 回车
  • B -> ESC
  • 右侧触摸板 -> 移动鼠标
  • RT -> 鼠标左键
  • LT -> 鼠标右键

当启动游戏时候,Steam 客户端会在游戏顶层建立一个透明的控制层,用来重新映射 Steam Deck 手柄键位。这个控制层会随着游戏的结束而消失,手柄键位会恢复上面的键鼠模式。

但是,受 Steam 客户端机制的限制,带启动器的游戏无法正常应用手柄映射。原因就是,启动器在启动游戏之后会自行退出,然后 Steam 客户端会认为游戏已退出,关闭控制层并且结束手柄映射。

经测试,微软 Game Pass 游戏均无法通过 Steam 客户端启动的方式使用手柄。

3.2 第三方 Steam Deck 手柄驱动

那么,带启动器的游戏怎么使用 Steam Deck 手柄呢?对于这个问题,第三方开发者给出了答案:Steam Deck Windows Usermode Driver (SWICD)

这个驱动可以将 Steam Deck 手柄虚拟成 Xbox 手柄。这样就可以保证微软 Game Pass 的游戏都可以正常使用手柄了。

但是,在使用 SWICD 的时候,需要先完全退出 Steam 客户端,否则会造成驱动失灵。

经测试,官网下载的原神,微软 Game Pass 包含的 Forza Horizon 5Super Lucky's Tale 都可以通过 SWICD 完美使用 Steam Deck 手柄。

3.3 GloSC / GlosSI

在我折腾 Steam Deck 的时候,GloSC 开发者也在折腾 GlosSI。鉴于 GlosSI 还没折腾好,本文先不做记录。

4. 使用 Steam 客户端启动游戏

在 Steam 客户端选择“添加游戏” -> "添加非 Steam 游戏...",然后选择游戏启动文件。

注意:对于带启动器的游戏,需要绕过启动器,找到真正的游戏启动文件。例如,原神真正的游戏启动文件是 C:\Program Files\Genshin Impact\Genshin Impact game\GenshinImpact.exe

注意:微软 Game Pass 的启动器需要处理 Xbox 账户登录和游戏数据同步,所以无法绕过。

将游戏添加到 Steam 客户端之后,进入游戏信息页面,点击“控制器布局”,然后选择配置文件。应用配置之后,从 Steam 客户端里启动游戏即可。

注意,某些游戏(例如原神),需要管理员权限才能运行。为了保证正确建立控制层,要先以管理员权限启动 Steam 客户端,再从 Steam 客户端中启动游戏。


2023/01/09 更新:

在升级完 Steam OS 3.4 之后,双系统启动可能会失效,在启动列表中只能看到 Windows,但是没有 Steam OS。

解决方法如下:

  1. 彻底关闭 Steam Deck。
  2. 按住 Volume Up 键开机,进入 UEFI BIOS。
  3. 选择 Boot from File,然后选择文件 esp/efi/steamos/steamcl.efi
  4. 进入 Steam OS 之后,切换到桌面模式。
  5. 运行下面的命令将 Steam OS 启动项加回 BIOS 启动列表。
sudo efibootmgr -c -L "SteamOS" -l "\EFI\steamos\steamcl.efi" -d /dev/nvme0n1p1
添加新评论