HTC Vive Tracker
Developer Guidelines
Ver. 1.5

Version Control
Version Number
1.0

Version Date
2016.09.26

1.1

2016.12.05

1.2

2017.01.09

1.3

2017.01.19

1.4

2017.05.08

1.5

2017.07.17

Version Reason
Initial version
1. Use case image revised.
2. Pogo pin rearranged.
3. USB cable connection method deleted.
4. Data format revised.
1. SteamVR monitor images revised.
1. Design of Pogo Pin Pad revised.
2. Firmware upgrade revised.
1. Docking revised.
2. Data format revised.
3. Tracker on Unity or Unreal added.
4. FAQ added.
1. Low pass filter (LPS) configuration
added.

©2016-2017 HTC Corporation. All Rights Reserved. HTC, the HTC logo, Vive, the Vive logo,
and all other HTC product and services names are the trademarks or registered trademarks of
HTC Corporation and its affiliates in the U.S. and other countries.

Contents
Introduction ................................................................................................................................ 1
Use cases .............................................................................................................................. 1
Hardware requirements ............................................................................................................. 2
Interface ................................................................................................................................. 4Radio frequency (RF) ............................................................................................................. 5
Power ..................................................................................................................................... 6
Optics ..................................................................................................................................... 6
Docking .................................................................................................................................. 7
Docking embodiments .................................................................................................................... 7

Mechanical considerations ...................................................................................................... 11
Apparel size ......................................................................................................................... 12
Main feature ......................................................................................................................... 13
Docking mechanism ............................................................................................................. 14
Docking with standard tripod cradle head (w/o electric connection) .............................................. 14
Docking with side tightening wheel (w/ electric connection if needed) ........................................... 14

Accessory design ................................................................................................................. 15
Design of Pogo Pin Pad ................................................................................................................ 16

Coordinate system ............................................................................................................... 17
Software components .............................................................................................................. 24
System requirements ........................................................................................................... 24
Data format .......................................................................................................................... 26
Accessory integration ........................................................................................................... 29
Unity integration ................................................................................................................. 333
Tracker on Unity or Unreal ................................................................................................... 40
Firmware upgrade ................................................................................................................ 41
FAQ ......................................................................................................................................... 42

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Introduction
This document describes the development guidelines for VR accessory makers and content
developers. It contains information on how to use the HTC Vive Tracker to enable position
tracking and transmission of specific data (with or without the HTC Vive VR system).
Vive Tracker can pair with HTC’s wireless dongle or use its USB interface to transfer tracking
data to a PC. An accessory attached to Vive Tracker can:Simulate buttons of the Vive controller through the underlying Pogo pin.
Send specific data to a PC via the USB interface of Vive Tracker or use its original
approach to do it.

Use cases
There are five use cases supported by Vive Tracker.
Use Case 1: Track passive objects with a USB cable in VR. In this case, the dongle is not
used, and Vive Tracker connects with a PC by USB directly to transfer tracking data.

Figure: Use case 1 of Vive Tracker

Use Case 2: Track passive objects using a USB cable interface in VR, with the accessory
passing data to a PC through USB, BT/Wi-Fi or propriety RF. This case is similar to Use Case1, but the accessory transfers data to PC directly for a specific purpose based on its design.

Figure: Use case 2 of Vive Tracker

1

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Use Case 3: Track moving objects by wireless interface in VR. In this case, the dongle is used
to transfer tracking data from the Vive Tracker to a PC.

Figure: Use case 3 of Vive Tracker

Use Case 4: Track moving objects using a wireless interface in VR, with the accessory
passing data to a PC via USB, BT/Wi-Fi or propriety RF. This case is similar to Use Case 3,
but the accessory transfers data to/from a PC directly for a specific purpose based on its
design.

Figure: Use case 4 of Vive Tracker

Use Case 5: Track moving objects using a wireless interface in VR, with the accessory
simulating buttons of the Vive controller or passing data to a PC via the Vive Tracker. Thiscase is similar to Use Case 3, but the accessory connects with the Vive Tracker to transfer
data to/from a PC by Pogo pin or USB interface.

