Skip to content

devnet82-ship-it/wivrn-stack-control

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VR Stack Control v0.6.85 (Quest 3 on CachyOS: WiVRn + WayVR + SlimeVR)

VR Stack Control is a lightweight Linux GUI + systemd user service that manages a modular VR stack:

Tracking -> Streaming Server -> VR App

It keeps OpenXR/OpenVR state sane (no stuck SteamVR overrides, no missing OpenVR paths) and launches things in the right order every time.

Made by: David Coates (idea + testing) + ChatGPT (implementation help)

Repo: https://github.com/devnet82-ship-it/wivrn-stack-control Pages: https://devnet82-ship-it.github.io/wivrn-stack-control/


Links (where to get everything)

WiVRn:

WayVR:

SlimeVR:

XRizer (OpenVR -> OpenXR for Steam/OpenVR titles):


1) Install VR Stack Control (v0.6.85 release zip)

Download v0.6.85 zip from Releases: https://github.com/devnet82-ship-it/wivrn-stack-control/releases

Install (fish-safe):

cd ~/Downloads
# Replace this with your exact filename if needed
set ZIP vr-stack-control-v0.6.85-openxrfix9-close-steam-on-wivrn21.zip

rm -rf vr-stack-control-v0.6.85
unzip -o "$ZIP" -d vr-stack-control-v0.6.85
cd vr-stack-control-v0.6.85
chmod +x install.sh uninstall.sh bin/*
./install.sh
systemctl --user daemon-reload

Run GUI:

vr-control --gui

Optional tray:

vr-control tray
vr-control tray-enable
vr-control tray-disable

Doctor:

vr-control doctor


Quick tutorial (using the app)

What the buttons do (simple)

  • XR Runtime dropdown
    • WiVRn = Quest streaming (should NOT start Steam/SteamVR)
    • SteamVR = SteamVR/OpenVR path (for SteamVR/legacy)
  • Start = launches the stack in the correct order
  • Stop = stops everything cleanly
  • Doctor = prints a health report (OpenXR runtime + OpenVR paths + services)
  • Tray = optional small icon for quick Start/Stop/Doctor

First time (2 minutes)

  1. Open: vr-control --gui
  2. Set XR Runtime = WiVRn
  3. (Optional) Enable SlimeVR / Tracking toggle if you want body tracking
  4. Click Start
  5. Put on the Quest -> open WiVRn (Quest Store app) -> connect to your PC
  6. When done, click Stop

Daily use flow

  • Quest streaming / VRChat / WiVRn worlds

    1. XR Runtime = WiVRn
    2. Click Start
    3. Connect in the Quest WiVRn app
    4. Click Stop when finished
  • SteamVR mode (only if you specifically want SteamVR)

    1. XR Runtime = SteamVR
    2. Click Start
    3. Launch SteamVR/Steam game
    4. Click Stop when finished

If something goes wrong

  1. Click Stop
  2. Run Doctor:
    vr-control doctor
  3. What “good” looks like for WiVRn:
    • OpenXR runtime shows Monado/WiVRn (not SteamVR)
    • OpenVR paths are present (canonical not missing)
  4. If Steam opens when you select WiVRn:
    • Click Stop
    • Set XR Runtime back to WiVRn
    • Start again (WiVRn mode should keep Steam/SteamVR closed)

2) Install PC software (CachyOS / KDE / Wayland)

2.1 Base packages

sudo pacman -Syu
sudo pacman -S --needed git base-devel avahi

Enable Avahi (WiVRn discovery uses mDNS):

sudo systemctl enable --now avahi-daemon

2.2 WiVRn (PC) - normal/stable

If you previously used beta/dev WiVRn:

sudo pacman -Rns wivrn-full-git 2>/dev/null

Install WiVRn stable:

yay -S --needed wivrn-server wivrn-dashboard
pacman -Q | grep -i wivrn

2.3 WayVR

sudo pacman -S --needed wayvr
command -v wayvr

2.4 SlimeVR (beta)

This guide uses slimevr-beta-bin because it has been reliable for this setup.

yay -S --needed slimevr-beta-bin
pacman -Q | grep -i slimevr

2.5 XRizer (recommended for Steam/OpenVR titles)

yay -S --needed xrizer-git xrizer-common-git lib32-xrizer-git

mkdir -p ~/.local/share/openvr
printf "%s\n" \
"{" \
"  \"jsonid\": \"vrpathreg\"," \
"  \"runtime\": [\"/opt/xrizer\"]," \
"  \"version\": 1" \
"}" \
> ~/.local/share/openvr/openvrpaths.vrpath

set -Ux VR_PATHREG_OVERRIDE "$HOME/.local/share/openvr/openvrpaths.vrpath"

3) Quest 3 WiVRn client (DEFAULT: Quest Store)

You do NOT need ADB for normal use.

  1. On Quest 3: open the Store
  2. Search: WiVRn
  3. Install or Update it
  4. Open WiVRn and connect to your PC (same network)

4) OPTIONAL: ADB setup + Sideloading APK (only for dev/testing)

Only do this if you must sideload a specific build (testing) or you are debugging.

Install ADB tools:

sudo pacman -S --needed android-tools
adb version

Enable Developer Mode:

  • Meta Quest phone app -> Devices -> Quest 3 -> Developer Mode ON
  • Reboot headset

Enable USB Debugging in headset:

  • Settings -> System -> Developer -> USB Debugging ON

Authorize:

adb kill-server
adb start-server
adb devices

If you see "unauthorized": accept the USB debugging prompt in-headset and tick "Always allow".

Optional: GitHub Actions APK method (only if matching a dev PC build):

sudo pacman -S --needed github-cli
gh auth login
gh workflow list --repo WiVRn/WiVRn
gh run list --repo WiVRn/WiVRn --workflow "Build" --branch master --limit 10
# pick a RUN id that has apk-Release artifact
set RUN 21321590049
gh run view $RUN --repo WiVRn/WiVRn
gh run download $RUN --repo WiVRn/WiVRn --name apk-Release
unzip -o *.zip
adb install -r *.apk

5) Daily use (VR Stack Control)

Open the GUI:

vr-control --gui

Select XR Runtime:

  • WiVRn: Quest streaming (no SteamVR)
  • SteamVR: Steam Link / legacy OpenVR paths

Start/Stop from GUI or:

systemctl --user start vr-stack-control.service
systemctl --user stop vr-stack-control.service
journalctl --user -fu vr-stack-control.service

About

Lightweight Linux GUI for managing modular VR stacks (tracking → server → OpenXR app) via systemd --user.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors