SteamVR on Linux

Tom Goddard
October 26, 2018

Here are instruction on how to setup SteamVR to work on Linux to use ChimeraX. I tried two Linux distibutions

Both worked and gave rendering as smooth as on Windows 10 for four test systems using an HTC Vive headset although there are several small problems.

These tests were done to help two labs at UC San Francisco (Matt Jacobson and Adam Frost) use ChimeraX VR to visualize molecular structures and electron microscopy density maps on their CentOS 7 desktop systems.


Almost all VR is on Windows 10. Using any Linux system for VR is likely to run into problems and is not advised unless it is essential to use the linux.

Installation is easier on Ubuntu than CentOS because the C++ library on CentOS 7 is too old to run the currently distributed SteamVR runtime. Also SteamVR room setup crashed on CentOS and required copying bounds files from a Windows machine.

Software and Hardware Tested

Setting up Virtual Reality on Ubuntu 18.04

  1. Install Ubuntu 18.04.1.
  2. Install Nvidia graphics drivers using Ubuntu Software Update graphical interface, the Additional Drivers tab.
  3. Install Steam using
    	  sudo add-apt-repository multiverse
    	  sudo apt install steam
    	  sudo apt install steam-devices
    	  sudo apt install libvulkan1
  4. Run steam from a shell, log into Steam account.
  5. Install SteamVR, switch to SteamVR beta by right clicking SteamVR within Steam, choosing Properties, then Betas tab.
  6. Plug HTC Vive headset into computer display port and usb, turn on hand controllers.
  7. Start SteamVR from within Steam. First try it said headset not detected. Quit SteamVR and started again and it came up correctly, headset and hand-controllers tracking.
  8. Run SteamVR room setup. I setup for room-scale.
  9. Install ChimeraX , run it, opened molecule and start VR with ChimeraX commands
    	  open 2gbp
    	  vr on

Setting up Virtual Reality on CentOS 7

  1. Setting up a test CentOS 7 system:
  2. Install Nvidia graphics drivers. I actually tried SteamVR with Mesa drivers but did not get it to work.
  3. Install Steam and SteamVR
  4. Use newer
  5. Start SteamVR

Problems using SteamVR on Linux

  1. Room setup crashes (CentOS 7 only)
  2. SteamVR failed to initialize warning (CentOS 7 only)
  3. Warning about Extended Mode. (CentOS and Ubuntu)
    	  SteamVR is in Extended Mode. Extended Mode is not recommended.
    	  For best results please switch to Direct Mode.
    	  [Dismiss]  [Enable Direct Mode]	
    Pressing Enable Direct Mode did not work. SteamVR did not restart. When I restarted it it gave the same Extended Mode warning. Pressed Dismiss. The steam vrcompositor log showed it is in fact in Direct Mode, and in later uses of SteamVR I did not see the Extended Mode warning on Ubuntu.
  4. SteamVR does not start automatically (Ubuntu and CentOS)
  5. Long delay restarting VR. (Ubuntu, did not check on CentOS) After quitting ChimeraX while in VR it sometimes took 30 seconds for StreamVR Home to start in the headset. During that time, starting ChimeraX VR again often caused ChimeraX to freeze for 30 seconds before starting, or in one case produced an error about another app launching in VR.

Performance of ChimeraX VR on Test Data

Performance of ChimeraX VR was perfectly smooth on the following four systems, identical to performance on Windows 10 using the exact same hardware.

  1. Opioids demo: Performance was smooth and as good as Windows showing 24 small protein structures with a button user interface to switch between them.
  2. Ribosome demo: Large molecular system. Worked smoothly as good as on Windows.
  3. Translation initiation factor and cryoEM map. Atomic model PDB 6caj and EMDB density map 7442. Zones, map contour level changes, bond rotation. All worked smoothly, same as Windows 10.
  4. 3D light microscopy crawling neutrophil. About 4 Gbytes of 3D lightsheet microscopy, time series of about 200 time points, shown as surfaces. Worked smoothly as in Windows.



I wrote more setup and debugging details, but many problems that I eventually solved. Ubuntu details. CentOS details.