Figure: Use case 5 of Vive Tracker

Hardware requirements
2

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

This section describes hardware requirements for accessories used with the Vive Tracker inorder to enable position tracking and input of specific data for the HTC Vive VR system.
A compatible accessory may be attached to the Vive Tracker to send specific data to a PC
through the USB interface of the Vive Tracker. The Vive Tracker needs to pair with the dongle
to transfer data to a PC. The figure below describes the conceptual architecture.

Accessory

USB

Vive
Tracker

Wireless

USB

DonglePC

Figure: Conceptual Architecture of Vive Tracker

3

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

InterfaceUSB 2.0 full speed (client) from micro USB connector.

Absolute Maximum Rating
SymbolParameter

Min

Max

Unit

VI

Input voltage

- 0.5

3.6

V

VESD

Electrostatic discharge voltage , Human Body Model

--

4000

V

Electrical Characteristics (Supply voltage VDD = 3.3 V)
SymbolParameter

Min

Typ

Max

Unit

VOH

High-level output voltage

VDD - 0.4

--

--

V

VOL

Low-level output voltage

--

--

0.4

V

VIH

High-level input voltage

0.7VDD

--

--

V

VIL

Low-level input voltage----

0.3VDD

V

IOH

High-level output current

20

--

--

mA

IOL

Low-level output current

4

--

--

mA

IIH

High-level input current

--

0.5

10

nA

IIL

Low-level input current

--

0.5

10

nA

4

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Radio frequency (RF)To establish a stable wireless connection between the Vive Tracker and the dongle, the OTA
performance of Vive Tracker cannot downgrade to more than 3dB when an accessory is
attached to the Vive Tracker.
The following are recommendations for better RF performance:
Except for essential parts, such as the 1/4’’ screw, electric connection pad (which connectswith the Pogo pin), and related circuits of the electric connection pad, metal parts of theaccessory should keep at least 30mm distance away from the antenna to avoid OTA
performance reduction when the accessory is attached to Vive Tracker.
The figure below illustrates the “keep out” area where only nonmetallic parts of the accessory
should be inside (spherical radius=30mm and the center is antenna feed point).

Figure: Restricted Area of Antenna

5

HTC Confidential and Proprietary

Vive Tracker

Developer Guidelines

HTC Corporation

07/17/2017
Ver. 1.5

V oltage requirem ent

M ax charging current

M ax charging tim e1000 m A

1.5 hrs

500 m A

3 hrs

Power
M icro U S B connector

AC

5V+/-5%PC
P ogo pin 3

V oltage requirem ent

M ax charging current

M ax charging tim e

PC

5V+/-5%500 m A

3 hrs

Note
AC: D+ short to DPC: D+/D- communication
Table: Micro USB connector and Pogo pin indication

Optics
The field of view (FOV) of Vive Tracker is 270 degrees. Avoid placing the structure within theview angle, since it will block responses from Vive Tracker sensors when placed in that
direction.
If the docking part extends beyond the recommended placing cone, extra views will beblocked.

Figure: Docking part extends beyond recommended placing cone

6

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Docking
The following are requirements for docking compatibility:a.

The docking design of Vive Tracker follows the ISO standard (ISO 1222:2010).
Furthermore, Vive Tracker has constraining features, such as the longer screw cannot
fasten all the way in.

b.

The user should be able to easily attach and detach Vive Tracker with two hands.
One hand holds Vive Tracker, and the other one holds the accessory.

c.

The user should not be at risk of physical harm while attaching or detaching Vive
Tracker.

d.

The user should be comfortable while attaching and detaching Vive Tracker.

e.

The accessory attached with Vive Tracker should be in the shape of a physical object
to avoid hitting during operating.

f.

Vive Tracker should not be blocked by the accessory and affect the tracking
performance.

g.

It is strongly recommended that the accessory uses low reflection material for its outerskin to avoid reflection interference with the tracking sensors, especially if theaccessory needs to be placed within the tracking sensors' FOV area.

Docking embodiments
Gun

