/WiVRn

An OpenXR streaming application to a standalone headset

Primary LanguageC++GNU General Public License v3.0GPL-3.0

WiVRn

License: GPL v3 CI

OpenXR streaming application

WiVRn lets you run OpenXR applications on a computer and display them on a standalone headset.

Installation

Server (PC)

See building.

Client (headset)

Prebuilt apk

Download apk from Releases. Install with adb (headset connected to PC), developer mode must be enabled.

adb install WiVRn.apk

Compilation

See building.

Usage

Set WiVRn as default OpenXR runtime

In order to set WiVRn as the default OpenXR runtime, you can run the collowing commands:

mkdir -p ~/.config/openxr/1/
ln --relative --symbolic --force build-server/openxr_wivrn-dev.json ~/.config/openxr/1/active_runtime.json

Alternatively, setting the environment XR_RUNTIME_JSON="${PWD}/build-server/openxr_wivrn-dev.json" will set it for the current shell only.

Running

Prerequisites

Avahi must be running:

systemctl enable --now avahi-daemon

If a firewall is installed, open port 5353/UDP for avahi. Open ports 9757/UDP+TCP for WiVRn itself.

Running

On the computer, run wivrn-server, from checkout directory

build-server/server/wivrn-server

Then, on headset, launch WiVRn from the App Library, in "unknown sources" section.

You should now see your server in the list, click connect, screen will show "waiting for video stream". Now on your computer you can run an OpenXR application, and it will show on your headset, enjoy!

Audio

When headset is connected, wivrn-server will create a virtual output device named WiVRn. It is not selected as default and you should either assign the application to the device when it is running, or mark it as default. To do so you can use pavucontrol or your desktop environment's configuration panel. Please note that in pavucontrol it will appear as a virtual device.

For microphone, you first have to enable it on the settings tabs on the headset (and give permission when prompted). It will then appear as a virtual input device named WiVRn(microphone) and also needs to be assigned like for output device.

Configuration

Configuration is done on server side, in $XDG_CONFIG_HOME/wivrn/config.json or if $XDG_CONFIG_HOME is not set, $HOME/.config/wivrn/config.json.

All elements are optional and have default values.

See configuration for configurable items.

Credits

WiVRn uses the following software: