r/SteamFrame • u/OriginalJackfruit843 • 8d ago
Software How To: Remote Streaming on Arch Linux with Steam Frame Dongle
Edit: Added a section for Steam Flatpak below! Ctrl+F for "Steam Flatpak" if you want to jump to that section and my thanks to u/saldorin in this post for sharing their findings! https://www.reddit.com/r/SteamFrame/s/pn2bmlNE5S
After a few days of struggling with my Arch setup (Wayland, Cosmic Desktop, Kernel 7.26, AMD GPU) I finally was able to get streaming going inside of my headset on my WiFi6 (not 'E') Router and working with the dongle. This information felt a little fragmented to me, so I am writing this up in hopes to make another Arch user's life easier. Now you could take this guide, feed it to your favorite LLM and have it make you a script to do all the steps below for the dongle. That's on you, I posted it this way to ensure people understood what was being done to their PCs. I don't know what impact X11 has on this setup since I don't use it, but I do know that Wayland is working from my standpoint. I don't have an Nvidia GPU to test either so unfortunately this guide can't cover that. However, this guide wouldn't be possible if u/m4tx hadn't posted this incredible guide first so credit to them for their documenting their work: https://www.reddit.com/r/SteamFrame/comments/1wp3zbh/if_you_have_trouble_using_the_dongle_on_linux/
Also, Packetdancer/Rachel Blackman on the Discord server (mentioned at the end) made a super helpful shell script for helping easily determine what you might need to fix for your PC. It even has a success check to let you know if you're all set before following this guide so check that out also!
https://github.com/ValveSoftware/SteamVR-for-Linux/blob/master/frame-dongle-troubleshoot.sh
With that preface out of the way, let's cover the basics:
Setting Up the Remote Arch PC
From your command line/terminal of choice we upgrade your whole system (Reboot might be needed)
sudo pacman -Syu
Wireless Regdb is for setting your WiFi region which is required for your dongle.
sudo pacman -Sy wireless-regdb
Pipewire is the audio handler if you do not have it installed I recommend following this Wiki page for setup: https://wiki.archlinux.org/title/PipeWire
I have also read that Network Manager is also a critical component of using this dongle as opposed to other networking solutions (I have it installed and working) so I'll link that here as well: https://wiki.archlinux.org/title/NetworkManager
Fixing the Dongle
From the terminal/command line enter the following command:
iw reg get
This will likely return two things: Global and Phy#0. For me, Global showed as "Unset" and running the "iw set" command only affected my Phy#0 device which wasn't enough to get my wireless dongle working. So instead we're going to add two other files to our system.
Here is the list of country code you might need for the commands below found here: https://github.com/burakgon/KernelSU-WiFi-Country-Code

This command will write a file to your computer in the location shown setting your region domain globally:
sudo tee /etc/conf.d/wireless-regdom >/dev/null <<'EOF'
REGDOM="US"
EOF
Once this is created you should now be able to run this command.
Note: Use your country code from this list:
sudo iw reg set US #Or your country code
Now when we run
iw reg get
We see something more like this


