protonscr

[FEATURE REQUEST] Print VR probing/detection logic from `drivermanager.cpp`, `CVRServer::LoadDriver(unsigned int, vr::EVRInitError*, int*)`

steamvropen bug
ValveSoftware/SteamVR-for-Linux#423 · opened 2021-01-27 by anadon · updated 2021-01-28 · 1 comments · github
Aanadon 2021-01-27 github

I'm still troubleshooting some timing related HMD detection bug, and one thing I've found that is crucial but unknown is the probing behavior. I'd like logging statements for that process made available through some sort of flag. Like what subsystems or paths is it looking, what options does it see, what does Steam VR think about each of those possible options and why?

Aanadon 2021-01-28 github

Here's my use case example collected from the web logger:

vrserver
lighthouse: version 1.16.4
vrserver
lighthouse: [DepthAugmentedPassthrough] supported on this system: 0
vrserver
lighthouse: Attached HID Devices:
vrserver
lighthouse:     No devices
vrserver
  driver lighthouse implements interfaces IVRSettings_003 ITrackedDeviceServerDriver_005 IVRDisplayComponent_002 IVRDriverDirectModeComponent_007 IVRCameraComponent_003 IServerTrackedDeviceProvider_004 IVRWatchdogProvider_001 IVRVirtualDisplay_002 IVRDriverManager_001 IVRResources_001 IVRCompositorPluginProvider_001 
vrserver
Loaded server driver lighthouse (IServerTrackedDeviceProvider_004) from /home/anadon/.steam/steam/steamapps/common/SteamVR/drivers/lighthouse/bin/linux64/driver_lighthouse.so
vrserver
Driver lighthouse has no suitable devices

There is a load failure on my system that is not explained. It happens sometimes, but occasionally works. I can't see into why it does or does not work. The crux of this bug lies in logging this Lighthouse driver's detection behavior. I don't have access to anything more granular than that.

Just a change to the signature of and couple of lines in CVRServer::LoadDriver(unsigned int, vr::EVRInitError*, int*) or CDriverManager::LoadDriver(unsigned int, CDriverManager::HmdDriverContext, vr::IVRDriverContext*).

Also looks like the actual logging details would need to be added in driver_lighthouse.so and might involve DisplayPortLinkInfo::DumpRawDataToLog() and LighthouseHmdDriver::OnHtcHmdDeviceConnect(&HtcHmdDeviceInfo_t).

I have things to do other than reverse engineer all this, but I really want to get Beat Saber working again.

Nothing extracted yet.