SlimeVR / SlimeVR-OpenVR-Driver

SlimeVR driver for OpenVR
Apache License 2.0
204 stars 46 forks source link

Linux SteamVR broken slimevr: bridge error: No such file or directory #43

Closed Links2004 closed 2 months ago

Links2004 commented 6 months ago

currently using SlimeVR on Linux with SteamVR is not possible.

error message from vrserver:

slimevr: bridge error: No such file or directory

after some debugging I noticed that this comes from the fact that the vrserver is started in a chroot like envirement and has no access to the host files system. this means /tmp and /run/user/1000 are not the same as the host system sees, and as a result the sockets from the slimeVR server are not there from the point of view of vrserver or the slimevr driver.

How to easy see the chroot mounts:

cat /proc/$(pidof vrserver)/mounts

How to explore the chroot isolation:

sudo nsenter -m -t $(pidof vrserver) bash
ImUrX commented 6 months ago

I haven't heard anyone else using the driver in linux having this issue :thinking:

Links2004 commented 6 months ago

not sure it its new first time trying to use SlimeVR. currently experimenting with it, looks like the $HOME dir can still be accessed, cooking a custom build currently to move the paths there.

I am currently running Arch linux with SteamVR 2.2.1 Beta.

ImUrX commented 6 months ago

I just entered latest stable SteamVR with nsenter -e because what we care about is the environment, and XDG_RUNTIME_DIR does exist

ImUrX commented 6 months ago

Latest beta also has an existing XDG_RUNTIME_DIR, I'm using NixOS Unstable

Links2004 commented 6 months ago

nsenter -e will only give you the env from the process, -m ist the importend flag

ImUrX commented 6 months ago

I can also ls it in latest beta

Links2004 commented 6 months ago

intressting, may the vrserver is started diffrently based on the host system, not sure what valve is doing.

with a custom build and the sockets moved to $HOME/.local/share/slimevr/SlimeVRDriver its working correctly. will look in to creating a patch that allows to overrides the PATH when needed.

ImUrX commented 6 months ago

btw just curious, you are using steam-runtime and not the flatpak/snap, right?

Links2004 commented 6 months ago

no flatpak/snap in use.

steam comes from the arch pkg https://archlinux.org/packages/multilib/x86_64/steam/

ImUrX commented 6 months ago

btw i asked for someone with SteamVR experience to check this issue. I'm not against adding custom socket dir support, but I would like to know why you are having this issue.

Links2004 commented 6 months ago

sure, have not found the place where the isolation from the host system happens yet. happy to provide more info of my system / environment if needed.

Vixea commented 6 months ago

Could you try to run SteamVR with Steam play none as the compatibility layer(install using protonup-qt) https://github.com/Scrumplex/Steam-Play-None - for instructions

Vixea commented 6 months ago

Reason being is SteamVR is running under Valve's runtime and they may have changed how it works in this beta this would confirm that's the case

Links2004 commented 6 months ago

with Steam-Play-None SteamVR UI is not starting.

Vixea commented 6 months ago

Do you have all the dependencies needed to see that try installing steam-native-runtime

Links2004 commented 6 months ago

tried, but same result.

steps:

Vixea commented 6 months ago

Run steam in a terminal and send the output here

Vixea commented 6 months ago

You have tried previous versions right and only 2.2.1 is affected?

Links2004 commented 6 months ago

tested with Beta and Release Release does not start at all Steam-Play-None or not.

Steam-Play-None + Beta

from looking at the logs I think this are the core problems:

