DISCLAIMER: As with any guide, please make sure to read through and understand everything before following the steps in this guide. I'm not responsible for you breaking anything on your own device. This guide assumes you have a little background with the linux command line as well as the text editor nano. If not, please educate yourself
Description: It's possible to stream Vulkan and OpenGL games from Gaming Mode on your Steam Deck. This guide is heavily based on robertkirkman's guide, which is linked multiple times throughout this guide. Much thanks to them
- Install OBS Studio and OBS VkCapture Plugin via flatpak
- Add OBS Studio to Steam
- Install rwfus Read-Write OverlayFS for Steam Deck
- Add the chaotic-aur repository
- Install obs-vkcapture-git via chaotic-aur
- Add
Game Capture
source to OBS - Edit game launch options
- OBS Studio
- OBS VkCapture Plugin
- Note: You may notice that the Discover Store also has an
OBS VkCapture tools
but I haven't been able to get a game capture going that way. I was only able to get a game capture by installing obs-vkcapture via command line/AUR.
According to OBS VkCapture Github
If you use Flatpak OBS, you need to install Flatpak OBS plugin. For capturing games outside Flatpak runtime, you need native build regardless of if you are using Flatpak OBS or not.
2. Add OBS Studio to Steam (Source)
a. From the start menu, find OBS Studio, right-click, and add OBS Studio to Steam. I also recommend adding it to your favorites in Steam.
b. In order to get OBS Studio to launch in Gaming Mode: In Steam, edit the launch options for OBS Studio:
LD_PRELOAD= OBS_USE_EGL=1 QT_QPA_PLATFORM=xcb %command% run --branch=stable --arch=x86_64 --command=obs com.obsproject.Studio
3. Install rwfus Read-Write OverlayFS for Steam Deck Source
These instructions may not be up-to-date. Visit the rwfus github page for up-to-date installation instructions.
The advantage of using an OverlayFS is that any packages you install via pacman or AUR will persist even after a SteamOS update. We want to use the dev branch of rwfus because it's been updated for SteamOS 3.4.
Open up the the terminal app (by default, it's Konsole on SteamOS). Keyboard shortcut is usually CTRL+ALT+T. Enter the following commands one by one.
cd ~
wget -O rwfus.zip https://github.com/ValShaped/rwfus/releases/download/v0.4.1-beta1/rwfus-0.4.1-beta1.zip && unzip rwfus.zip -d rwfus
cd rwfus
chmod +x rwfus
These commands download the latest rwfus release. Side note: if you don't have a sudo password set up, use passwd
, then enter the rest of the commands to install rwfus.
sudo ./rwfus --install
sudo pacman-key --init
sudo pacman-key --populate
sudo pacman -Sy
First, you should educate yourself on what the Arch User Respository (AUR) is. It's a community driven repository which is meant to help users build packages from source. It's up to the user to verify the contents of the package.
The Chaotic AUR is a repository of pre-built packages. Please see this on the safety of using Chaotic AUR and AUR in general. Is chaotic-aur safe to use?
Add the chaotic repository to your list of repository mirrors. Find up-to-date instructions here
sudo pacman-key --recv-key FBA220DFC880C036 --keyserver keyserver.ubuntu.com
sudo pacman-key --lsign-key FBA220DFC880C036
sudo pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'
Now to add the chaotic-aur mirror to the repository list. We do this by appending some text to the end of the /etc/pacman.conf file. You can do this by editing the file with nano or vi with root access.
sudo nano /etc/pacman.conf
[chaotic-aur]
Include = /etc/pacman.d/chaotic-mirrorlist
Finally, refresh the repository list
sudo pacman -Sy
sudo pacman -S obs-studio chaotic-aur/obs-vkcapture-git
After confirming, you should have obs-vkcapture installed. You can make sure you have it installed by typing
obs-vkcapture
And you should see something like
WARNING: Please use obs-gamecapture instead.
ERROR: No program supplied
Usage: obs-gamecapture <program>
- You can add a
Game Capture
source within OBS. Default settings are fine. - I suggest right-clicking the source and selecting
Transform > Fit to Screen
so it fits to the canvas no matter what resolution you're playing at.
Once you have obs-vkcapture installed, edit a game's launch options with the line below. The Game Capture
source will capture whatever game you're running with these launch options:
obs-gamecapture %command%
- Press the Steam button. Go to Library. Press R1 until you get to
NON-STEAM
. Launch OBS Studio (you can also find it in your Favorites if you favorited it earlier in the guide) - Press the Steam button. Go to Library. Launch your desired game
- As long as the game you choose supports OpenGL or Vulkan, OBS Studio should be able to capture that game.
- Have fun streaming on the go!
Note: Even if the game is OpenGL or Vulkan, there's no guarantee that OBS will be able to capture the game. Your mileage may vary.
- If you don't want to pull from chaotic AUR all the time, you can remove the repository from pacman.conf by commenting out the lines with # and then refresh the repository list:
#[chaotic-aur]
#Include = /etc/pacman.d/chaotic-mirrorlist
- You can use Droidcam OBS plugin to use your smartphone as a webcam source in OBS. More info here
- Another possible smartphone-as-a-camera method is VDO Ninja
- If you want to isolate game audio, you can use Helvum (found in Discover Store) and a
Jack audio source
within OBS to isolate the game sounds - In case you want to stream over to Discord or something, you can enable Virtual Camera in OBS
Install OBS VirtualCam (Source)
sudo pacman -S linux-neptune-headers libappindicator-gtk3
sudo pacman -S v4l2loopback-dkms v4l2loopback-utils
If you need any support, feel free to post open a support post in the help channel on the Steam Deck discord and tag @rondhi#1234
OBS recently updated to version 30.2, which seems to have broken both the GStreamer and Vulkan/game capture plugins completely at the moment, so you'll need to install an older version instead, I think one of the previous comments has a command for that.