7

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Sword
It is recommended to design the mounting mechanism close to the hand-held area, and set up
the length in the VR program.

Multi-purpose docking baseUsers are able to attach the Vive Tracker to any object/surface that is intended to be tracked.


If the object/surface is smooth and stiff, it is recommended to use stronger adhesive
tape for attaching the docking base to the specific object/surface (ex. 3M VHB tape).



If the object/surface is rough and soft, it is recommended to use a strap for tightening
the docking base to the specific object/surface.

8

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Improper Vive Tracker placement may cause the accessory body to obstruct the tracking
performance. The mounting distance between tracking FOV and the related accessory size isshown below:

9

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

270 degree tracking FOV

No tracking area
Recommended area to put docking
mechanism

10

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Mechanical considerations
This section describes the mechanical considerations for developers to build various
accessories that are compatible to fit or mount with the Vive Tracker.

Figure: Vive Tracker

11

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Apparel size

Figure: Vive Tracker with different angle

The overall size of the Vive Tracker is Ф99.65mm * 42.27mm (H).

12HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Main feature
4.1 Standard Camera Mount(1/4” Screw Nut)

4.2 Stabilizing Pin Recess

4.4 Friction Pad
4.3 Pogo Pin(6 pins)
5. USB Port
3. Sensors
2. Power Button
1. LED Indicator
Figure: Main features

1. LED Indicator: Shows the status of Vive Tracker.
2. Power Button: Used for powering on/off, BLE pairing, etc.
3. Sensor: Receives signals from the base stations. The VR system uses the received signals
for computing the current location of Vive Tracker. Accessory should minimize surface
reflection (e.g. avoid white color surface) since it may cause faulty signal and affectperformance. Anti-reflection painting is preferred.
4. Docking Mechanism: Standard camera tripod docking method is used which is comprisedof:
4.1 1/4” Screw nut to fasten the accessory.
4.2 Stabilizing pin recess for constraining the tracking from rotation.
4.3 Pogo pin port (spring contact-type) for optional electrical connection to the accessory.
4.4 Friction pad for providing steady friction between the accessory and Vive Tracker.
5. USB Port: Used for electrical connection to the accessory through a micro USB cable.

13

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Docking mechanism
Vive Tracker applies the general camera tripod docking method, which follows ISO standards(ISO 1222:2010).
The following are the schematic drawings of how the accessory will mount to the Vive Tracker.
Docking with standard tripod cradle head (w/o electric connection)

Stabilizing Pin

1/4” Bolt

Friction Pad

Figure: Docking with standard tripod cradle

Vive Tracker can be mounted on the cradle head first, and then attached to the main body of
the accessory (similar to how a camera is mounted on a tripod).

14

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Docking with side tightening wheel (w/ electric connection if needed)

1/4” Bolt
Stabilizing Pin

Pogo Pin Pad(Optional)

Electric
Connection Pad(Optional)

Friction
Pad
Spinning
Wheel

Figure: Docking with side tightening wheel

In this example, the mechanical method allows developers to tighten the docking screw
through the side spinning wheel. It is recommended that the spinning wheel should have alarger diameter (25 mm or greater) for better operation.
This example is able to use the Pogo pin for extending the electric connection to somewhere
else.

15

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Accessory design
Below are the different accessory mechanisms, following ISO standards:
1/4” bolt design
Please refer to ISO 1222-2010, Figure 1 on page 1.

Stabilizing pin design
Vive Tracker leverages the design from ISO 1222-2010, Figure 5 on page 3. For details
on dimensions and tolerances, please refer to pages 13-17. It is suggested to apply the
Stabilizing Pin for better tracking performance.

Screw thread design
The screw thread type that applies to Vive Tracker is 1/4” screw with 1.27 mm pitch. For
detailed information, please refer to ISO 1222-2010, pages 3-5.

16

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Design of Pogo Pin Pada.

Pin definition (Vive Tracker)

17

HTC Confidential and Proprietary

Vive Tracker
HTC Corporationb.

Developer Guidelines
07/17/2017
Ver. 1.5

Pogo Pin Pad reference design
Electrical18

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Mechanical19

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

