FlipVR controller support for Monado instructions #138

Merged
NatOsaka merged 5 commits from flipvr-instructions into main 2025-08-25 03:52:39 -04:00
NatOsaka commented 2025-08-22 04:18:35 -04:00 (Migrated from gitlab.com)

Spex on Discord has created some instructions on how to get their custom Monado branch working that supports FlipVR controllers, which makes using these controllers within Resonite possible.

Spex on Discord has created some instructions on how to get their custom Monado branch working that supports FlipVR controllers, which makes using these controllers within Resonite possible.
NatOsaka commented 2025-08-22 04:22:25 -04:00 (Migrated from gitlab.com)

added 1 commit

  • 28fc0ec3 - Trying to fix the markdown errors

Compare with previous version

added 1 commit <ul><li>28fc0ec3 - Trying to fix the markdown errors</li></ul> [Compare with previous version](/lvra/lvra.gitlab.io/-/merge_requests/133/diffs?diff_id=1466664625&start_sha=fa91e7946db05ec184a41821c70bc745b82655db)
NatOsaka commented 2025-08-22 04:29:16 -04:00 (Migrated from gitlab.com)

added 1 commit

  • 6c6069d6 - Trying to fix the markdown errors2

Compare with previous version

added 1 commit <ul><li>6c6069d6 - Trying to fix the markdown errors2</li></ul> [Compare with previous version](/lvra/lvra.gitlab.io/-/merge_requests/133/diffs?diff_id=1466675010&start_sha=28fc0ec3c3871638187cd322e10d9e4bdff466e6)
hypevhs commented 2025-08-22 15:38:42 -04:00 (Migrated from gitlab.com)

Is there something Resonite-specific about FlipVR that warrants mentioning it on the Resonite page?

Is there something Resonite-specific about FlipVR that warrants mentioning it on the Resonite page?
NatOsaka commented 2025-08-23 03:31:01 -04:00 (Migrated from gitlab.com)

Yes. Without this branch, Resonite doesn't recognize the controllers at all

Yes. Without this branch, Resonite doesn't recognize the controllers at all
hypevhs commented 2025-08-24 14:32:32 -04:00 (Migrated from gitlab.com)

Yes but without this branch, the controllers wouldn't be recognized by VRChat or any other game either. So it's not really specific to Resonite.
We don't put WMR setup instructions in the Resonite page, for example. The game pages assume you have a working XR runtime.
Unless I'm misunderstanding something about the branch or Resonite, I'll remove this part and merge the rest

Yes but without this branch, the controllers wouldn't be recognized by VRChat or any other game either. So it's not really specific to Resonite. We don't put WMR setup instructions in the Resonite page, for example. The game pages assume you have a working XR runtime. Unless I'm misunderstanding something about the branch or Resonite, I'll remove this part and merge the rest
NatOsaka commented 2025-08-24 14:34:25 -04:00 (Migrated from gitlab.com)

I would keep it because Resonite doesn't recognize these controllers on Windows, but this specific branch seems to spoof it for Resonite on monado

I would keep it because Resonite doesn't recognize these controllers on Windows, but this specific branch seems to spoof it for Resonite on monado
hypevhs commented 2025-08-24 14:40:40 -04:00 (Migrated from gitlab.com)

Interesting!

The code changes don't mention Resonite specifically, so if it's spoofing it for Resonite, it's doing so implicitly or an unintentional side-effect.
Has this branch been tested on any other game e.g. VRChat?

Interesting! The code changes don't mention Resonite specifically, so if it's spoofing it for Resonite, it's doing so implicitly or an unintentional side-effect. Has this branch been tested on any other game e.g. VRChat?
NatOsaka commented 2025-08-24 14:42:34 -04:00 (Migrated from gitlab.com)

I don't know, but @PointerOffset may know as they did the branch. I'll also point them towards the thread in case they aren't pinged by this

Edit: I've reached out to them

