Jump to content

Trying to use Vive Trackers on ordinary Android smartphones.


Recommended Posts

Hi, I'm a software engineering student working on a personal project.


I'm looking to make an android application which tracks itself in real-time through the use of Vive Trackers. For this, I require that the Vive Tracker communicate directly to my android smartphone. I do not know how to proceed in getting this to work; so I am looking for advice for how I can achieve direct communication between Vive Tracker and Android Smartphone.

Up to this point, I've noticed that my Vive Trackers do not show up on Bluetooth, and from my research they use radio frequencies at the top of or beyond Bluetooth [1]. So, I'm not sure if a Bluetooth connection is possible. I've also attempted to use the included USB dongle paired to my Vive Tracker as a USB device connected to my phone via a USB OTG adapter. In this case, I found that, while android will acknowledge that a device it needs to power has connected, android does not give any indication that it's noticed the usb device as a watchman dongle for Vive Trackers. The dongle does, however, appear to receive power to communicate with the Vive Tracker as the tracker's status LED goes from blue, when the dongle is not connected to any device, to green, when the dongle is connected to my android phone via OTG like it would when connected to my desktop.

I've only completed 2/5 years as a software engineering student so I've got some blind spots in terms of typical software architecture. But I'd like to think that this problem may be caused by a lack of drivers to make use of the Vive Trackers on Android. I haven't got a clue if this is the correct diagnosis or how I would go about writing a driver for this purpose. So, I was hoping to see if anyone's got any advice for how I should proceed or pointers to useful resources - perhaps an SDK for interfacing with the vive trackers on android or documentation for what kind of data the Vive Tracker dongle expects and provides via USB.

All help and insight is much appreciated. 

Thank you for your time.


Referenced article:

[1] https://fccid.io/NM82PYV300/Test-Report/RF-Test-Report-3265249 Page 22 Table 4.3.7 Graph "Spectrum Plot Of Worst Value"

Link to comment
Share on other sites

@BeTangent - It's unfortunately not going to work. I'd recommend watching this video about how SteamVR tracking works.

In short, SteamVR tracked devices use something called a watchman board which does a bunch of proprietary witchcraft such as signal amplification and compression as described in that video. The output of the watchman board's IO is sent to the PC via specialized bluetooth receivers in the HMD/watchman USB dongle and then is uncompressed and decoded by the SteamVR runtime/compositor. This raw output is heavily proprietary due to the crazy compression Valve has implemented in order to ensure latency targets are met. You need the SteamVR runtime to decode it and the SteamVR runtime is Windows/Linux only and is not supported by any Android distro. It's a heavily proprietary tech stack. There have been several generations of watchman boards by now but the info in the video I linked it still more or less accurate from a high level prospective.

You basically need a windows PC running the SteamVR compositor in order to decode the data. You also need a watchman compatible Bluetooth receiver/dongle on the PC side - you can't just use a generic bluetooth receiver - it specifically needs to be a watchman dongle (i.e. the dongle that ships with the tracker). I suppose you could also theoretically use a Linux machine but your support won't be anywhere as robust as it will be on a Windows OS.

I think the standard approach here would be to host the SteamVR runtime on a PC, query OpenVR via a game engine (or a custom application), and then shoot that pose estimate over to the runtime that the android phone is hosting. Using a game engine's networking tools would the easiest approach.

  • Thanks 1
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...