WiVRn#
WiVRn wirelessly (or through USB) connects a standalone VR headset to a Linux computer. You can then play PCVR games on the headset while processing is done on the computer.
WiVRn is based on Monado and can be used with xrizer or OpenComposite (legacy) to support a majority of titles available for SteamVR. A wide range of standalone headsets are supported.
It supports headset-based full-body tracking:
- Quest 2’s camera-based upper body tracking
- Quest 3’s camera-based full-body tracking
- Pico trackers used with a Pico 4/Ultra
- Vive Ultimate motion trackers connected to a Vive Focus Vision, Vive Focus 3, or Vive XR Elite
You need to install the WiVRn server and dashboard apps on your PC, and the client app on your standalone device. Then launch the dashboard and connect to it.
Here’s how the WiVRn dashboard looks like when connected:

Proton version 9 or newer is required for Windows Steam games to work, on older versions it will fail to initialise VR.
Installing WiVRn#
We recommend using distribution packages when available (see below) or the WiVRn Flatpak when one is unavailable.
You must re-login (or restart) after installing the
wivrn-serverAUR package for Steam games to connect to WiVRn.
Packages are available on AUR, you will need the following packages:
wivrn-serverandwivrn-dashboardfor base feature + GUI (latest release), orwivrn-full-gitfor development versionxrizer-gitoropencomposite-gitfor compatibility with OpenVR and Proton
You may also want to install the lib32- versions of the above packages for compatibility with 32-bit games.
The wivrn package will automatically pull wivrn-dashboard and opencomposite as dependencies, it can be installed with sudo dnf install wivrn.
To make use of patented codecs for video encoding like H264/H265, you must install the codecs from RPMFusion.
Development builds are not available through dnf, to use development builds you must install from Flatpak or build with Envision.
Packages are available on Guru, you will need media-libs/wivrn and media-libs/xrizer (recommended) or media-libs/opencomposite.
See services.wivrn. To use development versions, import the nixpkgs-xr overlay.
The WiVRn Flatpak has the latest released version and can be installed with flatpak install flathub io.github.wivrn.wivrn or via your software centre application.
For development releases, you can download the wivrn-flatpak-x86_64 artifact from the GitHub Build action.
Using Envision for building WiVRn is highly discouraged! Packages made for your distribution (see above) should be preferred in most cases.
You can use Envision to install and launch WiVRn & xrizer / OpenComposite.
If using a development version, you will need to install a matching version of the headset application. Make sure you have plugged in the headset and set up adb as described in the WiVRn through USB section, then install the app on your headset:
Click ‘Install the app’ at the top, then click the Install WiVRn / Reinstall WiVRn button on your headset in the list.
Click the ‘Install WiVRn APK’ button on the left side of the window.
Download the org.meumeu.wivrn-release.apk from the release matching your server version from the WiVRn-APK repository, then run adb install path/to/org.meumeu.wivrn-release.apk, filling in the path to the downloaded .apk file, to sideload it onto the headset.
Steam Flatpak users#
It is possible to use WiVRn Flatpak with Steam Flatpak, though Steam Flatpak isn’t generally recommended for VR. If you are using Steam Flatpak, you just need to grant it access to the relevant paths with the command below.
If you have Steam installed in the system flatpak installation rather than the user installation, remove the --user flag from these commands.
flatpak override --user \
--filesystem=xdg-config/openxr:ro \
--filesystem=xdg-config/openvr:ro \
--filesystem=xdg-run/wivrn \
--filesystem=/var/lib/flatpak/app/io.github.wivrn.wivrn:ro \
--filesystem=~/.var/app/io.github.wivrn.wivrn:ro \
com.valvesoftware.SteamAs an added bonus to the above, this command will save you the effort of having to set launch options for every single VR game in your Steam library:
flatpak override --user --env=PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES=1 --env=PRESSURE_VESSEL_FILESYSTEMS_RW=/var/lib/flatpak/app/io.github.wivrn.wivrn com.valvesoftware.SteamWiVRn through USB#
You can use WiVRn with a cable instead of Wi-Fi. Use a 5Gbps cable & port at the very least.
- Install adb on your system - usually the package is named
android-toolsor something similar. - Connect the headset via USB.
- Run
adb devicesin your terminal. - If you have never authorised USB debugging from this computer before, put the headset on shortly and select ‘Always allow USB debugging from this computer’.
Then depending on your installation method, follow these steps:
The ‘Connect via USB’ button under the pairing toggle should have a list of devices - select any one to initiate a wired connection.
Click the Start WiVRn Client (Wired) button in Envision.
Follow the instructions in the WiVRn README.
WiVRn + SlimeVR trackers#
SlimeVR support has been merged into WiVRn, however it is only in the development version at the moment. See the installation section above.
WiVRn + Lighthouse driver#
This section covers using WiVRn with any Lighthouse-tracked device (such as Index/Vive controllers, Vive/Tundra trackers, etc.). You must have SteamVR installed (no need to run it).
All installation methods listed above except for Flatpak support the Lighthouse driver.
To enable it, go into the Settings page in the dashboard and turn on ‘Enable SteamVR tracked devices support’, or edit the configuration file (see the WiVRn docs regarding the configuration file).
Usage tips#
Discovery happens only on first connection, so be sure to have all Lighthouse devices powered on and in line-of-sight of your base stations before connecting the headset! Once a device is discovered, you may power it off and on at-will.
You can use Motoc to calibrate the two tracking technologies to work together.
Once video appears in the headset, check motoc monitor to make sure your devices all show up.
If one or more devices are missing, try:
- Spread the devices out more; Lighthouse devices get discovered quicker if they’re not piled up on each other. Simply strapping them on is good, too.
- Increase
LH_DISCOVER_WAIT_MS, though this delays the client on first connection.
To re-discover devices, restart WiVRn server.
At this point, your Lighthouse devices will be randomly floating about somewhere. To calibrate them, follow the guide in the Motoc README.
Troubleshooting#
No audio in headset, or no microphone input in apps on PC#
Make sure that you have switched to the ‘WiVRn’ audio output and ‘WiVRn(microphone)’ input. If the microphone input is not present, enable the microphone in WiVRn settings on the headset.
Speaker and microphone audio devices not showing up in device selector#
The speaker and microphone devices WiVRn creates are marked as virtual devices, so some applications (e.g. KDE Plasma’s Audio Volume widget) may hide them. You should check the application settings to see if there is a ‘Show virtual devices’ toggle you can enable.
‘Cannot create avahi client’ error on startup#
Make sure you have avahi installed and have enabled & started the avahi daemon with sudo systemctl enable --now avahi-daemon.
This error may also occur if you do not have D-Bus set up correctly. If you aren’t able to get avahi working, you are also able to disable service publication by setting publish-service: null in the configuration file (see the WiVRn documentation on the config file).
Server not showing up in headset, client gets stuck on ‘Connection to …’, or ‘No route to host’ error on connection#
This may be due to a firewall on your system blocking the connection between your PC and headset. Make sure the ports 5353 (UDP) and 9757 (TCP&UDP) are open.
If using ufw, you can open the ports with ufw allow 5353/udp && ufw allow 9757.