20

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

21

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Coordinate system
Vive Tracker uses the “Right-handed coordinate system”.
Vive Tracker


Datum A is set to be the top surface of the ring feature around the 1/4” Screw Nut.



Datum B is set to be the intersection point between the centerline of Standard Camera
Mount (1/4” Screw Bolt) and Datum A.

Datum C is set to be the intersection point between the centerline of Stabilizing Pin
Recess and Datum A.



The coordinate system is constructed by the Datum frame of Datum A, the line of
Datum B and Datum C, and Datum C itself.

22

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Accessory:

Datum A is set to be the top surface of the ring feature around the 1/4” Bolt.



Datum B is set to be the intersection point between the centerline of 1/4” Screw andDatum A.



Datum C is set to be the intersection point between the centerline of Stabilizing Pin
and Datum A.



The coordinate system is constructed by the Datum frame of Datum A, the line of
Datum B and Datum C, and Datum C itself.

23

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Software components
This section describes software components for the HTC Vive Tracker.
If you are an accessory maker, you can transfer data through Vive Tracker. You may refer tothe detailed data format transfer between an accessory and Vive Tracker in the Data format
section.
If you are a content developer, you can refer to Unity integration and Accessory integration
sections to create virtual reality content for an accessory attached with Vive Tracker.
When new firmware for Vive Tracker is released, you can upgrade the firmware using a PC
tool through USB cable. You can find the steps in the Firmware upgrade section.

System requirements
For both content developers and accessory makers:
1. To test Vive Tracker with your content or accessory, you need to have HTC Vive andthe relevant hardware and software environments to run it. You can find more
information on HTC Vive in www.htcvive.com
2. You need to have a PC with at least one available USB 2.0 port to plug in the dongle(for use cases with the dongle mentioned in previous section) or Vive Tracker (forfirmware upgrade purpose). This PC should also run SteamVR for HTC Vive.

Vive Tracker

USB
Firmware Upgrade

PC

Figure: Vive Tracker and PC

24

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

For accessory makers:
If your accessory needs to simulate buttons of the Vive controller or transfer data to a PC
through Vive Tracker, it must support the following interfaces respectively:
1. Pogo pin
Refer to hardware requirement section for detailed information on button simulation.
2. USB full speed host and HID class. The Vive tracker will act as a USB device to transfer
data to/from the accessory.

Vive Tracker

DeviceUSB
Data Transfer

Host

Accessory

Figure: Vive Tracker and accessory

25

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Data format
This section describes data formats for accessory makers to transfer data between theaccessory and the PC through Vive Tracker when the USB interface is used.
The data format transfer from an accessory to Vive Tracker is sent by a USB HID featurereport. It is similar to the user interface of the Vive controller. Interval to send data should be
longer than 10 ms.
For information about the USB HID spec, refer to USB Device Class Definition for Human
Interface Devices (HID). Vive Tracker has three USB nodes when it connects with via USB to acomputer. To send the USB command to Vive Tracker, set the wIndex to 2.
Refer to the table below for the USB command flow between the accessory and Vive Tracker.

26

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

SetFeature 0xB3 data format:
Byte Index

Data

Remark0

Host Type1

Charge Enable

Reserved

2

OS TypeReserved

3

Low Pass Filter
configuration

2 : phone
3 : accessory

0 : 184 Hz (default)
1 : 5 Hz2 : 10 Hz
3 : 20 Hz

Byte Index 3: Configures Vive Tracker’s low pass filter setting to maintain tracking
performance when the accessory vibrates. It will revert to the default value ‘0’ after 30
seconds, or set it to default manually. The field supports Vive Tracker firmware v.20 andhigher.
SetFeature 0xB4 data format:
Byte Index

Data

Remark0

Tag Index

Indicates the version of the data you send out.
Default value is zero in this version of data
format.

1

2
3
4
5
6
7
8
9

ButtonTRIGGERBUMPER
MENU
STEAM
PAD
PAD_FINGERDOWN
Reserved
Reserved

0x01
0x02
0x04
0x08
0x10
0x20
0x40
0x80

