Jump to content

Direct HTC Vive Controller access


Recommended Posts


I need to use the HTC vive as a stand alone device in a project that i am working on. By stand alone i mean i need to connect through a C# application either via USB or wireless (if it has Bluetooth) and be able to detect button presses and trigger the vibration. I do not need and i do not expect the controller orientation to work. No other Vive hardware should be required for this to run as the user (of the pilot project) might take the controller anywhere.

I know this might not be supported, so any help or technical details you could share would mean a lot.

Thanks in advance.



Edited by bbirbo
Link to comment
Share on other sites

@bbirbo - This can be a very complex task depending on which technology layer you consider "direct access".

In short, the controller (and all SteamVR tracked devices for that matter) are built around something called a watchman core module - it's a specialized system board that ties together all of the I/O and does a bunch of proprietary black magic required to be tracked by Valve's proprietary base-statation technology. You're not exactly able to directly interface with the hardware per say, everything is mediated by the Watchman via the OpenVR SDK which serves as the official I/O pathway for interfacing with SteamVR hardware. Trying to interface directly with the hardware would fundamentally require some reverse engineering as the system is all inherently designed around proprietary technologies like the core module.

You'd get controller event actions via querying OpenVR APIs. The part of the documentation you need to focus on is specifically around vr::IVRSystem. In most cases, you'd either integrate the SteamVR/OpenVR SDK, either by enabling it in UE4 or integrating a plugin into Unity. For projects in custom engines, you'd integrate OpenVR's C++ native libraries. In both cases however, you'd need to have the SteamVR compositor acting as your runtime to pull the controller activity via API.

Edit: It sounds like you're also trying to skip using an HMD. SteamVR does support this technically (via a null driver) but the bigger issue here is that the bluetooth receivers that connect the controller to the PC are within the HMD. You'd either have to use the controller wired in via a MicroUSB data cable or you'd need to get ahold of a Steam controller dongle and modify the firmware to allow it to work with the controller (there isn't a ton of community resources around this as it's not a common use-case).

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...