Skip to content
forked from WiVRn/WiVRn

APK builds for WiVRn - see https://github.com/WiVRn/WiVRn for main releases

License

Notifications You must be signed in to change notification settings

WiVRn/WiVRn-APK

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,280 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WiVRn

License: GPL v3 CI Format

Fully FOSS PCVR streamer

About

WiVRn is an application that wirelessly streams a virtual reality game to a standalone VR headset from a Linux computer.

WiVRn support a wide range of VR devices:

Headset Supported Notes
Quest 1
Quest 2
Quest 3
Quest 3s
Quest Pro
Pico Neo 3
Pico 4
HTC Vive Focus 3 Laggy
HTC Vive XR Elite Laggy
Samsung Galaxy XR
Other Android VR ? Cannot know
Play for Dream WiVRn#465
Non-Android VR Not Android
Non-VR Android VR required

A Linux client does exist, only for debugging. It has no audio or hardware decoding.

Getting started

PC Server/Dashboard

We recommend using the flatpak package from Flathub:

Flathub

Alternatively, packages are available from:

Headset Client/App

Follow the wizard in the PC dashboard to install the client on your VR headset.

It should either lead you to the Meta Store (for Meta Quest headsets) or to download the correct APK (for other headsets).

Warning

The VR client and PC server need to be on the same version of WiVRn

Tip

If the headset fails to connect to the computer, see troubleshooting.

Usage

Running

Prerequisites

Avahi must be running:

systemctl enable --now avahi-daemon
  • If a firewall is installed, open port 5353/UDP for Avahi and ports 9757/UDP+TCP for WiVRn.
  • For example, if using UFW run ufw allow 5353/udp and ufw allow 9757.

Running

  • On your computer, run "WiVRn server" application, or wivrn-dashboard from the command line. It will show the setup wizard the first time you launch it.
  • On your headset, run WiVRn from the App Library. If you are using a Meta Quest and you have installed it from an APK instead of the Meta Store, it should be in the "unknown sources" section.
  • You should now see your computer in the list: click connect, the screen will show "Connection ready. Start a VR application on [your computer's name]".

You can now stream an OpenXR application from your computer to your headset. For Steam games, you may also need to set the launch options to be able to use WiVRn. The server/dashboard will tell you how to do this if required.

  • Right-click on the game you want to play in VR in Steam and click "Properties".
  • In the "General" tab, enter the launch options that the WiVRn server/dashboard gave you inside the "Launch Options" setting.

You can set an application to be started automatically when your headset is connected, in the dashboard settings or manually.

Application list

When the headset is connected and no XR application is running, it will show an application launcher. Applications in that list are sourced from:

  • Steam games that are flagged as VR. Steam may need to be restarted for the list to be updated when new games are installed.
  • .desktop files that contain X-WiVRn-VR in the Categories section. Files are searched in standard locations which usually include ~/.local/share/applications and /usr/share/applications/.

OpenVR and Steam games

The flatpak includes OpenComposite and xrizer, used to translate the OpenVR API to OpenXR. see SteamVR for details.

If using Wine/Proton, it will probe for OpenVR at startup, This means even for OpenXR applications, OpenComposite or xrizer is required.

When you start the server through flatpak, it automatically configures the current OpenVR to use xrizer.

Steam Flatpak

If you're using the Steam Flatpak, you'll need to grant read only access to the following paths:

flatpak override \
  --filesystem=xdg-run/wivrn:ro \
  --filesystem=xdg-data/flatpak/app/io.github.wivrn.wivrn:ro \
  --filesystem=/var/lib/flatpak/app/io.github.wivrn.wivrn:ro \
  --filesystem=xdg-config/openxr:ro \
  --filesystem=xdg-config/openvr:ro \
  com.valvesoftware.Steam

When using a user installation of flatpak Steam, use override --user instead of override.

Audio

When the headset is connected, WiVRn will create a virtual output device simply named "WiVRn. You must manually set this audio output to enabled/default. Please note that in pavucontrol it will appear as a virtual device.

To enable microphone, you first have to enable it on the settings tab on the VR headset (and give permission when prompted). It should appear as a virtual input device named "WiVRn(microphone)", and needs to be assigned as the input device (same way as output device).

Building

See building for building the dashboard, server (PC), and client (headset)

Configuration

Configuration can be done from the dashboard.

See configuration for editing the configuration manually.

Troubleshooting

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 the same version.
How do I use a wired connection?
  • Make sure the WiVRn Server is installed and running on your computer
  • Make sure you have the WiVRn app installed on your headset
  • After starting the "WiVRn Server" on your computer and ensuring your device is connected to your PC via cable, run the following in your terminal (Note: using adb on some devices may require developer mode to be enabled):
    •  adb reverse tcp:9757 tcp:9757
       adb shell am start -a android.intent.action.VIEW -d "wivrn+tcp://localhost" org.meumeu.wivrn
    • Depending on your install type, you may need to replace org.meumeu.wivrn (Meta Store install) with:
      • org.meumeu.wivrn.github for releases on Github
      • org.meumeu.wivrn.github.nighly for Github nightlies (wirvn-apk repository)
      • org.meumeu.wivrn.github.testing for Github CI builds
      • org.meumeu.wivrn.local for developer builds
  • You can now continue the pairing process as documented in the running section.
How do I see server logs when using the dashboard?
  • Click Troubleshoot > Open server logs, or
  • Navigate to ${XDG_STATE_HOME}/wivrn/wivrn-dashboard (with fallback to ${HOME}/.local/state for ${XDG_STATE_HOME}, or
  • For flatpak, navigate to ${HOME}/.var/app/io.github.wivrn.wivrn/.local/state/wivrn/wivrn-dashboard.
I have high motion latency, black borders following my view, hear corrupted audio or see a corrupted, pixelated image
  • When connecting through USB, make sure the headset isn't connected through WiFi (switch off WiFi)
  • Reset the settings using the button at the bottom of the settings tab
  • Try switching to software encoding
  • Decrease the bitrate
  • Decrease the resolution in the WiVRn app
  • Connect through USB or use a better WiFi router.

Note: WiVRn isn't properly optimized for NVIDIA GPUs due to the lack of developers with NVIDIA hardware. Motion latency may be significantly worse at rendering resolutions higher than default.

Contributing

Translations

See translating for procedure.

Credits

WiVRn uses the following software:

About

APK builds for WiVRn - see https://github.com/WiVRn/WiVRn for main releases

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 89.8%
  • QML 3.4%
  • CMake 3.0%
  • Python 1.3%
  • C 0.9%
  • GLSL 0.7%
  • Other 0.9%