Pad X value

Pad X value, value from -32768 to 32767
BYTE 2 is LSB

Pad Y value

Pad Y value, value from -32768 to 32767
BYTE 4 is LSB

Trigger Raw

Trigger Raw, value from 0 to 65535
BYTE 6 is LSB

Battery Level

Battery Level, Reserved
BYTE 8 is LSB

Table: Data Format (Accessory to Vive Tracker)

Sample code
27

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Provided below are sample codes to send the setFeature command to Vive Tracker. Note thatyou need to reference the correct API in your system to implement the USB setFeaturecommand.
Visual Studio:
buffer[0] = 0xB3;
buffer[1] = 0x03; // Length
buffer[2] = 0x03; // 1: PC, 2: Phone, 3: Accessory
buffer[3] = 0x01;
buffer[4] = 0x00;
if (!HidD_SetFeature(m_hDevice, buffer, sizeof(buffer))) {AfxMessageBox(L"Error: Failed to set feature.");}JAVA:// Take 0xB3 command for example
data1[0] = (byte) 179; //0xB3
data1[1] = 3; //Means there are 3 bytes follow
data1[2] = 3; //Host Type: ACCESSORY
data1[3] = 1; //Reserved
data1[4] = 1; //Reserved
int result = mDeviceConn.controlTransfer(0x21, 0x09, 0x0300, 2, data1, data1.length, 0);28

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

