A compilation of issues I've had with SteamVR and ChilloutVR on Linux, some with solutions
Find a file
2023-05-28 16:48:24 +02:00
README.md cleanup & notes 2023-05-28 16:48:24 +02:00

VR+Linux curses

This document is a compilation of issues that I have run into while using SteamVR and ChilloutVR on Linux. Some things have solutions, some have workarounds, and some are just cursed.

I use Arch Linux and have a Radeon RX 6800XT GPU.

SteamVR

Useful resources

First launch

Every first launch of SteamVR crashes more or less when the first frame is rendered. Sometimes it is fine until I grab the headset and make it wake up, but it usually triggers by itself if I just wait 10 seconds. You don't have to wait for it to crash, closing it manually immediately and starting it again works too. Very rarely it doesn't crash even after starting to render, but then it will have an incredibly low framerate (<10 FPS), and it crashes after a few seconds of that.

Index microphone with pulseaudio

By default the Valve Index microphone will probably not work.

Add default-sample-rate = 48000 to ~/.config/pulse/daemon.conf or /etc/pulse/daemon.conf, then run pulseaudio -k to restart pulse.

See also:

Game crashes

If a VR game crashes, SteamVR will not properly shut down the session, and starting any game at that point will fail (the game will fail to create a VR session and crash). SteamVR must be restarted to fix this.

Delayed overlay rendering

All overlays, controller models and the SteamVR void (everything that SteamVR or the compositor renders) were several frames behind. This is nauseating in the SteamVR void, and just annoying when you are in a game. Game rendering is otherwise unaffected.

On Some Systems™️ this manifests as persistent crashes instead.

Fixed by adding "enableLinuxVulkanAsync" : false under "steamvr" : { in ~/.steam/steam/config/steamvr.vrsettings..

Rendering artifacts at edge of vision

The edge of the screens were flickering grey garbage data. It seems to be the part of the screen that is normally supposed to be completely black, as it's barely visible.

Putting RADV_DEBUG=zerovram %command% in the SteamVR launch options fixes this.

SteamVR desktop overlay

Alternatives

Reliability

Sometimes the desktop overlay just fails to start (says "no desktop found"), usually works to just try again a few times. Many people have this issue always and cannot use it at all.

Multi-monitor usability

Only one monitor is visible at a time, depending on the cursors location. The cursor position is not mapped to where you are pointing, instead the full all-screen area (the rectangle containing all screens) is scaled down to be the same width as the overlay, and cursor position is mapped on that area. This means movement is effectively multiplied by the number of screens you have (depending on their relative sizes) as well as heavily offset from where the laser points.

Full-body trackers

If any full-body trackers are on and connected, launching SteamVR will always fail to start the desktop view. This is especially annoying since Tundra trackers turn themselves on when you charge them.

The X11 bug (fixed)

libx11 issue 176 For several months after december 16, 2022, there was a bug in the latest version (in the arch repos) of libx11, that caused the SteamVR desktop overlay to cause crashes.

After opening the desktop a third time, or showing it for enough time, Steam would crash. Quite often SteamVR would also crash at that point, taking the open game with it.

Fun ChilloutVR side effect

If Steam crashed but SteamVR and ChilloutVR stayed open, it seemed fine (apart from the desktop overlay not working) until someone joined or left the world, or I switched world. It seems like when changing the number of connected users, ChilloutVR tries to tell Steam about it to change the rich presence (even if that is disabled), and then crashes if Steam is no longer running.

ChilloutVR

Video players

  • Video players do not work for all formats.
  • They render upside-down.
  • Attempting to pause only stops the video, not the audio.
  • The audio plays in its own channel so the volume can't be controlled in-game, and it will always start at the default volume (100%, which is loud)
  • Skipping in the video does nothing

Video players can be disabled completely with --disable-videoplayers in the ChilloutVR launch options.

MelonLoader

Official MelonLoader Linux installation instructions for Proton games

On Some Systems™️, MelonLoader (and the modded game) will not start unless you put --melonloader.hideconsole in the launch options. (I have been told not everyone needs this)

Note: I currently (May 2023) use MelonLoader v0.5.5. I have had mixed success with different versions so I tend not to keep it up to date. If one version doesn't work it may be worth trying another one.

The 2-minute crash

Several things can cause ChilloutVR to crash about 2 minutes in to the session, with nothing useful in the logs. This can happen in VRChat too, but was less predictable there and seemed to come and go with updates.

Config files

On Some Systems™️, having any config files in the games config directory (see below) will cause this crash. Removing them or replacing all of them with symlinks to /dev/null works, but then you no longer have settings saved. I made a mod (ConfigHack) that loads the main settings from a different file instead, and this works (for me) for some reason.

The config directory is usually ~/.steam/steam/steamapps/compatdata/661130/pfx/drive_c/users/steamuser/AppData/LocalLow/Alpha\ Blend\ Interactive/ChilloutVR/

In combination with the Zen kernel

Since I switched to linux-zen, having config files no longer caused the 2-minute crash. However, ChilloutVR started leaking around 0.3GB per minute, and the kernel seemed to be using another 10GB for no apparent reason. Thus I reverted to using /dev/null symlinks and the ConfigHack mod.

UIExpansionKit

On Some Systems™️, using the UIExpansionKit mod (which many mods depend on) would cause the crash. Switching to the linux-zen kernel and setting the file descriptor limit (on Arch) made this no longer happen.

I first tried only setting the fd limit, which did not have any noticable effect, then switching to zen did fix it. It's possible you only need zen, I have not tried reverting the fd limit.

OVR Advanced Settings

OpenVR-AdvancedSettings source

Since switching to arch, the Steam release segfaulted on startup (this may have been fixed since). Using the windows version through Proton worked somewhat, but inverted the Y position of the cursor when navigating the menu.

Solution in the end was to compile it myself, this worked, possibly because it's running a normal binary instead of an AppImage.