Skip to content

system: report HMD tracking system, model, and manufacturer strings (Serious Sam 3, seemingly fixes #232 too) - #394

Open
skryvel wants to merge 1 commit into
Supreeeme:mainfrom
skryvel:hmd-identity-strings
Open

system: report HMD tracking system, model, and manufacturer strings (Serious Sam 3, seemingly fixes #232 too)#394
skryvel wants to merge 1 commit into
Supreeeme:mainfrom
skryvel:hmd-identity-strings

Conversation

@skryvel

@skryvel skryvel commented Aug 2, 2026

Copy link
Copy Markdown

Game in question: Serious Sam 3 VR: BFE via Steam and Proton CachyOS from July
Hardware: Quest 3 on KDE Wayland via WiVRN and opensource AMD drivers
Prior status: shows some Vive looking controllers, asks to press right trigger, nothing happens with any button
Current status: fully playable, both controllers, shows Oculus models
Maybe odd: some in-gameplay interface objects have a strong glow - maybe that's just how it is
Note: game complains about display driver, but allows it to be ignored and works fine
Code by: Fable 5


Some games read the HMD's TrackingSystemName/ModelNumber/ManufacturerName strings to decide which motion controller scheme to enable. When these come back empty, such games conclude no supported controllers are present and ignore all controller input (menus still work via mouse) while rendering their fallback wand models.

Report Oculus-style identity strings for the HMD, consistent with the tracking system name already reported for the Touch controller profiles.

Some games read the HMD's TrackingSystemName/ModelNumber/ManufacturerName
strings to decide which motion controller scheme to enable. When these
come back empty, such games conclude no supported controllers are present
and ignore all controller input (menus still work via mouse) while
rendering their fallback wand models.

Report Oculus-style identity strings for the HMD, consistent with the
tracking system name already reported for the Touch controller profiles.
@skryvel

skryvel commented Aug 8, 2026

Copy link
Copy Markdown
Author

Questioned in another PR, the hardcoding of oculus etc.

OpenComposite reference. Also apparently these games read the HMD identity strings once at startup and never re-query. In my traces the game asked for TrackingSystemName ~14 seconds before the runtime bound any controller interaction profile, so at answer time there's no profile to pull from. OpenComposite probably had this too and hardcodes "oculus"/"Oculus". Games that identify controllers still get the profile-accurate strings from the controller devices, this fixed string only feeds the HMD-sniffing path.

@skryvel skryvel changed the title system: report HMD tracking system, model, and manufacturer strings (Serious Sam 3) system: report HMD tracking system, model, and manufacturer strings (Serious Sam 3, seemingly fixes #232 too) Aug 8, 2026
@ImSapphire

Copy link
Copy Markdown
Contributor

I don't think it's a good idea to hard-code the Quest 3 properties here. One idea I had is to spin up a headless session in IVRClientCore::Init and create a dummy action set with a single binding, suggest bindings for all interaction profiles, call xrSyncActions, then cache the bound interaction profiles and destroy the headless session before continuing initialisation. Then we'd have the information available early when games request such properties immediately.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants