
# valve index

I recently bought one to play around with VR and figured I should document what got it working for me.

Even though linux is "officially supported", it does not mean feature-parity with windows.

However, I absolutely refuse to install windows ever again.


## setup

**I finally figured out the bug with pkexec, and added the necessary package to `arch.sh`!**

Installing SteamVR will require superuser permissions to run the `vrcompositor-launcher`, but this locks up my entire openbox desktop forcing me to reboot the system.

This can be solved by running this command before launching SteamVR, and must be run anytime SteamVR is updated:

	sudo setcap cap_sys_nice+eip ~/.steam/steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher

You can verify the setting with:

	getcap ~/.steam/steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher

_Apparently the script is attempting to run `pkexec`, and I am unsure what polkit configuration needs to exist for that to succeed..._

Apparently steamvr does not like amdvlk, and since my system has both amdvlk and radeon I had to add this to my `~/.bash_profile`:

	export VK_ICD_FILENAMES="/usr/share/vulkan/icd.d/radeon_icd.i686.json:/usr/share/vulkan/icd.d/radeon_icd.x86_64.json"

_Various documents also recommend these settings in your `~/.bash_profile`:_

	export STEAM_RUNTIME=1
	export STEAM_RUNTIME_PREFER_HOST_LIBRARIES=0


### IPD

There is a manual switch at the bottom that let's you adjust IPD, and will display the numeric distance in the HMD.

_I measured my IPD at 62.5, but sometimes I find visuals to be better when I set it slightly larger._


## bugs

These are bugs, which have workarounds:

- The settings occasionally will only show the `Startup / Shutdown` tab.
	- This can be solved _sometimes_ by quitting, running this as root `echo 3 > /proc/sys/vm/drop_caches`, and then starting it back up.
- The settings window may be incorrectly sized, and cannot be resized, making some options inaccessible.
	- For me this was solved by dragging the settings to another desktop then restarting SteamVR; it remembers window positions and the DPI for one display differed.
- I had really bad stuttering and could not launch room setup at one point.
	- Apparently I had not specified which vulkan implementation to use and had both amdvlk and radeon available, but this was solved by quitting steam, setting an export (`export VK_ICD_FILENAMES="/usr/share/vulkan/icd.d/radeon_icd.i686.json:/usr/share/vulkan/icd.d/radeon_icd.x86_64.json"`), then starting it again.
- Any time a change in SteamVR settings requires a restart clicking the button that appears does nothing.
	- You can just quit SteamVR or select the option from the main window, but the button itself does not work.
- The audio does not automatically switch to the HMD.
	- You can use `pactl` to find and switch profiles, but it has to be done manually and set back to the original after you exit SteamVR.
		- _In my case it was `pactl set-card-profile 1 output:hdmi-stereo-extra2` to enable and `pactl set-card-profile 1 output:hdmi-stereo` to switch back to the default, and it may not remember the volume making it potentially noisy._


## broken

These are broken and have no resolutions:

- The cameras, and subsequently the awesome "Chaperone" feature does not work.  _The video feed is available from other applications such as `guvcview`, but [this issue](https://github.com/ValveSoftware/SteamVR-for-Linux/issues/231) has been open for 2 years now, and no progress or official replies._



## utilities

These are some scripts and utilities that can be used to provide some missing functionality:

- [steamvr utils](https://github.com/DavidRisch/steamvr_utils)
- [paToggle](https://gist.github.com/frostworx/2a1a84ea8098ddc207cc9f54793f5446)
- [lh.py; superseded by steamvr_utils](https://gist.github.com/prefiks/e614116fc3983a8e7e5fe326800dc101)
- [VR-on-Linux](https://gitlab.com/vr-on-linux/VR-on-Linux)
- [vr-video-player](https://git.dec05eba.com/vr-video-player/about/)

_The `steamvr_utils` package can be installed and easily hooked to the launch configuration of SteamVR._


### steamvr_utils

First I cloned the repository and reviewed the readme and code.  _I found nothing malicious in the code._

I ran installation of dependencies and permissions as root:

	pip3 install bluepy
	pip3 install psutil
	setcap 'cap_net_raw,cap_net_admin+eip' /usr/lib/python3.9/site-packages/bluepy/bluepy-helper

_I forked and modified the code so that I could get it to properly restore audio, and will eventually add microphone support to it._

Next I added the SteamVR launch command:

	python3 /home/cdelorme/git/steamvr_utils/scripts/steamvr_utils.py daemon  >>/tmp/steamvr_utils.out 2>&1; %command%;


## games

Here are the games I've tried and the results:

- Half Life: Alyx
	- Works excellent.
- No Man's Sky
	- Works when override to Proton 5.13.6 from 6.X; kind of laggy though, may need some settings adjusted, otherwise absolutely amazing!
- Phasmophobia
	- Same deal as No Man's Sky, though no lag!  Might even be pleasant.  Would like to get microphone support working though...
- Desktop Game Theater
	- Sadly written in an older version of Unity and therefore incompatible


---

Test out Steam VR Desktop Theater functionality; should be able to play flat-screen games in VR on a big screen.  _The game for this should be Everspace 2._

Finally, decide whether to buy and download Beat Saber, which is dependent on the ability to mod and add custom songs.

Beat Saber customization on linux:
https://unhexium.net/vr/beat-saber-mods-and-linux/
https://github.com/bsmg/beat-saber-community-wiki/pull/3
