Since the Linux version of SteamVR can now turn base stations on and off itself, this project is no longer necessary.
This project contains scripts to improve the functionally of SteamVR on Linux:
- Turning Base Stations (V1 or V2) on/off (via Bluetooth)
- Changing the audio output and input of games to the headset and back to the normal audio devices
A daemon can start automatically with SteamVR (via launch options), once SteamVR is closed the Base Stations are turned off again. Alternatively the scripts can be executed manually.
- Currently, this is known to work with a Valve Index, V2 Base Stations and V1 Base Stations. Other headsets might work.
- For the Base Station component a Bluetooth device capable of btle (Bluetooth Low Energy) is required.
- For the audio component PulseAudio (more specifically pactl, which is installed by default) is required.
This project is not affiliated with SteamVR, Steam or Valve.
Download:
git clone https://github.com/DavidRisch/steamvr_utils.git
cd ./steamvr_utilsInstall dependencies (the last command is required for bluepy to run without root privileges):
sudo apt install python3-pip libglib2.0-dev
sudo pip3 install bluepy psutil
sudo setcap 'cap_net_raw,cap_net_admin+eip' /usr/local/lib/python3.*/dist-packages/bluepy/bluepy-helperOn Arch Linux, bluepy-helper can be found at /usr/lib/python3.*/site-packages/bluepy/bluepy-helper.
Get launch options to configure SteamVR with and create desktop shortcuts:
./scripts/install.pyDepending on your setup some configuration (see section below) may be required before these commands work. Try out what works before changing the default configuration.
Follow the instruction returned by ./scripts/install.py.
./scripts/steamvr_utils.py daemon./scripts/steamvr_utils.py on./scripts/steamvr_utils.py offFirst make a copy of the default config file:
cp ./config/config_template.yaml ./config/config.yamlIf you chose a name other than config.yaml you will have to specify its location (--config argument).
The default config file contains explanations on each available field. Some config values are regular expressions (regexes), to get help with configuring them correctly see the output of:
./scripts/steamvr_utils.py config-helpFor usage with V1 Base Stations some configuration is required, V2 Base Stations work out-of-the-box.
The audio component works by switching every sink-input and source-output to the VR headset or their respective normal devices. If running in daemon mode, this process is repeated every second to affect any new games which might have been started. This is different from simply changing the default sink/source which does not always work as intended.
This program cannot distinguish between games for which it should switch audio to the HMD and other programs which you
might want to remain unaffected
(e.g. recording software). Because the switching is run once a
second you cannot manually override this with the system settings. Instead, you can add the applications to
the audio:excluded_clients_regexes config value to stop any interactions with that specific program, running
./scripts/steamvr_utils.py config-help will provide help for that. Should the audio component cause issues, parts of
it can be disabled using the config options audio:change_source and audio:change_sink.
- Part of
scripts/basestation_interface/v2_interface.pyis based on a gist by waylonflinn. - Part of
scripts/install.pyis based on a reddit post by Brunfunstudios . scripts/basestation_interface/lhctrl.pyis copied from a repo by risa2000 under the MIT license.