libcef.so: cannot open shared object file: No such file or directory
/usr/bin/zenity: symbol lookup error: /usr/lib/libharfbuzz.so.0: undefined symbol: FT_Get_Transform
/home/links/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrmonitor: error while loading shared libraries: libsteam_api.so: cannot open shared object file: No such file or directory
/bin/sh\0-c\0/home/links/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=250820 -- /home/links/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/links/.local/share/Steam/compatibilitytools.d/Steam-Play-None-main'/launch.sh waitforexitandrun  '/home/links/.local/share/Steam/steamapps/common/SteamVR/bin/vrstartup.sh'\0
vrstartup.sh[225616]: === Wed Dec 13 22:03:30 CET 2023 ===
vrstartup.sh[225616]: WARNING: launching in legacy LDLP scout, please use sniper SLR
vrstartup.sh[225616]: exec /home/links/.local/share/Steam/steamapps/common/SteamVR/bin/vrenv.sh /home/links/.local/share/Steam/steamapps/common/SteamVR/bin/vrstartup.sh
vrenv.sh[225616]: VRCOMPOSITOR_LD_LIBRARY_PATH=/home/links/.local/share/Steam/steamapps/common/SteamVR:/home/links/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/qt/lib:/home/links/.local/share/Steam/steamapps/common/SteamVR/bin/linux64:/home/links/.local/share/Steam/steamapps/common/SteamVR
vrenv.sh[225616]: exec /home/links/.local/share/Steam/steamapps/common/SteamVR/bin/vrstartup.sh
vrstartup.sh[225616]: WARNING: launching in legacy LDLP scout, please use sniper SLR
vrstartup.sh[225616]: call /home/links/.local/share/Steam/steamapps/common/SteamVR/bin/vrsetup.sh
vrsetup.sh[225650]: Detected scout LDLP runtime.
/usr/bin/zenity: symbol lookup error: /usr/lib/libharfbuzz.so.0: undefined symbol: FT_Get_Transform
vrsetup.sh[225650]: Error: user declined superuser request.
/usr/bin/zenity: symbol lookup error: /usr/lib/libharfbuzz.so.0: undefined symbol: FT_Get_Transform
vrstartup.sh[225616]: exec /home/links/.local/share/Steam/steamapps/common/SteamVR/bin/vrstartup-helper.sh
vrstartup-helper.sh[225616]: exec /home/links/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrstartup
Using breakpad crash handler
Setting breakpad minidump AppID = 250820
Forcing breakpad minidump interfaces to load
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
12/13 22:03:30 Init: Installing breakpad exception handler for appid(250820)/version(2.2.1)/tid(225616)
Using breakpad crash handler
Setting breakpad minidump AppID = 250820
Forcing breakpad minidump interfaces to load
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
12/13 22:03:30 Init: Installing breakpad exception handler for appid(250820)/version(2.2.1)/tid(225723)
VR Server (v1702410427)

Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561197990129926 [API loaded yes]
Steam_SetMinidumpSteamID:  Setting Steam ID:  76561197990129926
vrcompositor-launcher.sh[225746]: === Wed Dec 13 22:03:33 CET 2023 ===
vrcompositor-launcher.sh[225746]: Detected scout LDLP runtime.
vrcompositor-launcher.sh[225746]: exec /home/links/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher
Using vrcompositor capability proxy
Failed to raise ambient cap
Launching /home/links/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrcompositor
Using breakpad crash handler
Setting breakpad minidump AppID = 250820
Forcing breakpad minidump interfaces to load
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
12/13 22:03:33 Init: Installing breakpad exception handler for appid(250820)/version(2.2.1)/tid(225746)
Fossilize INFO: Overriding serialization path: "/home/links/.local/share/Steam/steamapps/shadercache/250820/fozpipelinesv6/steamapprun_pipeline_cache".
12/13 22:03:34 Init: Installing breakpad exception handler for appid(250820)/version(2.2.1)/tid(225746)
assert_20231213220334_4.dmp[225782]: Uploading dump (out-of-process)
/tmp/dumps/assert_20231213220334_4.dmp
Using breakpad crash handler
Setting breakpad minidump AppID = 250820
Forcing breakpad minidump interfaces to load
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
12/13 22:03:34 Init: Installing breakpad exception handler for appid(250820)/version(2.2.1)/tid(225796)
./vrwebhelper: error while loading shared libraries: libcef.so: cannot open shared object file: No such file or directory
Using breakpad crash handler
Setting breakpad minidump AppID = 250820
Forcing breakpad minidump interfaces to load
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
12/13 22:03:34 Init: Installing breakpad exception handler for appid(250820)/version(2.2.1)/tid(225812)
This application failed to start because it could not find or load the Qt platform plugin "xcb".

