A dummy driver is useful for launching SteamVR for testing without any actual VR equipment.
The dummy driver is defined in /home/<user>/.local/share/Steam/config/steamvr.vrsettings.
Here is an example of a working dummy driver configuration:
{
"jsonid" : "vrsettings",
"steamvr" : {
// "ipd": 0.0635,
// "forcedDriver": "null",
// "forcedHmd": "",
// "requireHmd": false,
// "displayDebug": false,
// "enableDistortion": true,
// "displayDebugX": 0,
// "displayDebugY": 0,
// "sendSystemButtonToAllApps": false,
// "loglevel": 3,
// "background": "backgrounds/image_%d.png", (now requires fully qualified path)
// "backgroundCameraHeight": 1.6,
// "backgroundDomeRadius": 10.0, (0.0 == Infinite)
// "directMode": false,
// "usingSpeakers": true, (only works in some Unity games current)
// "speakersForwardYawOffsetDegrees": 90.0,
// "renderTargetMultiplier": 1.0
// ^ Make sure your last entry does not include a trailing comma (use jslint when in doubt to verify format).
},
"driver_lighthouse": {
// "disableimu": false,
// "usedisambiguation": "tdm",
// "disambiguationdebug": 0,
// "primarybasestation": 0,
// "lighthousename": "",
// "maxincidenceangledegrees": 60.0,
// "uselighthousedirect": true,
// "dbhistory": false
},
"driver_null" : {
// drivers are searched in alphabetical order, so you may need steamvr.forcedDriver="null" as well
"enable": true,
"id": "Null Driver",
"serialNumber": "Null 4711",
"modelNumber": "Null Model Number",
"windowX": 100,
"windowY": 100,
"windowWidth": 1920,
"windowHeight": 1080,
"renderWidth": 1344,
"renderHeight": 1512,
"secondsFromVsyncToPhotons": 0.1,
"displayFrequency": 90
},
"version" : "1"
}Valve notes:
If you have other steamvr plugins intalled, e.g. the osvr plugin in
/usr/lib/openvr/osvr/, remove it temporarily to avoid with annoying behavior like slow osvr startup:~/.local/share/Steam/SteamApps/common/SteamVR/bin/linux64/vrpathreg removedriver /usr/lib/openvr/osvrIf you do want to use it later, enable it again:
~/.local/share/Steam/SteamApps/common/SteamVR/bin/linux64/vrpathreg adddriver /usr/lib/openvr/osvr
Christoph Haag warns:
Do NOT follow the comment and uncomment
"forcedDriver": "null". It will result in error 126 for some reason.
Log files have been written to: /data/src/haskell/Simula/.stack-work/logs/
-- While building custom Setup.hs for package Simula-0.0.0 using:
/data/.stack/setup-exe-cache/x86_64-linux-nix/Cabal-simple_mPHDZzAJ_2.0.1.0_ghc-8.2.2 --builddir=.stack-work/dist/x86_64-linux-nix/Cabal-2.0.1.0 build lib:Simula exe:simulavr --ghc-options " -ddump-hi -ddump-to-file -fdiagnostics-color=always"
Process exited with code: ExitFailure 1
Logs have been written to: /data/src/haskell/Simula/.stack-work/logs/Simula-0.0.0.log
Configuring Simula-0.0.0...
Preprocessing library for Simula-0.0.0..
Building library for Simula-0.0.0..
[ 1 of 20] Compiling Paths_Simula ( .stack-work/dist/x86_64-linux-nix/Cabal-2.0.1.0/build/autogen/Paths_Simula.hs, .stack-work/dist/x86_64-linux-nix/Cabal-2.0.1.0/build/Paths_Simula.o ) [flags changed]
[ 2 of 20] Compiling Simula.BaseCompositor.Event[boot] ( src/Simula/BaseCompositor/Event.hs-boot, .stack-work/dist/x86_64-linux-nix/Cabal-2.0.1.0/build/Simula/BaseCompositor/Event.o-boot ) [flags changed]
[ 3 of 20] Compiling Simula.BaseCompositor.SceneGraph[boot] ( src/Simula/BaseCompositor/SceneGraph.hs-boot, .stack-work/dist/x86_64-linux-nix/Cabal-2.0.1.0/build/Simula/BaseCompositor/SceneGraph.o-boot ) [flags changed]
[ 4 of 20] Compiling Simula.BaseCompositor.Types ( src/Simula/BaseCompositor/Types.hs, .stack-work/dist/x86_64-linux-nix/Cabal-2.0.1.0/build/Simula/BaseCompositor/Types.o ) [flags changed]
[ 5 of 20] Compiling Simula.BaseCompositor.SceneGraph.Wayland[boot] ( src/Simula/BaseCompositor/SceneGraph/Wayland.hs-boot, .stack-work/dist/x86_64-linux-nix/Cabal-2.0.1.0/build/Simula/BaseCompositor/SceneGraph/Wayland.o-boot ) [flags changed]
[ 6 of 20] Compiling Simula.BaseCompositor.Geometry ( src/Simula/BaseCompositor/Geometry.hs, .stack-work/dist/x86_64-linux-nix/Cabal-2.0.1.0/build/Simula/BaseCompositor/Geometry.o ) [flags changed]
<command line>: can't load .so/.DLL for: libopenvr_api.so (libopenvr_api.so: cannot open shared object file: No such file or directory)
export NIXPKGS_ALLOW_UNFREE=1
find . -name ".stack-work" -type d -exec rm -r {} + 2>/dev/null
stack --nix clean
stack --nix-pure buildError output:
VR Path Registry node config is not an array VR Path Registry node log is not an array
In your /home/<user>/.config/openvr/openvrpaths.vrpath file you will find something like this:
{
"config" : null, (ref:config)
"external_drivers" : null,
"jsonid" : "vrpathreg",
"log" : null, (ref:log)
"runtime" : [ "/home/<user>/.local/share/Steam/steamapps/common/SteamVR/" ],
"version" : 1
}There you’ll need to change "config" to
"config" : [ "/home/<user>/.steam/steam/config" ],and "log" to
"log" : [ "/home/<user>/.steam/steam/logs" ],Error output:
/home/<user>/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrstartup: error while loading shared libraries: libopenvr_api.so: cannot open shared object file: No such file or directory
N/A. The cause of this is uncertain.
The issue was resolved later on for mysterious reasons.
Error output:
Unable to read VR Path Registry from /home/<user>/.config/openvr/openvrpaths.vrpath
N/A. Reason for error is unknown. Disappeared later on for me.
Error output:
/home/ludvig/.local/share/Steam/steamapps/common/SteamVR/bin/linux32/vrserver: error while loading shared libraries: libsteam_api.so: cannot open shared object file: No such file or directory sh: pidof: command not found Failed to execute process '/home/ludvig/.local/share/Steam/steamapps/common/SteamVR/bin/vrcompositor': 2
~/.steam/steam/ubuntu12_32/steam-runtime/run.sh is missing on NixOS and should contain:
#!/bin/bash
#
# This is a script which runs programs in the Steam runtime
# The top level of the runtime tree
TOP=$(cd "${0%/*}" && echo ${PWD})
# Make sure we have something to run
if [ "$1" = "" ]; then
echo "Usage: $0 program [args]"
exit 1
fi
# Note that we put the Steam runtime first
# If ldd on a program shows any library in the system path, then that program
# may not run in the Steam runtime.
export STEAM_RUNTIME="${TOP}"
host_library_paths=
if [ "${STEAM_RUNTIME_PREFER_HOST_LIBRARIES-}" != "0" ]; then
while read -r line; do
# If line starts with a leading / and contains :, it's a new path prefix
if [[ "$line" =~ ^/.*: ]]
then
library_path_prefix=`echo $line | cut -d: -f1`
host_library_paths=$host_library_paths$library_path_prefix:
fi
done <<< "$(/sbin/ldconfig -XNv 2> /dev/null)"
host_library_paths="$STEAM_RUNTIME/pinned_libs_32:$STEAM_RUNTIME/pinned_libs_64:$host_library_paths"
fi
steam_runtime_library_paths="$host_library_paths$STEAM_RUNTIME/i386/lib/i386-linux-gnu:$STEAM_RUNTIME/i386/lib:$STEAM_RUNTIME/i386/usr/lib/i386-linux-gnu:$STEAM_RUNTIME/i386/usr/lib:$STEAM_RUNTIME/amd64/lib/x86_64-linux-gnu:$STEAM_RUNTIME/amd64/lib:$STEAM_RUNTIME/amd64/usr/lib/x86_64-linux-gnu:$STEAM_RUNTIME/amd64/usr/lib"
if [ "$1" = "--print-steam-runtime-library-paths" ]; then
echo "$steam_runtime_library_paths"
exit 0
fi
export LD_LIBRARY_PATH="$steam_runtime_library_paths:${LD_LIBRARY_PATH-}"
exec "$@"
# vi: ts=4 sw=4 expandtab
nix-shell -p bash lsb-release usbutils procps --run 'steam-run bash -c "export PATH=$PATH ; ~/.local/share/Steam/steamapps/common/SteamVR/bin/vrmonitor.sh"'Error output:
Loading module '/nix/store/by05skki8asv19dqd4q5nawcl29sxsm2-weston-3.0.0/lib/libweston-3/x11-backend.so' Loading module '/nix/store/by05skki8asv19dqd4q5nawcl29sxsm2-weston-3.0.0/lib/libweston-3/gl-renderer.so' EGL client extensions: EGL_EXT_client_extensions EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses EGL_KHR_debug EGL_EXT_platform_wayland EGL_EXT_platform_x11 EGL_MESA_platform_gbm libEGL warning: DRI2: failed to authenticate libEGL warning: DRI2: failed to open swrast (search paths /run/opengl-driver/lib/dri) libEGL warning: DRI2: failed to open swrast (search paths /run/opengl-driver/lib/dri) failed to initialize display EGL error state: EGL_NOT_INITIALIZED (0x3001) sh: lsusb: command not found sh: lsusb: command not found sh: lsusb: command not found sh: lsusb: command not found sh: lsusb: command not found sh: lsusb: command not found sh: lsusb: command not found sh: pidof: command not found Failed to execute process '/home/<user>/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrserver': 2 sh: pidof: command not found Failed to execute process '/home/<user>/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrmonitor': 2 simulavr: VRInitError_IPC_ConnectFailedAfterMultipleAttempts CallStack (from HasCallStack): error, called at src/Simula/ViveCompositor/ViveCompositor.hs:416:41 in Simula-0.0.0-9QaZeZwgKYRCbbXYyycaaz:Simula.ViveCompositor.ViveCompositor
Good solution TBD. A hacky and risky way of solving this is running:
sudo rm -r /run/opengl-driver
./swrast.shThis solution may ruin your system (until reebot?)
Error output:
Loading module '/nix/store/by05skki8asv19dqd4q5nawcl29sxsm2-weston-3.0.0/lib/libweston-3/x11-backend.so'
Loading module '/nix/store/by05skki8asv19dqd4q5nawcl29sxsm2-weston-3.0.0/lib/libweston-3/gl-renderer.so'
EGL client extensions: EGL_EXT_client_extensions EGL_EXT_platform_base
EGL_KHR_client_get_all_proc_addresses EGL_KHR_debug
EGL_EXT_platform_wayland EGL_EXT_platform_x11
EGL_MESA_platform_gbm
libEGL warning: DRI2: failed to authenticate
warning: EGL_EXT_buffer_age not supported. Performance could be affected.
warning: neither EGL_EXT_swap_buffers_with_damage or EGL_KHR_swap_buffers_with_damage is supported. Performance could be affected.
EGL_KHR_surfaceless_context available
EGL version: 1.4 (DRI2)
EGL vendor: Mesa Project
EGL client APIs: OpenGL OpenGL_ES
EGL extensions: EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_create_context
EGL_KHR_create_context_no_error EGL_KHR_fence_sync
EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace
EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image
EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image
EGL_KHR_image_base EGL_KHR_no_config_context
EGL_KHR_reusable_sync EGL_KHR_surfaceless_context
EGL_KHR_wait_sync EGL_MESA_configless_context
EGL_MESA_drm_image
GL version: OpenGL ES 3.0 Mesa 17.3.3
GLSL version: OpenGL ES GLSL ES 3.00
GL vendor: VMware, Inc.
GL renderer: llvmpipe (LLVM 5.0, 128 bits)
GL extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays
GL_EXT_texture_compression_dxt1 GL_EXT_texture_format_BGRA8888
GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24
GL_OES_element_index_uint GL_OES_fbo_render_mipmap
GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives
GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_float
GL_OES_texture_float_linear GL_OES_texture_half_float
GL_OES_texture_half_float_linear GL_OES_texture_npot
GL_OES_vertex_half_float GL_EXT_texture_sRGB_decode
GL_OES_EGL_image GL_OES_depth_texture
GL_OES_packed_depth_stencil GL_EXT_texture_type_2_10_10_10_REV
GL_OES_get_program_binary GL_APPLE_texture_max_level
GL_EXT_discard_framebuffer GL_EXT_read_format_bgra
GL_EXT_frag_depth GL_NV_fbo_color_attachments
GL_OES_EGL_image_external GL_OES_EGL_sync
GL_OES_vertex_array_object GL_ANGLE_texture_compression_dxt3
GL_ANGLE_texture_compression_dxt5 GL_EXT_texture_rg
GL_EXT_unpack_subimage GL_NV_draw_buffers GL_NV_read_buffer
GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil
GL_EXT_draw_buffers GL_EXT_map_buffer_range GL_KHR_debug
GL_OES_depth_texture_cube_map GL_OES_required_internalformat
GL_OES_surfaceless_context GL_EXT_color_buffer_float
GL_EXT_separate_shader_objects GL_EXT_shader_integer_mix
GL_EXT_base_instance GL_EXT_compressed_ETC1_RGB8_sub_texture
GL_EXT_copy_image GL_EXT_draw_buffers_indexed
GL_EXT_draw_elements_base_vertex GL_EXT_polygon_offset_clamp
GL_EXT_texture_border_clamp GL_KHR_context_flush_control
GL_OES_copy_image GL_OES_draw_buffers_indexed
GL_OES_draw_elements_base_vertex GL_OES_texture_border_clamp
GL_OES_texture_stencil8 GL_EXT_blend_func_extended
GL_KHR_no_error GL_EXT_clip_cull_distance
GL_MESA_shader_integer_functions
GL ES 2 renderer features:
read-back format: BGRA
wl_shm sub-image to texture: yes
EGL Wayland extension: no
Using gl renderer
creating a keymap file for 55494 bytes failed: No such file or directory
Failed to create X11 input
sh: lsusb: command not found
sh: lsusb: command not found
sh: lsusb: command not found
sh: lsusb: command not found
sh: lsusb: command not found
sh: lsusb: command not found
sh: lsusb: command not found
sh: pidof: command not found
Failed to execute process '/home/<user>/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrserver': 2
sh: pidof: command not found
Failed to execute process '/home/<user>/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrmonitor': 2
simulavr: VRInitError_IPC_ConnectFailedAfterMultipleAttempts
CallStack (from HasCallStack):
error, called at src/Simula/ViveCompositor/ViveCompositor.hs:416:41 in Simula-0.0.0-9QaZeZwgKYRCbbXYyycaaz:Simula.ViveCompositor.ViveCompositor
WIP.