r/MixedVR•
noneedtoprogram

Major update to Oculus Touch Steam Link SteamVR Driver

Hi Everyone,

​

For the few people who actually use this driver, which lets you use your Oculus Touch controllers with another headset (e.g. WMR or SteamVR native, or Oculus Quest over VirtualDesktop), I wanted to let you all know that I've just uploaded a big update to github mm0zct/Oculus_Touch_Steam_Link: SteamVR driver to enable Oculus Touch controllers with other headsets (github.com)

The original post is here:https://www.reddit.com/r/MixedVR/comments/l42zp4/announcing_oculus_touch_as_mixevr_controller

This update brings with it:

- reworked haptics, hopefully you should find the new implementation much better

- improved tracking prediction, offloaded to oculus by default and adds 10ms prediction by default (configurable)

- everything is now configurable by passing arguments to the ovr_test.exe standalone component, which can control many parts of the behaviour!

- the much requested ability to act as a tracker rather than as a controller

- the ability to support extra oculus controller "objects" as additional trackers for those of you with extra touch controllers (this is untested, as I don't own a 3rd controller).

​

The release now includes a batch script to launch ovr_test.exe in "tracker" mode, and uses some sane defaults for regular controller mode if run without any arguments.

​

The ovr_test.exe is still dumber than a bag of bricks though, if you give it arguments you have to specify everything, in the correct order, here's the help output you'll get from the program:

​

Welcome to oculus_touch_link, this program provides the input and haptic link to the stream driver, as well as passing confuguration data

You can provide this program with arguments to specify:

Render to Oculus headset y/n ("n" must be used with ovr_dummy.exe)

VR "Universe" ID, 0=Invalid, 1=Oculus, 31=Recommended with VirtualDesktop/ALVR

Manufacturer name: Oculus or Oculus_link (or HTC for trackers)

Tracking system name: oculus or oculus_link (or lighthouse for trackers)

Perform tracking prediction manually in-driver (n= ask oculus do the prediction) y/n

Extra prediction time (ms) for example 11.1 for 1 frame at 90fps

All controllers are tracked objects y/n

​

This program is super dumb and expects all of the arguments or none (for defaults), suggested invocations:

ovr_test.exe n 1 Oculus oculus n 10 n (must be used with ovr_dummy.exe)

ovr_test.exe y 1 Oculus oculus y 10 n (does not require ovr_dummy.exe, may not work on multimonitor setups)

ovr_test.exe y 31 Oculus_link oculus_link n 10 n

ovr_test.exe n 31 Oculus_link oculus_link n 10 n(default)

​

Sorry it's still not the most user friendly, and the code's a hacky mess - I struggle to find time to work on it as it is so I try and make the most of it working on functionality. Any pull requests to tidy shit up or make life more user friendly would be appreciated!

​

Of course the one big outstanding issue is the requirement to physically keep the cv1 headset alive by some mechanical means, there are a few solutions, but I haven't got a software hack for the oculus driver so no software workaround yet. If you have one that really works please tell us!

u/Mugendon has just shared a way in software to avoid the headset going to sleep too, although in my testing it makes it very laggy, maybe good enough as body trackers, but not for controllers. https://www.reddit.com/r/MixedVR/comments/pxu4uj/keep_rift_cv_1_from_going_idle_when_only_using/

My current solution is to install an app on my phone called "periodic vibration", set it to 2 minute intervals, and put it in the cv1 headset to Velcro strap. The vibration keeps it awake.

For first time setup u/PumkinSpiceTrukNuts very kindly wrote a nice setup guide https://github.com/PumkinSpice/MixedVR/wiki/MixedVR-CV1-Touch

Any feedback is always welcome of course, enjoy the update! :)

Edit: in case anyone is wondering, I have no problem S/SS ranking expert songs in beatsaber with this setup (any problems SS ranking are entirely mine for not being good enough 😆 )

Posted Sep 29, 2021, 11:13 PM UTC · edited

1937
Mugendon•

Thank you very much for all the work you put into the development of the driver.

6
LSTRamen•

Im actually really dumb, how exactly do i get this to work? Do i run dummy and then test? Do i run just one if them? Like how do i do that?

1
LSTRamen•

I have two sets of touch controllers so how would i go about getting those on there as well? If you could help thatd be much appreciated!

1
noneedtoprogramOP•

Hi, sorry I assumed anyone reading this would be already familiar with the setup guide linked in the main sub sticky. You can register your extra touch controllers I the oculus setup as vr "objects", although reports suggest that only one might work correctly. My driver should then report them to steam as generic trackers, although I don't have any extra controllers to test this with.

By default you should run both dummy and test applications, order is unimportant, and you need to register the driver with steam vr. Sometimes simply copying it into the right place and restarting steam works, sometimes you need to execute a special command. This is detailed in the other posts :-)

1
LSTRamen•

Alright, how would i register the drivers with steam?

1
noneedtoprogramOP•
1
hobofors•

Thank you so much for this!

1
snozburger•

Thank you!

1
hobofors•

I've noticed a new possible bug using this with Half Life Alyx. After loading shells into the shotgun the CV1 controllers stop responding to button presses or trigger/grip pulls for about a minute and the right controller haptics buzz continuously during this time. The tracking still works fine. The same thing often happens when firing the SMG full auto. When using the HP controllers the problem does not occur. I wonder if anyone else can reproduce this.