I don't know, but @PointerOffset may know as they did the branch. I'll also point them towards the thread in case they aren't pinged by this Edit: I've reached out to them
hypevhs commented 2025-08-24 14:55:16 -04:00 (Migrated from gitlab.com)

What controller do they show up as in Resonite? Generic, Vive wands, or Index?
And does it require custom bindings JSON for Resonite or a xrizer branch or something?

What controller do they show up as in Resonite? Generic, Vive wands, or Index? And does it require custom bindings JSON for Resonite or a xrizer branch or something?
PointerOffset commented 2025-08-24 16:09:31 -04:00 (Migrated from gitlab.com)

So, I'll be honest, I'm not 100% certain why my Monado branch allows these controllers to work in Resonite and not in SteamVR. I have some thoughts I'd like to validate, but first I'll say my changes just add the controllers to Monado so they can function in-general. It just so happens to work for Resonite where SteamVR does not. I think it would be appropriate for this documentation to be about getting FlipVRs to work on Monado and mention "This is currently the only way to use these controllers in Resonite." as oppose to specifically documenting it as a workaround for Resonite.

Speaking to why this actually happens, the controllers present to Resonite as oculus_quest_controller using Monado according to my Resonite logs. Using SteamVR, they present as oculus_quest2_controller. With my Monado branch they work perfectly fine but in SteamVR only the button mappings work. Position/Rotation isn't tracked. As far as I can tell, this is because Resonite relies on SteamVR's Skeletal input data to properly track your in-game hands. In fact, you can start Resonite with the flag -LegacySteamVRInput and the controllers will track (with terrible offsets). This flag exists to compensate for SteamVR inputs without skeletal data.

The FlipVR drivers for SteamVR do not seem to provide this information and SteamVR doesn't compensate for that in controller emulation. So my guess is Resonite sees oculus_quest2_controllers without Skeletal input data through SteamVR under controller emulation.

I suspect Monado (or maybe OpenComposite/xrizer?) is providing Resonite with the expected Skeletal input data as part of its controller emulation. This isn't something I explicitly tried to add. I just added support for FlipVR controllers and this came with it as a consequence.