STM F4 series developer board:char buffer[64];char *p_buffer = buffer;
unsigned int buffer_size = sizeof(buffer);memset( (void *)p_buffer, 0, buffer_size );p_buffer[0] = 0xB3; // Command
p_buffer[1] = 0x03; // Size of Datap_buffer[2] = 0x03; // Host Type: ACCESSORY
p_buffer[3] = 0x01;
p_buffer[4] = 0x01;// STM API
USBH_HID_SetReport(
handle,0x03, // Feature Report0,(uint8_t *)p_buffer,buffer_size );Haptic value range: Vive Tracker receives haptic input value from the content, while the
POGO OUT pin sets an output of HIGH with the duration in ‘ms’.

Accessory integration
This section describes information on position transformation between an accessory and Vive
Tracker. Content developers can create the correct rotation and translation result of thecontent used with the attached accessory in a game engine such as Unity.
It is assumed that the local coordinate system of the accessory is z-axis facing the front (lefthanded coordinate system), and Vive Tracker is attached in the accessory as in the example
below. Rotation degree and translation distance of an accessory relevant to Vive Tracker aredescribed in roll, yaw, pitch and Dx, Dy, Dz respectively during the integration.
After the center of an accessory has been decided during the design, the following degrees
and distance of an accessory based on actual integration condition can be measured. For
detailed information regarding the center of the Vive Tracker, refer to guidelines related to thehardware and mechanical design.

29

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

An example of using a gun as an accessory is described in the figure below:

Figure: Example to integrate accessory and Vive Tracker

Pitch : Angle that rotate around x axis in degrees
Yaw : Angle that rotate around y axis in degrees
Roll : Angle that rotate around z axis in degrees
Dx : Center distance of x axis between accessory and tracker
Dy : Center distance of y axis between accessory and tracker
Dz : Center distance of z axis between accessory and tracker
Content developers can collect the above information and transform Tracker pose to accessory
pose.
Assume Tracker rotation matrix is∗.
__, accessory rotation matrix

And accessory position

+

=

=

*

30

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

The following is a Unity sample code:
public class Accessory : MonoBehaviour {const float dX = 0.0100224f;
const float dY = -0.07616526f;
const float dZ = 0.4884118f;
const float roll = 10.854305f;
const float yaw = 91.8736f;
const float pitch = 78.805113f;
void Update () {//Collect delta rotation and displacement between Tracker and Accessory
Vector3 delta_displacement = new Vector3(dX, dY, dZ);
Quaternion delta_rotation = Quaternion.Euler(roll, yaw, pitch);//Get current Tracker pose
Vector3 tracker_position = SteamVR_Controller.Input(3).transform.pos;
Quaternion tracker_rotation = SteamVR_Controller.Input(3).transform.rot;//Transform current Tracker pose to Accessory pose
GameObject.Find("Accessory ").transform.rotation = tracker_rotation * delta_rotation;
GameObject.Find("Accessory ").transform.position = tracker_position + (tracker_rotation *delta_rotation) * delta_displacement;}}
Figure: Unity sample code for accessory integration (1)31

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Another Unity sample code shows how to transform the accessory by comparing vectors
parallel to y-axis and z-axis of the Vive Tracker (AxisY_Tracker, AxisZ_Tracker in example
below) and the accessory (AxisY_Accessory, AxisZ_Accessory in example below).
public class Accessory : MonoBehaviour {const Vector3 AxisY_Tracker = new Vectors(AxisY_Tracker_X, AxisY_Tracker_Y,
AxisY_Tracker_Z);
const Vector3 AxisZ_Tracker = new Vectors(AxisZ_Tracker_X, AxisZ_Tracker_Y,
AxisZ_Tracker_Z);
const Vector3 AxisY_Accessory = new Vectors(AxisY_ Accessory _X, AxisY_ Accessory _Y,
AxisY_ Accessory _Z);
const Vector3 AxisZ_ Accessory = new Vectors(AxisZ_ Accessory _X, AxisZ_ Accessory _Y,
AxisZ_ Accessory _Z);
void Update () {//Calculate delta rotation by comparing vectors parallel to Y axes of Tracker and the accessory
Quaternion delta_rotY = Quaternion.FromToRotation(AxisY_Tracker, AxisY_Accessory);
AxisZ_Tracker = delta_rotY * AxisZ_Tracker;
Quaternion delta_rotZ = Quaternion.FromToRotation(AxisZ_Tracker, AxisZ_Accessory);//Collect delta rotation and displacement between Tracker and Accessory
Vector3 delta_displacement = new Vector3(dX, dY, dZ);
Quaternion delta_rotation = delta_rotZ * delta_rotY;//Get current Tracker pose
Vector3 tracker_position = SteamVR_Controller.Input(3).transform.pos;
Quaternion tracker_rotation = SteamVR_Controller.Input(3).transform.rot;//Transform current Tracker pose to Accessory pose
GameObject.Find("Accessory ").transform.rotation = delta_rotation * tracker_rotation;
GameObject.Find("Accessory ").transform.position = tracker_position + (delta_rotation *tracker_rotation) * delta_displacement;}}
Figure: Unity sample code for accessory integration (2)32

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Unity integration
This section provides an example for content developers to enable Vive Tracker in VR content
by using Unity game engine.
First, you need to make Vive Tracker detectable in SteamVR. Assume that you have two Vive
controllers already, and you have plugged in the dongle into the dongle cradle to thecomputer’s USB port. Right-click on one of the existing controller’s icon and click “PairController” in the pop-up menu (shown in figure below). Press the Power button on Vive
Tracker for 2 seconds, and then release it to enter the paring mode.

Figure: Pair Vive Tracker

After paring is successful between the Vive Tracker and the dongle, you will see that the Vive
Tracker is detected in the SteamVR UI.

Figure: Vive Tracker is added in SteamVR

33

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

You can download Unity is 5.3.5f1 Personal fromhttps://store.unity.com/download?ref=personal

Figure: Unity Version

You need to import SteamVR Plugin into your project first. If you do not have it yet, you candownload it from the Asset Store in Unity.

Figure: Unity Asset Store34

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

In the developer version of Vive Tracker, it will use a similar approach and naming as you did
to create content for the Vive controller. The steps to create content for Vive Tracker are as
follows (with figures from Unity):
Step 1: Add “CameraRig” to Hierarchy to start creating content for SteamVR in Unity.

Figure: Add “CameraRig”

35

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Step 2: Create the 3D Object for Vive Tracker. In this example, “Capsule” is used.

Figure: Create 3D Object

36

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Step 3: Add Component > SteamVR_Tracked Object to the 3D Object “Capsule”.

Figure: Add Component “SteamVR_Tracked Object”

37

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Step 4: Under SteamVR Controller Manager, set the size of the Objects item. In this example,
one Vive Tracker is used in the setup.

Figure: Set size of object in “SteamVR Controller Manager”

38

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Step 5: Under SteamVR Controller Manager, on the Element 0 field, select “Capsule” as the
GameObject.

Figure: Set type of object in “SteamVR Controller Manager”

39

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

Step 6: After completing the steps mentioned above, press the “Run” button in Unity. Whenyou move Vive Tracker, you will see the Capsule object is also moving in the content.

Figure: Execution of Unity

Tracker on Unity or Unreal
If you encounter problems in enabling Vive Tracker on Unity or Unreal, refer to the following
links:
For Unity 3D developers:o Download link for the ViveInputUtility package: AssetStore or GitHubo Unity Plugin: https://www.assetstore.unity3d.com/en/#!/content/64219
o Unity source code: https://github.com/ViveSoftware/ViveInputUtility-Unity



For Unreal Engine 4 developers:o Download link for the UE4ViveTrackerSupport source code modification: GitHub.
(UE4 / GitHub subscription is required to access the UE4ViveTrackerSupport
source code modification.)o Unreal source code: https://github.com/ViveSW/UE4ViveTrackerSupport

Firmware upgrade40

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

In the developer version (DVT) of Vive Tracker, the ROM files for firmware upgrade will be
provided by HTC, utilizing the existing program “lighthouse_watchman_update.exe” of
SteamVR located in the folder “SteamVR\tools\lighthouse\bin\win32\”. It should be available inyour environment after the installation of the HTC Vive VR system.
For devices in DVT stage, please follow these steps to upgrade the firmware with theupgradeFirmware.zip file.
*Note: Check the device number on the power key of your Vive Tracker. If the device number starts with D, it is in
DVT stage.

1. If a Vive controller is connected to your computer via USB, unplug it first.
2. Connect one Vive Tracker with your computer using the USB cable.
3. Unzip the file upgradeFirmware.zip.
4. Execute the file upgradeFirmware.exe.
5. When done, disconnect the USB cable to reboot device.
6. To verify tracking, check that you see the Vive Tracker icon on SteamVR beta.
For devices post-DVT stage, follow the SteamVR notification to update the firmware. You may
also do these steps to upgrade the Vive Tracker firmware:
1. Copy the firmware binary files (including MCU, FPGA and RF) provided by HTC into thesame folder of “lighthouse_watchman_update.exe” in your PC.
2. If a Vive controller is connected to your computer via USB, unplug it first.
3. Connect one Vive Tracker with your computer using the USB cable.
4. Execute the following commands.
a. Update MCU’s firmware:
lighthouse_watchman_update -mnt tracker_mcu_filename.binb. Update FPGA’s firmware:
lighthouse_watchman_update -fnt tracker_fpga_filename.binc. Update RF’s firmware:
lighthouse_watchman_update -rnt tracker_rf_filename.bin

41

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Developer Guidelines
07/17/2017
Ver. 1.5

FAQ
Type

No.

Question

AnswerCommon1

How do I connect the dongle to mycomputer?

Connect one end of the supplied USB cable to thedongle cradle, and then attach the dongle to thecradle. Connect the other end of the USB cable toyour computer.

2

How do I charge Vive Tracker?

While in VR, you can check the battery level of Vive
Tracker when no apps are running, or when the
System Dashboard is up. When the battery is low, theindicator will show a single red dot.
Make sure to use the USB cable that’s in the box.
Connect the USB cable to the power adapter thatcame with your Vive controllers, and then plug thepower adapter to a power outlet to charge Vive
Tracker. You can also connect Vive Tracker to acomputer’s USB port to charge it.
When Vive Tracker is fully charged, its status lighteither shows white if it is off or green if it is turned on.

3

How do I pair the dongle with Vive
Tracker?

1. Turn on the headset and pair the2 controllers.
2. Connect the dongle to your computer.
3. Turn on Vive Tracker to start the pairing process
automatically.
Warning: If Vive Tracker cannot be automaticallypaired the first time, the dongle may pair withanother equipment.
To manually pair Vive Tracker, open the SteamVR
app, tap the down arrow, and then select Devices >Pair Controller. Follow the on-screen instructions tocomplete the process.

4

What does the status light on Vive
Tracker mean?

The status light shows:






42

Green when Vive Tracker is in normal mode
Blinking red when battery is low
Blinking blue when Vive Tracker is pairing withthe headset or dongle
Blue when Vive Tracker is connecting with theheadset or dongle
Orange when charging

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

5

How can I update Vive Tracker?

Developer Guidelines
07/17/2017
Ver. 1.5

1. From your computer, open the SteamVR app.
2. Using the supplied USB cable, connect the Vive
Tracker to one of your computer’s USB ports. The
firmware update will start automatically oncetracker is detected by SteamVR.
Warning: Do not unplug the micro-USB cable any
time before the firmware update is complete.
Doing so could result in a firmware error.
3. When the update is complete, click Done.

6

Why does Vive Tracker
automatically turn off?

When Vive Tracker turns off, some of the possible
reasons might be:The battery is drained
Pairing has timed out after being idle for morethan 30 seconds
There was no user movement for 5 minutes

7

Can I use more than one Vive
Tracker?

Multiple Vive Tracker hardware can be used, but
limitations apply.

8

Why can't I see Vive Tracker on
SteamVR?

Check that your SteamVR app is the latest version.

9

How do I reset Vive Tracker?

To reset Vive Tracker, connect it to your computer
using the supplied USB cable, and then press andhold the Power button for 10 seconds.

10

How many Tracker can beadapted?

The maximum number of tracking objects can be
adopted is 11 pcs of Vive Tracker plus 2 pcs of Vive
controller.

43

HTC Confidential and Proprietary

Vive Tracker
HTC Corporation

Type
SDK

07/17/2017
Ver. 1.5

No.
1

Question
How do identify whether Vive
Tracker or the controller is being
tracked?

AnswerYou can use the class type of SteamVR SDK to
identify if Vive Tracker or the controller is currently
being tracked.

2

Does Vive Tracker have a different
coordination system compared tothe controllers?

Yes. Content developers need to apply different
coordination settings based on the position where theVive Tracker is mounted.

3

How can I replace the controller
with Vive Tracker if I alreadycreated content meant for thecontroller?

Content developers need to apply different
coordination settings based on whether Vive Tracker
is mounted on the same position as the controller.
If its position is different, content developers need torecalibrate for Vive Tracker.

4

What's the equivalent of Vive
Tracker's hardware button to thecontroller?
How can I simulate the button event
when I connect Vive Tracker to acomputer through USB?

The hardware button of Vive Tracker maps to the
System button of the controller.

6

How can I simulate the controller
trackpad when I connect Vive
Tracker to a computer throughUSB?

Check the "Data format" section in the developer
guidelines, and follow the SetFeature 0xB4 format tofill your simulated data in "Pad X" and "Pad Y" byte
data.

7

Why is tracking lost when I
connected Vive Tracker to a USB
cable?

When you connect Vive Tracker to your computer
using a USB cable, it enters data sending mode. To
resume tracking while connected to a USB port, follow
the developer guidelines to send the SetFeature 0xB3
command to fill Host type byte.

8

Can we implement our own data
into Vive Tracker's data stream?

Vive Tracker only supports data that's compatible withthe controllers.

No.
1

Question
Can I customize the POGO pins?

AnswerYes, you can. For information on how to customize the
POGO pins, contact
www.vive.com/us/support/contactus.

2What's in the downloadable 3D
CAD file for the Vive Tracker?

The 1.77KB ZIP file contains the .IGS and .STP for
Vive Tracker. It's not a requirement to use the files, but
it can help if you have 3D modeling software.

5

Type
HardwareDeveloper Guidelines

Check the "Data format" section in the developer
guidelines, and follow the SetFeature 0xB4 format tofill your simulated data in "Button byte" data.

44

HTC Confidential and Proprietary