Skip to content

Add support for Windows Mixed Reality controllers#130

Open
CheesecakeCG wants to merge 5 commits intoSupreeeme:mainfrom
CheesecakeCG:wmr-controller-support
Open

Add support for Windows Mixed Reality controllers#130
CheesecakeCG wants to merge 5 commits intoSupreeeme:mainfrom
CheesecakeCG:wmr-controller-support

Conversation

@CheesecakeCG
Copy link
Copy Markdown

@CheesecakeCG CheesecakeCG commented Jul 6, 2025

I've only added support for the original WMR controllers so far, and I haven't much tested outside of VRChat and ChilloutVR.

Also, the grip poses in Monado might be flipped... and the ones I'm using here are rotated wrong.
The offsets are now fixed in Beyley's rift-driver-tracking branch and Thaytan's dev-constellation-controller-tracking branch of Monado.

  • OG WMR Controller Support (mostly done)
  • Samsung Odyssey Controller Support
  • HP Reverb G2 Controller Support

I'll need other people to test the last two controllers.

@Supreeeme
Copy link
Copy Markdown
Owner

Feel free to split odyssey and reverb g2 support into separate PRs, if you'd like.

@CheesecakeCG CheesecakeCG force-pushed the wmr-controller-support branch from 4126f7f to 60bdb2d Compare July 23, 2025 19:44
@CheesecakeCG CheesecakeCG force-pushed the wmr-controller-support branch from 2f0d8c6 to 32f1b19 Compare August 1, 2025 17:08
@CheesecakeCG CheesecakeCG marked this pull request as ready for review August 6, 2025 03:11
Copy link
Copy Markdown
Owner

@Supreeeme Supreeeme left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These could use some simple verify_bindings tests. You can look at the ones in the other profiles for inspiration.

@toyowheelin
Copy link
Copy Markdown

I am not sure if this is a good place for this or not but I built Cheesecakes wmr-controller-support branch and tested it with Xplane11 and ended up with a crash. I was in communication with Supreme in Discord and they were thinking it was likely that Cheesecakes branch just needs to be rebased. I would love to test and am hopeful that Cheesecake will see this and be able to do that. For reference this is the log from the crash https://bin.garudalinux.org/?d2bb0dfa11ef9f74#7uRhUQbjF928BVyHuLm8km9aXs7Cp8WRc6LBzE2YspYC

@CheesecakeCG CheesecakeCG force-pushed the wmr-controller-support branch from 5209b7d to d092b98 Compare October 4, 2025 04:26
@toyowheelin
Copy link
Copy Markdown

toyowheelin commented Oct 4, 2025

Unfortunately the rebase didn't help and resulted in the same error. https://bin.garudalinux.org/?11a46fbeba5363eb#BAPbEdpGxLu6gvtc8L7AZ5KZQaoYLyPU7XiYnNJQuG6 I will try to compile the default xrizer and make sure it works, as I have only ever used OpenComposite with Xplane11.
EDIT: Good/Bad news, default xrizer works great. So something is broken on the wmr-controller-support branch I guess. Log from default xrizer https://bin.garudalinux.org/?6166151fa5d4a6bc#BfL5Wfp4FAaJo8FUqNQDSAmJCAsG68yZQGzaBUvdynLt

@CheesecakeCG
Copy link
Copy Markdown
Author

@toyowheelin Which kind of controllers are you using? Reverb G2?

@toyowheelin
Copy link
Copy Markdown

I have a Samsung Odyssey + setup.

@toyowheelin
Copy link
Copy Markdown

Let me know if you need any more info to look into this, I would love to help make this work.

@CheesecakeCG
Copy link
Copy Markdown
Author

Let me know if you need any more info to look into this, I would love to help make this work.

I still need the render_model_name for the Samsung controllers, unless SteamVR doesn't actually show different models for those controllers. I'm not entirely sure where in the SteamVR driver that's defined though, I'm able to see it in the other drivers but not for WMR.

@Supreeeme
Copy link
Copy Markdown
Owner

It'd be nice to have these in, if you want to move Samsung support to a separate PR.

@CheesecakeCG CheesecakeCG force-pushed the wmr-controller-support branch from dedf0c2 to 4876e0b Compare March 21, 2026 10:13
hare_ware added 3 commits March 21, 2026 06:28
Add basic support for first generation Windows Mixed Reality controllers

Enable Samsung Odyssey Controller and HP Controller extensions if they're available.

Add Samsung Odyssey controllers

Added tests (WIP)

Corrected values based on official drivers

Check for required extensions with WMR

Use escaped backslashes for Windows style path in WMR render_model_name

Formatting fixes

Get all tests to pass (non-functional)

Fixed botched rebase
@CheesecakeCG CheesecakeCG force-pushed the wmr-controller-support branch from 4876e0b to f2fcd7c Compare March 21, 2026 10:29
@CheesecakeCG
Copy link
Copy Markdown
Author

CheesecakeCG commented Mar 21, 2026

I think the only issue left (unless another problem comes up when testing with Reverb G2 controllers) is that on the OpenVR side of things there's no distinction between the original WMR controllers and the Samsung reshelled version besides the render model and offsets.

Using #[serde(rename = "holographic_controller")] on SamsungOdysseyController action_manifest::ControllerType just makes serde unhappy...

I also squashed all the old commits to make rebasing easier.

Edit: I think I fixed the issue with Samsung controllers. Now it just needs users to test it.

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.

3 participants