--- weight: 50 title: WiVRn --- # WiVRn - [WiVRn GitHub repository](https://github.com/WiVRn/WiVRn) ![The WiVRn mascot](https://github.com/WiVRn/WiVRn/blob/master/images/wivrn.svg?raw=true) > WiVRn wirelessly 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](/docs/fossvr/monado/) and can be used with [OpenComposite](/docs/fossvr/opencomposite/) to support a majority of titles available for SteamVR. A wide range of standalone headsets are supported. We recommend using [Envision](/docs/fossvr/envision/) to install and launch WiVRn & OpenComposite. Envision will handle all configuration seamlessly and avoids many of the pitfalls of a manual setup. Alternatively, you can use the [WiVRn Flatpak](https://flathub.org/apps/io.github.wivrn.wivrn) which includes OpenComposite as part of it. ## General WiVRn Notes To use WiVRn you need to have Avahi installed and running. You can ensure it is running with the following terminal command: ```bash systemctl enable --now avahi-daemon ``` If you have a firewall installed, you will need to ensure ports 5353/UDP and 9757/UDP+TCP are open for Avahi and WiVRn itself, respectively. If you are using Nvidia proprietary drivers, you will need to have [Monado Vulkan Layers](https://gitlab.freedesktop.org/monado/utilities/vulkan-layers) installed to play any steam games with WiVRn. For audio in WiVRn, you will need to assign applications, or the system as a whole, to output audio to the virtual output "WiVRn" which is created upon connection between the server and the headset. ## Wired WiVRn Use WiVRn with a cable instead of Wifi. Use a 5Gbps cable & port at the very least. WiVRn version: 0.19+ Using Envision: - Connect the headset via USB - Click the `Start WiVRn Client (Wired)` button in Envision. - If it's not there, an Envision update might be necessary. Manual steps: - Connect the headset via USB - If WiVRn is running on the headset, close it now. - While in the system lobby of the headset, run the following `adb` commands on the PC: ```bash adb reverse tcp:9757 tcp:9757 adb shell am start -a android.intent.action.VIEW -d "wivrn+tcp://127.0.0.1" org.meumeu.wivrn ``` ## WiVRn + Lighthouse driver This section covers using WiVRn with any lighthouse-tracked device: Index/Vive controllers, Vive/Tundra trackers, etc. WiVRn version: 0.19+ Have SteamVR installed (no need to run it). In Envision, set WiVRn Profile as such: - XR Service CMake Flags: - `WIVRN_FEATURE_STEAMVR_LIGHTHOUSE=ON` - Environment Variables: - `WIVRN_USE_STEAMVR_LH=1` - `LH_DISCOVER_WAIT_MS=6000` Perform a **Clean Build** after changing the CMake flags! If not using Envision, simply pass `-DWIVRN_FEATURE_STEAMVR_LIGHTHOUSE=ON` to cmake and export the env variables before starting `wivrn-server`. [Motoc](/docs/fossvr/motoc/) will be used to calibrate the two tracking technologies to work together. Discovery happens only on first connection, so be sure to **have all lighthouse devices powered on and in line of sight of base stations before connecting the headset!** Once a device is discovered, it may be powered off and then back on later. 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](https://github.com/galister/motoc/blob/main/README.md). ## [Experimental] WiVRn + SlimeVR trackers This section covers using WiVRn with SlimeVR trackers (not via OSC). Tracking fidelity is reported to be similar to what's achievable with the SteamVR-native solution. Current state: Fully usable, but with quirks. In Envision, set WiVRn Profile as such: - XR Service Branch: - `master` - XR Service CMake Flags: - `WIVRN_FEATURE_SOLARXR=ON` Perform a **Clean Build** after changing these! - Always start SlimeVR server before starting WiVRn. - Do not quit SlimeVR server mid-session; trackers will not work until WiVRn is restarted. - _Full Reset_ is sensitive to direction. - There is a direction that one needs to face towards for the full reset to work properly. - It will take some trial and error to find this direction. - Upstream issue: [SlimeVR-Server#1159](https://github.com/SlimeVR/SlimeVR-Server/issues/1159)