P106-100 Cloud Gamming on Linux
在 headless 的環境下用 P106-100 架出個人 Linux cloud gaming 平台
- 想法:透過 Steam in-home streaming + VPN 在 P106 上 gaming
- NVIDIA 的 Linux OpenGL library 貌似沒有刻意封鎖或 debuff P106
- 需求:P106-100 + 任何有 NVENC 的卡
- P106 沒有 NVENC
- Kepler 的 NVENC 即可
- Steam 目前(此文編寫時)還不支援 NVENC 以外的硬編
- VA-API 他們目前只有拿來解碼
- 沒有的話軟編很吃 CPU
首先當然是裝好 NVIDIA driver, Steam, Xorg, pulseaudio, 另外還會用到 x11vnc, xrandr
注意 NVIDIA driver 要有裝 32-bit 的部份(Steam 還在 32-bit)
架好一個 VPN 或 tunnel, 推薦用 WireGuard
如果是在 lxc 內, 記得把 P106 和 NVENC 卡的 cgroup 限制解除然後弄出 device node
設定 xorg.conf 類似如下
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:66:0:0"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 28.0 - 33.0
VertRefresh 43.0 - 72.0
Option "DPMS"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "AllowEmptyInitialConfiguration" "True"
Option "Coolbits" "31"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
EndSection
AllowEmptyInitialConfiguration 是用來允許沒有 output 的設定
Coolbits 只是順便解鎖一些設定例如超頻
BusID 是十進位的, lspci 是十六進位, 找到 P106 的 id 後記得轉換
開 Xorg 和 pulseaudio
用 xrandr 查看目前整個 screen 的大小, 用 –fb 改到目標大小
開 x11vnc + Steam + 一個 wm
開 Steam 時要加個環境變數 CUDA_VISIBLE_DEVICE 值是在 nvidia-smi 中 NVENC 卡的 index
NVENC 某些地方要經過 libcuda, 設定 CUDA_VISIBLE_DEVICE 可以限制 CUDA 可用的卡, 進而強制用特定卡做 NVENC (Steam 只會試第一張)
libcuda 現在在 NVIDIA driver 裡面就有, 不用額外裝整個 CUDA
這些可以寫進 xinitrc 之類的之後比較方便(x11vnc 可能之後不太需要)
用 vnc 進去登入設定 Steam, 幫遊戲寫個 .desktop 加進 Steam (如果不用加參數可以直接加 binary)
注意如果 .desktop 有變要在 Steam 裡重新加一次才會生效
可以順便用個 glxinfo 確認 OpenGL 是透過 NVIDIA 的 library 正常運作
設定好後 x11vnc 可以關掉避免影響效能
client 的部份記得在設定開 Display performance information 確認一下 encoder 是 NVENC
client 的硬解是用 libva1 的而非 libva2, 裝 backend driver 時不要裝錯
libva 是使用 DRI2, 而 XWayland 只支援 DRI3, Steam 有用 VAPutSurface 所以也不能直接改用 drm device, 所以如果要硬解基本上需要傳統 Xorg (libva 和 intel backend 有 DRI3 support pull request, 但我套用他在 Steam 會吃 BadWindow)
Comments on Matrix #comments_xdavidwu.link_/linux/cloud-gaming/:xdavidwu.link