WiVRn

Access your PC VR applications from a standalone headset

About

An open source VR streaming solution for Linux

WiVRn allows you to run VR applications on your PC and display and control them wirelessly from a compatible headset.

...
...

Compatible with many headsets

WiVRn works with Meta Quest 1, 2, 3 and Pro, with Pico Neo 4, and with HTC Vive Focus 3 and XR Elite.

...

Compatible with OpenXR and OpenVR applications

Using Monado for OpenXR and OpenComposite for OpenVR, WiVRn is compatible with most VR applications, including SteamVR games.

Get started

Install the dashboard on your computer

The dashboard is available on Flathub:

Get it on Flathub
A wivrn-dashboard package is available on AUR:
yay -S wivrn-dashboard
A wivrn package is available on Guru.
Instructions for building the WiVRn dashboard from source are available on the GitHub repository.

Install the client on your headset

WiVRn is available on the Meta Store for Quest 2 / 3 / Pro. For other headsets, including the Quest 1, you will have to sideload it by following the connection wizard in the dashboard.

When you start the dashboard the first time, the connection wizard will help you install the client on your headset.

You can run it later by clicking the "Wizard" button in the dashboard.

Instructions for building the WiVRn headset app from source are available on the GitHub repository.

Connect your headset to your computer

  1. Start the WiVRn dashboard on your PC
  2. Start the WiVRn client on your headset

    On a Quest, if you did not install it from the Meta Store, it will be in the "Unknown Sources" section.

  3. Connect to your PC from your headset
  4. Start a VR application from your PC
For SteamVR games, you will also need to set the launch options. Right-click on the game in your library, select properties and paste the launch options from the dashboard.

Settings

Settings guide

A stronger foveation makes the image sharper in the center than in the periphery and makes the decoding faster. This is better for fast paced games.

A weaker foveation gives a uniform sharpness in the whole image.

The recommended values are between 20% and 50% for headsets without eye tracking and between 50% and 70% for headsets with eye tracking.

Bitrate of the video, in Mbit/s. Split among decoders based on size and codecs.

A higher bitrate directly improves image quality by reducing pixelation in fast-paced scenes or in complex visuals, such as landscapes with dense foliage. However, it may also increase latency or overload the network, encoder, or decoder.

For testing purposes, a bitrate of 50 Mbit/s is a good starting point for wireless connections. Wired connections, if supported by the hardware, should be able to handle up to 480 Mbit/s.Although it is currently capped at 200 Mbit/s.

Encoders compresses video data in real-time to reduce bandwidth and latency, enabling smooth transmission to the headset.

WiVRn has the ability to split the video in blocks that are processed independently, this may use resources more effectively and reduce latency. All the provided encoders are put into groups, groups are executed concurrently and items within a group are processed sequentially.

It is possible to mix CPU/GPU encoding if you have spare CPU cores. On AMD systems, this can provide a significant improvement. For high bitrates, avoid software encoding, as CPU time increases significantly.

Default value: 3 encoders in order 1/8th, 3/8th and 4/8th of the image.

Encoder

Identifier of the encoder, one of

  • x264: Software encoding
  • NVENC: Nvidia hardware encoding
  • VAAPI: AMD/Intel hardware encoding
  • Vulkan: Experimental, for any GPU that supports Vulkan video encode

Default value: nvenc if Nvidia GPU and compiled with nvenc, vaapi for all other GPU when compiled with ffmpeg, else x264.

Codec

One of h264, h265 or av1. Not all encoders support every codec, x264 and vulkan only support h264, nvenc only h264 and h265.

On the dashboard, you can add a new encoder by splitting an existing one and clicking near an edge. Drag the edge to resize, or remove encoders by moving the line to one of the limits.

By clicking on each block, like the one highlighted in blue in the image, you can select the Encoder and Codec.

Default value: first supported by both headset and encoder of av1, h264, h265.

Demo

Privacy

WiVRn does not collect any user data.

FAQ

My computer is not seen by the headset

If the server list is empty in the headset app:

  • Make sure your computer is connected on the same network as your headset.
  • Check that avahi is running with
    systemctl status avahi-daemon
    . If it is not, enable it with
    systemctl enable --now avahi-daemon
    .
  • If you have a firewall, check that port 5353(UDP) is open.

My headset does not connect to my computer

  • If you have a firewall, check that port 9757 (UDP and TCP) is open
  • The server and client must be compatible:

Source code


Social