linux vr setup

#author_luna #vr #linux #living_article

initally written %at=2025-02-07T14:29:30.123Z
current version %at=2025-04-09T22:29:47.012Z

world in picture: Umbra by Blue Cat

assuming:

if flatpak:

flatpak install flathub io.github.wivrn.wivrn
flatpak run io.github.wivrn.wivrn

if envision:

get wlxoverlay-s while at it

get xrgears while at it so you can test your setup. there's no specific appimage or whatever so you'll need to build it. link is for void-packages (i use void linux, you may be able to find it on AUR if arch)

then pair the headset (get wivrn app from meta quest store) to the server, and connect to it. you aren't dropped to vr until there's a vr client, so open another terminal and ./wlxoverlay-s-whatever-version-u-got.appimage

i recommend looking over wlxoverlay-s' readme to see controller mappings. i also recommend configuring it such that show/hide follows your HMD center (xsoverlay-style behavior, i know)

audio #

#!/bin/sh
set -eux
pactl set-default-sink wivrn.sink
pactl set-default-source wivrn.source

full body tracking #

currently https://lvra.gitlab.io/docs/slimevr/ gives 3 options for full body tracking:

vrchat osc with slimevr sucks if your trackers are using cheap IMUs like mine (my bad experience with ozivr), since osc does not give HMD position, slimevr has to assume HMD is always upright, which requires you to always stay upright on any reset (yaw, full, mounting), which i have to do every 10 minutes or so. makes for good exercise i guess, but for me it's unusable.

relevant prs:

no need to build slimevr! appimage exists for the currently WIP version that contains solarxr support: https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.14.0-rc1. you may need tricks for nvidia though:

env WEBKIT_DISABLE_DMABUF_RENDERER=1 ./SlimeVR-amd64.appimage

video games #

IMPORTANT the LVRA DB is now a thing: https://respuit.github.io/VRDB/, prefer going to it to find out compatibility information for your preffered vr apps.

generally, copy the environment variables from wivrn into the steam game's launch options and it'll mostly likely work (test results as of %at=2025-02-07T14:09:18.224Z):


random notes #

avahi on void linux #

need avahi on void

need dbus fixed on void

2025-01-25T01:04:55.77879 daemon.warn: Jan 24 22:04:55 avahi-daemon[21245]: WARNING: No NSS support for mDNS detected, consider installing nss-mdns!
2025-01-25T01:04:55.77935 daemon.err: Jan 24 22:04:55 avahi-daemon[21245]: dbus_bus_request_name(): Connection ":1.12091" is not allowed to own the service "org.freedesktop.Avahi" due to security policies in the configuration file
2025-01-25T01:04:55.77939 daemon.warn: Jan 24 22:04:55 avahi-daemon[21245]: WARNING: Failed to contact D-Bus daemon.

need to restart dbus methinks. avahi package installs avahi.conf into dbus settings so it has perms
NOTE: need to restart entire system after restarting dbus system bus. everything explodes otherwise
https://stackoverflow.com/questions/4560877/dbus-bus-request-name-connections-are-not-allowed-to-own-the-service

wivrn can't start due to unknown error (999) in nvenc encoder #

following https://github.com/obsproject/obs-studio/issues/11381, i did this:

also https://github.com/tensorflow/tensorflow/issues/53341#issuecomment-1166532019

changelog #

%at=2025-04-09T22:29:47.012Z