Available platform plugins are: xcb.

Reinstalling the application may fix this problem.
crash_20231213220334_2.dmp[225815]: Uploading dump (out-of-process)
/tmp/dumps/crash_20231213220334_2.dmp
assert_20231213220334_4.dmp[225782]: Finished uploading minidump (out-of-process): success = yes
assert_20231213220334_4.dmp[225782]: response: CrashID=bp-38816eec-d988-4446-8d40-5a4bd2231213
assert_20231213220334_4.dmp[225782]: file ''/tmp/dumps/assert_20231213220334_4.dmp'', upload yes: ''CrashID=bp-38816eec-d988-4446-8d40-5a4bd2231213''
crash_20231213220334_2.dmp[225815]: Finished uploading minidump (out-of-process): success = yes
crash_20231213220334_2.dmp[225815]: response: CrashID=bp-0d472697-b2b8-4c83-8744-4ac712231213
crash_20231213220334_2.dmp[225815]: file ''/tmp/dumps/crash_20231213220334_2.dmp'', upload yes: ''CrashID=bp-0d472697-b2b8-4c83-8744-4ac712231213''
./vrwebhelper: error while loading shared libraries: libcef.so: cannot open shared object file: No such file or directory
Using breakpad crash handler
Setting breakpad minidump AppID = 250820
Forcing breakpad minidump interfaces to load
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
12/13 22:03:36 Init: Installing breakpad exception handler for appid(250820)/version(2.2.1)/tid(225857)
This application failed to start because it could not find or load the Qt platform plugin "xcb".

Available platform plugins are: xcb.

Reinstalling the application may fix this problem.
crash_20231213220336_2.dmp[225866]: Uploading dump (out-of-process)
/tmp/dumps/crash_20231213220336_2.dmp
Gtk-Message: 22:03:37.021: Failed to load module "colorreload-gtk-module"
Gtk-Message: 22:03:37.021: Failed to load module "window-decorations-gtk-module"
steam.sh[225880]: Running Steam on endeavouros rolling 64-bit
steam.sh[225880]: STEAM_RUNTIME is disabled by the user
steam.sh[225880]: Can't find 'steam-runtime-check-requirements', continuing anyway
tid(225967) burning pthread_key_t == 0 so we never use it
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561197990129926 [API loaded yes]
Steam_SetMinidumpSteamID:  Setting Steam ID:  76561197990129926
/bin/sh\0-c\0/home/links/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=1009850 -- /home/links/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/links/.local/share/Steam/steamapps/common/OVR_AdvancedSettings/run.sh'\0
rcelyte commented 6 months ago

You can tell the Steam Linux Runtime to expose SlimeVR's IPC file within its sandbox by putting PRESSURE_VESSEL_FILESYSTEMS_RW=$XDG_RUNTIME_DIR/SlimeVRDriver %command% in SteamVR's launch options. This is the same issue Monado runs into for Steam games, as documented at https://gitlab.com/znixian/OpenOVR#linux-specific-info

Edit: if it wasn't clear, adding that launch option fixes SlimeVR

Vixea commented 6 months ago

anyway if you truely believe this to be a steamvr issue you can always report it here(the not launching part(https://github.com/ValveSoftware/SteamVR-for-Linux/)

Links2004 commented 6 months ago

yes, can confirme adding PRESSURE_VESSEL_FILESYSTEMS_RW=$XDG_RUNTIME_DIR/SlimeVRDriver %command% makes it work with out moding the socket dir, may its a good idea to add this to the docu?

I dont think that Steam-Play-None is supported by Valve , they have ther runtime for a reason, If not they need to support any OS with any version of dependenys which sound bad ;)

ImUrX commented 6 months ago

can you report this to https://github.com/ValveSoftware/steam-runtime/issues please, I honestly feel like /run should be mounted from the system, people use it to override LD_PRELOAD for TF2 for example qwq