So, I'll be honest, I'm not 100% certain why my Monado branch allows these controllers to work in Resonite and not in SteamVR. I have some thoughts I'd like to validate, but first I'll say my changes just add the controllers to Monado so they can function in-general. It just _so happens_ to work for Resonite where SteamVR does not. I think it would be appropriate for this documentation to be about getting FlipVRs to work on Monado and mention "This is currently the only way to use these controllers in Resonite." as oppose to specifically documenting it as a workaround for Resonite. Speaking to why this actually happens, the controllers present to Resonite as `oculus_quest_controller` using Monado according to my Resonite logs. Using SteamVR, they present as `oculus_quest2_controller`. With my Monado branch they work perfectly fine but in SteamVR only the button mappings work. Position/Rotation isn't tracked. As far as I can tell, this is because Resonite relies on SteamVR's Skeletal input data to properly track your in-game hands. In fact, you can start Resonite with the flag `-LegacySteamVRInput` and the controllers will track (with terrible offsets). [This flag exists to compensate for SteamVR inputs without skeletal data.](https://wiki.resonite.com/Command_line_arguments#Forcing_specific_hardware) The FlipVR drivers for SteamVR do not seem to provide this information and SteamVR doesn't compensate for that in controller emulation. So my guess is Resonite sees `oculus_quest2_controller`s _without_ Skeletal input data through SteamVR under controller emulation. I suspect Monado (or maybe OpenComposite/xrizer?) is providing Resonite with the expected Skeletal input data as part of its controller emulation. This isn't something I explicitly tried to add. I just added support for FlipVR controllers and this came with it as a consequence.
PointerOffset commented 2025-08-24 17:08:29 -04:00 (Migrated from gitlab.com)

Also to answer your question @hypevhs about testing with other applications, I did a quick check to make sure and they do work as expected in VRChat with Monado on my branch. I had tested them months ago but I wanted to double check and, yeah, branch should just work generally for using FlipVRs on Monado. That's certainly the intent.

Also to answer your question @hypevhs about testing with other applications, I did a quick check to make sure and they do work as expected in VRChat with Monado on my branch. I had tested them months ago but I wanted to double check and, yeah, branch should just work generally for using FlipVRs on Monado. That's certainly the intent.
NatOsaka commented 2025-08-25 03:34:25 -04:00 (Migrated from gitlab.com)

I think it would be appropriate for this documentation to be about getting FlipVRs to work on Monado and mention "This is currently the only way to use these controllers in Resonite." as oppose to specifically documenting it as a workaround for Resonite.

I agree. This sounds like a more reasonable way to phrase this. I'll modify the branch to reflect this

> I think it would be appropriate for this documentation to be about getting FlipVRs to work on Monado and mention "This is currently the only way to use these controllers in Resonite." as oppose to specifically documenting it as a workaround for Resonite. I agree. This sounds like a more reasonable way to phrase this. I'll modify the branch to reflect this
hypevhs commented 2025-08-25 03:36:41 -04:00 (Migrated from gitlab.com)

Thank you for the detailed response!

Thank you for the detailed response!
NatOsaka commented 2025-08-25 03:37:37 -04:00 (Migrated from gitlab.com)

added 1 commit

Compare with previous version

added 1 commit <ul><li>968e5de9 - Updated wording</li></ul> [Compare with previous version](/lvra/lvra.gitlab.io/-/merge_requests/133/diffs?diff_id=1468335263&start_sha=6c6069d6a157f5c0e914b6ccdb99a0bcf94d7f13)
NatOsaka commented 2025-08-25 03:37:54 -04:00 (Migrated from gitlab.com)

It's been updated

It's been updated
hypevhs commented 2025-08-25 03:42:35 -04:00 (Migrated from gitlab.com)
Currently there is an experimental Monado branch that works with Shiftall FlipVR controllers. Instructions can be found [here](/docs/fossvr/monado/flipvr/). At the time of writing, this branch is the only way to use FlipVR controllers with Resonite, as they are not supported even through SteamVR on Windows.
```suggestion:-0+0 Currently there is an experimental Monado branch that works with Shiftall FlipVR controllers. Instructions can be found [here](/docs/fossvr/monado/flipvr/). At the time of writing, this branch is the only way to use FlipVR controllers with Resonite, as they are not supported even through SteamVR on Windows. ```
NatOsaka commented 2025-08-25 03:44:08 -04:00 (Migrated from gitlab.com)

changed this line in version 5 of the diff

changed this line in [version 5 of the diff](/lvra/lvra.gitlab.io/-/merge_requests/133/diffs?diff_id=1468343170&start_sha=968e5de9183c2d2713a810912733f6626bb34add#4785a9e3d65bd78dc19a053c34911b19c1912256_34_34)
NatOsaka commented 2025-08-25 03:44:08 -04:00 (Migrated from gitlab.com)

added 1 commit

Compare with previous version

added 1 commit <ul><li>2c6786af - Update to wording 2</li></ul> [Compare with previous version](/lvra/lvra.gitlab.io/-/merge_requests/133/diffs?diff_id=1468343170&start_sha=968e5de9183c2d2713a810912733f6626bb34add)
hypevhs commented 2025-08-25 03:52:40 -04:00 (Migrated from gitlab.com)

mentioned in commit ee023e1dc8

mentioned in commit ee023e1dc8a356bcd13fe299d58ba4ad5bd0b02b
hypevhs (Migrated from gitlab.com) merged commit ee023e1dc8 into main 2025-08-25 03:52:40 -04:00
hypevhs commented 2025-08-25 03:53:39 -04:00 (Migrated from gitlab.com)

Thanks for your contribution and patience!

Thanks for your contribution and patience!
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LinuxVR_Adventure/lvra.gitlab.io#138