1
noneedtoprogramOP•

Thanks for the heads up, my 3070fe should arrive today at last so I'll give Alyx a spin this week, sounds like I've messed up my comm buffer. You do have the dummy program running to block oculus menu interaction right?

1
hobofors•

Yes I have the dummy program running

1
noneedtoprogramOP•

Ok, I'll eyeball the code today and see if I can spot something fishy. Thanks

1
noneedtoprogramOP•

Hi u/hobofors, I've found the problem, there's a bug in Alyx (and ovr_test doens't handle it gracefully). The game generates a haptic event of duration -1s when you load the shell into the shotgun, which locked up ovr_test's haptic insertion code. I've updated it on github, you should be able to just grab the latest ovr_test.exe and everything will be good :)

2
vburnin•

Is there a launch option that will only enable 3rd touch controller as tracker? I use cv1 as main headset with quest 2 touch as leg trackers through alvr (tracking reference only). The program I use now, LIVVRObjectServer is buggy and sets the 3rd touch as a LIV tracker instead of a generic tracker which causes issues with some games

1
noneedtoprogramOP•

Not today, but very easy to add, just need to tell it not to enable the main controllers. You could either do it yourself by commenting out a couple of lines and building it yourself, or you can wait a few days for me to get round to adding it.

1
vburnin•

Thank you, I'll try, my C++ knowledge is a little rusty, I mostly code in Python now. So you'll probably beat me to it

1
noneedtoprogramOP•

There's a #define on line 11 you can set to 0, rebuild the.dll, and you should be good to go https://github.com/mm0zct/Oculus_Touch_Steam_Link/blob/main/CustomHMD/OculusTouchLink.cpp#L11

:-)

I'll add it as a feature as soon as I can.

1
vburnin•

Looks like everything works, thank you. Though the vr object is in a different universe from the other cv1 stuff, but everything is aligned, maybe it's supposed to be like this

1
OrangeW•

How do I get it to actually recognise my third touch controller? I have it set up as a VR Object in Oculus, but it ovr_test.exe only picks up my L and R hand controllers

1
noneedtoprogramOP•

You might need to download the very latest copy of ovr_test.exe and the.dll since I fixed some things but didn't move them to the "release" copy. Then your third controller should appear as a steam vr tracker like a vive puck.

https://github.com/mm0zct/Oculus_Touch_Steam_Link/blob/main/ovr_test/x64/Release/ovr_test.exe

https://github.com/mm0zct/Oculus_Touch_Steam_Link/blob/main/CustomHMD/Release/x64/driver_OculusTouchLink.dll

1
OrangeW•

A+ response time!

Unfortunately, still no luck. FWIW, I'm using Index + Index cons (with accompanying lighthouses), with 3 Oculus Touch controllers.

1
OrangeW•

Update:

While ovr_test.exe doesn't pick up/print the third controller (only displays lhand, rhand), it does however function normally in SteamVR after a restart! Thank you!

1
noneedtoprogramOP•

Ah sorry I didn't realise you were expecting it to show up there, I don't print debug info there from the extra trackers (I can if it would be useful though) Glad it's working :-)

1
OrangeW•

One final issue, I'm not sure whether this is an issue relating to the driver, or with OpenVR Space Calibrator, but with all three trackers appearing in SteamVR, there's no longer a target space for me to select in OpenVRSC - I can see the trackers, and I can see them rotate, but they are on the left-hand side, instead of the right-hand side.

1
CodeVulp•

Hey the (old) headset itself is tracking in steamVR. In older versions I’m pretty sure it didn’t do this. It’s not a huge issue but in something like VRchat it treats the headset (CV1) as a vive tracker or extra controller. And I can see the model for the hmd in steam vr as well.

It kinda breaks the body IK because it thinks the headset is a hip tracker even though it’s halfway across the room.

Anyway to get steam vr to stop tracking it? I’m not sure if I saw it mentioned anywhere, sorry if I missed that and I’m asking the obvious lol.

Edit: downloaded the old/original versions of the drivers from the original post for now, the single exe one. Works but if I understand it the newer drivers/.exes are more efficient, especially the dummy renderer/exe? Oh well. Anyway seriously thanks for all your work, it’s amazing! <3

E: restarted steam vr after calibrating and now the controllers are missing entirely lol. Spoke to soon, oh well. I’ll get it to work eventually :p it’s temperamental I guess, working? Performance is strange

1
noneedtoprogramOP•

Hi, you can disable the headset tracking with a command line argument. You can take the run with external tracking.bat file as an example :-)

Sorry I've not been updating reddit so much with the recent changes, just discussing it on the discord for the vr space calibrator. The headset was added at the request of someone who is using it as a hip tracker

1
CodeVulp•

No worries, pretty sure I got it figured out. Didn’t think to check the .bat files, go figure. Can’t claim to know what some of the options really mean, but seems to be working well now. Performance is all over the place but I’m not sure I can blame that on anything other than having to run 2 HMDs at once and steam throwing a fit lol.

Only issue I’ve run into testing out my library is boneworks, the buttons don’t track, but I think that might be the game instead of the driver.

Anyway thanks for the reply, actually helped a ton! Also would’ve never thought to join the discord (didn’t even know it existed :p). Genuinely thanks for everything!

1