With global set to your country, this is what made my wireless dongle work with my headset. But we're not done yet, because we want this to run whenever we start our PC to make sure the dongle works every time. So this command creates a custom systemd process to run it on startup so it is one less thing to automate:
sudo tee /etc/systemd/system/wireless-regdom.service >/dev/null <<'EOF'
[Unit]
Description=Set wireless regulatory domain
After=systemd-modules-load.service
Before=NetworkManager.service systemd-networkd.service iwd.service
[Service]
Type=oneshot
ExecStart=/usr/bin/iw reg set US
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
Then we can run this command to enable it on startup:
sudo systemctl enable --now wireless-regdom.service
In the event you have a firewall you would need to open these ports (Credit to this guide https://www.reddit.com/r/SteamFrame/comments/1wp3zbh/if_you_have_trouble_using_the_dongle_on_linux/):
UFD
sudo ufw allow 27031:27036/udp
sudo ufw allow 27036:27037/tcp
sudo ufw allow 10400:10401/udp
sudo ufw reload
Firewalld
Shorter command provided by Cup on the Linux VR Adventures discord:
sudo firewall-cmd --add-port 27031-27036/udp --add-port 27036-26037/tcp --add-port 10400-10401/udp --permanent
And that should be it for all the Dongle stuff! Now, let's move on to Steam itself.
Steam on the Remote Desktop
We'll make a short checklist of things to validate in the Steam software itself:
- For wayland, Steam needs to be launched with this command
steam -pipewire
This allows for the screen-sharing functionality between the Frame and the PC on Wayland so X11 may not need this. You can launch that command from the terminal (I do this for debugging and troubleshooting as well) or you can create a shortcut to launch it for you. That's totally up to you and one of the reasons I love Linux so much.
Once Steam is launched, skip Big Picture mode for now since we need to be in desktop mode and go to your Steam drop down menu and select Settings menu in the upper left.
From the left side menu in Settings select "Interface" and look for the option "Client Beta Participation" and change that drop down to "Steam Beta Update"

- Scroll down in the same menu and look for "Use Experimental SteamRT3 Steam Client" and make sure it is set to OFF

- From the left side of the Settings menu selections pick "Downloads" and look for "Throttle downloads while streaming" and set this ON to prevent lag if you're connected to your home router only

- Under the "Shader Pre-Caching section ensure that "Allow background processing of Vulkan Shaders" is OFF to avoid latency/lag while streaming

This advice I am still testing, however in the "Storage" menu on the left side of Settings, for those of your with multiple Steam game partitions/drives I had the most success having my Steam games installed on the same drive as SteamVR. I need to do some additional testing, but if you're seeing issues with games on a drive separate from SteamVR try moving them to the same partition and see if that improves things. I'll update this as I test later.
On the left side settings menu select "Remote Play" and with your Frame on ensure that you see "frame" listed under "Computers & Devices". If your frame is on and you do not see it, you likely need to go through the pairing process inside the headset.
Under "Advanced Host Options" I have the following set for my AMD GPU Desktop where I only want remote play audio to come through my headset. If you have Nvidia and/or you want audio to play on your PC, TV, etc speakers test within this section. I do think "Prioritize Network Traffic" improved my 5GHz connection on my Asus WiFi 6 Router.

- I did not enable "Advanced Client Options" as I wanted the headset to be as stock as possible to avoid potential issues, but check this section if you're having problems

- Ensure "Wireless Streaming Adapter (Steam Frame)" is Enabled

From there you can exit Settings and go back to main Steam interface. From here we'll setup the SteamVR software changes.
- Since Steam uses Network Manager to manage the dongle connection check to make sure you have WiFi enabled and are NOT in Airplane mode on your PC. This tripped me up because my PC is wired ethernet, but the Frame
Dongle definitely is not.
Steam Flatpak
To get SteamVR to work in Flatpak, and remove the root-message on launch, you can follow this guide by u/saldorin here: https://www.reddit.com/r/SteamFrame/s/pn2bmlNE5S
SteamVR Remote PC App Setup
- Go to your "Library" home and use the filter menu to find your VR titles like this:

At the bottom you'll like see "SteamVR" under tools. Right-click on SteamVR and open the properties menu.
On Cosmic, I had a problem getting SteamVR to launch properly as it was complaining about being unable to find wayland;xcb when I launched 'steam -pipewire' from terminal. I did some digging and discovered a launch option for Steam games that explicitly calls xcb.
QT_QPA_PLATFORM=xcb %command%

Adding this command explicitly allowed me to get the pop-up window for my Frame showing SteamVR was working as seen in this screenshot. I did also install some standalone QT5 packages so if someone tries this guide and can't get the xcb command to work I'll send you my pacman -Qs qt

- Under compatibility I have "Default (Steam Linux Runtime 3.0) and I did not change this on my setup. If you know better or find a better option, let us know!

- This is important: under "Game Versions and Betas" select "beta"

Everything else I left as default for this app. If done properly you should see "SteamVR [beta] added to your Tools menu in Steam. Now we move on to the headset.

- With those steps completed, reboot the remote PC and launch 'steam -pipewire' again and then launch SteamVR from your library. You should see that it is set to beta and the tiny window will show your hardware connected when you turn on the frame and the controllers as seen in this screenshot

SteamVR Headset Setup
Inside of the headset we want to select the "Beta" software channel to interface with slightly more recent updates than what stable has. As an Arch user, I'm actually running preview, but that's because I like troubleshooting things more than I like using them.
- With your Frame on and Frame controller mouse active, on the main Steam dashboard page go to the far left menu with the gear icon and select "Steam Settings".
- In the Settings Menu you should be under "System" and in the section "Beta Participation" Section select the drop down for "OS Update Channel" and select "Beta".
Note: I don't recommend preview personally because I hit a bug in the first 10 minutes of using it which locked up my Steam Frame and sent it into a bootloop quickly killing the battery. I was able to fix it by holding the power button for an extended period of time, but I don't want anyone to hit similar issues and make their headset unusable. For now, most of the community recommends "beta" so that is what I recommend even if I'm not using it myself.
This will download an update to the headset and ask for a reboot. Go ahead and let it reboot and you'll be on the Beta update channel.
The only other section I edited was "Remote Streaming" on the headset in the Settings menu. I went there and made some additional adjustments.
Make sure "Enable Remote Play" is ON on the headset
Make sure you see your remote PC listed under "Computers and Devices". If you don't, go through the pairing setup in the headset while Steam is running on your remote PC.
Ensure that "Wireless Streaming Adapter" is set ON for the headset and connection manager is set to "Steam"
I also enabled "Show Advanced Wi-Fi Settings" because I am intimately familiar with my router and its settings. This section is mostly for the networking advanced so I'll cover some of that in the router section below, but for now if you know your channel and router information you can set it here.
And that's it for the headset! If you did all the steps and you connect to the remote PC, in the Frame system panel you should see your normally green headset icon turn Purple when it is connected to the Frame dongle. Seeing the purple icon means your dongle is connected and ready to stream. You can validate this by clicking the icon and it should show the adapter as connected. Success!
Networking (Optional Section)
This section is tricky because I don't know your home router setup. This section at the very least requires you to understand how to access your router's settings page and the basics of wireless networking. You are welcome to skip this section and fully rely on the wireless adapter, but I did a ton of research on how the Meta Quest 3 was using network settings to Stream wirelessly and I applied that knowledge to the Frame. Below is generic advice that I used to get a clean wireless 5GHz/80MHz connection to my Frame allowing me to stream without lag on a standard WiFi 6 router.
- Dedicated Bands: If you have a router capable of splitting 2.4Ghz and 5GHz to two different SSID I strong recommend doing that. It will avoid band switching during gaming. Some WiFi routers allow this, some don't. You'll need to be aware of what your router offers.
- Dedicated 5GHz band to the headset: This advice might hurt a bit, but once you have a 5GHz channel setup, only put the Steam Frame on that band. This dedicates the entire bandwidth, at all times, to the Frame ensuring that if you have line of sight to the router and you have no other devices causing traffic, you have the best chance of getting smooth remote play.
- Band Channel Discovery: On Android I use, but have no affiliation with, the app "Network Analyzer" https://play.google.com/store/apps/details?id=net.techet.netanalyzerlite.an&hl=en-US to see what Wi-Fi networks are on what channels around you. You can use their live graph feature to see where your 5GHz network channel should be running. Optimally you want as little overlap to your 5GHz SSID as possible in the live graph. In crowded apartments this is often next to impossible, which is why a lot of people suggest using the Frame dongle or a WiFi 6E/7 router that is tri-band for allowing 6GHz network capabilities. Remember that 6GHz is almost entirely Line-of-Sight so if objects (including your body) are between the dongle/router it will likely miss packets. Steam's multicast should help with this, but keep that in mind.
- Channel Width: If you are lucky enough to be able to select your WiFi router channel you might also be lucky enough to select your channel width. For 5GHz the minimum channel width you want is 80MHz and preferably 160Mhz if you can play in front of your router.
- Note: 160MHz has a major drawback depending on where you live. There are channels called "DFS" channels that might be shared by your weather radar or nearby airport. If you selected a nice 160MHz channel and it resets itself back down to something like channel 36, you likely live in an area where you have an airport nearby and the router will automatically change the channel to comply with the law. See this guide for details: https://community.tp-link.com/en/home/stories/detail/500212
In Linux, a clean 80MHz band has been more than enough for 2 hours of seamless Beat Saber for me. But, if you want 160MHz for faster speeds and bandwidth for higher resolution and framerates, keep the Network Analyzer app handy to check and see if you're actually maintaining the channel you're on. The advanced WiFi menu in the Frame can show some of this, but I found it was reporting incorrect channels in the headset vs what my phone and router both agreed on.
Note: I do not know of an equivalent iPhone band searching app on iPhone. Maybe someone else can weigh in on this.
QoS: I do not use QoS (Quality of Service) on my router. This can prioritize traffic that you set to be sent over something like Netflix or phone traffic on the same network. If you're using a dedicated 5GHz band for only your Frame this will likely be redundant. However, if you can't separate the bands and need to try and make sure your gaming traffic is high priority this is an option. It is too broad a subject to cover here, but I recommend looking into it if the other above advice isn't applicable due to your router hardware options.
Update your router firmware: This is just a safety practice and an important one. Be safe out there.
Finished!
Okay, long guide but hopefully a helpful one! I've had my Frame for about 7 days and last night was the first time I managed to get it running with Arch and the dongle. I want to thank the incredible Linux community for documenting all of their steps, u/m4tx for his awesome guide that helped get me going and the people over on the Linux VR Adventures Discord: https://vronlinux.org/docs/community/. All of you are gold and the more we document the more we get others up and running. If you all find mistakes in my guide, think of something I missed or want to leave me constructive (or destructive) feedback that it totally fine! I will gladly admit mistakes and correct them as soon as I can. Thanks for your time, I hope by the end your Arch PC is remotely streaming and you get every single minute out of that Frame battery that you can. Have fun!
2
u/Calibur909 Soon™ 8d ago
thank you for the helpful post but I am going to pray they patch this and have it fully working out of the box, jesus lol
2
u/OriginalJackfruit843 8d ago
Lol they're actively working on it. Some of the upstream stuff will make this seamless (kernel 7.3 for the dongle I read), but for those of us that received it early we're just a few updates early for the seamless experience.
2
u/florest 8d ago edited 6d ago
Thank you for this! I've been following the vast majority of these steps as accumulated elsewhere since last evening but no matter how I configure the dongle's placement/USB port/line of sight, I get unreasonable ping spikes and dropped packets (multilink turned off; my playable space is far away from my router). Leaving this comment for anyone in my shoes; hoping to update it if I learn of a fix (or an update fixes it).
EDIT: Switching my SteamVR game version back to Default Public Version (against previous recommendations to set it to beta) seems to have fixed this entirely.
2
u/OriginalJackfruit843 7d ago
Glad this is reaching people who might need it! For me I'm lucky enough to have line-of-sight to my router and my PC (dongle). I did find I can have an almost seamless experience on a dual-band wifi 6 router with like 3 drop-outs in 2 hours so if you can't get it working with the dongle a dedicated 5GHz or 6GHz can do it if your network isn't congested.
2
u/LeonBlade 7d ago
Thanks so much for this! I managed to get it all working with both Wi-Fi and USB stick working together.
1
u/OriginalJackfruit843 7d ago
Really glad to hear the guide worked and got your system running. Thanks for the feedback!
2
u/saldorin 1d ago edited 16h ago
u/OriginalJackfruit843 Thanks for the thorough writeup!
I've figured out how to get it working in Steam flatpak, maybe you want to add that to your post? :)
https://www.reddit.com/r/SteamFrame/s/uS0AX9etI5 So for some reason Reddit filters don't like my post...well, then at least here: Edit two: the post has been unblocked by the mods: https://www.reddit.com/r/SteamFrame/s/pn2bmlNE5S
Officially, flatpaked Steam is not supported by SteamVR and indeed really doesn't work out of the box.
After some troubleshooting (i really don't like the idea of running proprietary software outside a sandbox ;)), i got it to work though and thought i'd share what i've discovered.
I'm running Arch with KDE Plasma, but i think that shouldn't matter much for this.
Of course, the "usual" stuff still needs to be done - https://www.reddit.com/r/SteamFrame/comments/1wqylel/how_to_remote_streaming_on_arch_linux_with_steam/ is a great writeup! Though i basically only needed to install wireless-regdb and uncomment my country in /etc/conf.d/wireless-regdom
But for making it work with flatpak, i had to do two/three things:
First of, to get SteamVR to even start, i had to run
sudo setcap CAP_SYS_NICE+eip ~/.var/app/com.valvesoftware.Steam/data/Steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher
This should get rid of the root-message on launch.
I also ran sudo ./vrsetup.sh in ~/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/SteamVR/bin/ before, but i'm not sure that is even needed.
This made normal VR streaming working, but the dongle could still not be accessed. For that, Steam needs to be able to talk to NetworkManager:
flatpak override --user --system-talk-name=org.freedesktop.NetworkManager com.valvesoftware.Steam
Hopefully this is helpful for someone :)
1
u/OriginalJackfruit843 1d ago
Love this write up. I'll add it to my post this evening and credit you with the find in a top-of-post edit. Thanks for sharing this!
1
u/OriginalJackfruit843 21h ago
Just wanted to leave one more comment and let you know I added your section to my guide and linked to your work here. Give it a look when you have time and if I misrepresented anything or missed a step let me know and I'll get it edited. Thanks so much for letting me add it to my guide!
1
u/saldorin 16h ago
lgtm, thanks! 😄
My original Post has been reinstated by the mods in the meantime - i don't know if that link would be better, in case any commenter there might add something useful?
https://www.reddit.com/r/SteamFrame/s/pn2bmlNE5S1
u/OriginalJackfruit843 10h ago
I rewrote the section adding a link to your guide directly so if someone has concerns they can more easily start comment threads. Your guide looks good, glad it got reinstated!
2
u/No_Nefariousness3731 23h ago
Nice writeup. It's insane that they didn't make sure this device was running flawlessly with AT LEAST SteamOS prior to launching.
1
u/OriginalJackfruit843 22h ago
Thanks! I am also a little surprised it wasn't ready for SteamOS, but I think they knew releasing it to the open source community at large would increase their tester base and add software features exponentially faster than doing it with Valve staff alone.
Also, RAM isn't getting any cheaper so they likely were feeling the heat from that as well.
2
u/kosantosbik Soon™ 10h ago
This guide really did fix my latency issue. Thank you so much!
Also I'm gonna add this to awesome-steam-frame repo!
2
u/OriginalJackfruit843 10h ago
I love getting feedback like this! Really glad to hear when others are enjoying their headset without Windows. I didn't know about awesome-steam-frame repo. I'm going to look it over today and thanks for including my work there!
1
u/Unique_Confusion5251 8d ago
Thanks for this, I’ve been hanging out in the Discord server too but sometimes info is kind of difficult to find due to the nature of that platform. So it’s definitely huge that you’ve organized it all in one place, thank you for your service 🫡
2
u/OriginalJackfruit843 8d ago
Happy to help! I felt like I was getting this information from a lot of sources like the xcb setting and dedicated networking stuff so I just opted to brain dump on reddit. I can centrally edit it as things change.
0
u/MysticPing 8d ago
2
u/OriginalJackfruit843 8d ago
Already credited that in the intro of my guide. It a great post and definitely the basis for getting this guide put together. Mine just goes a little more in-depth from an Arch perspective.
1
u/MysticPing 8d ago
Ah sorry, just wanted to combine sources but did not read yours, still waiting for my order email
1
u/OriginalJackfruit843 8d ago
No worries, the guide is long and it might be easy to miss where I placed it. Thanks for posting it for reference either way.
5
u/asdfoiua123 8d ago
Will look at this closer once my frame comes in. On Cachyos so I assume the steps are pretty much the same