Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

SteamVR Controllers

vrarwiki.com · VR & AR Wiki
Reviewed 13 October 2026. Vive wand release history, hardware controls and power, base-station compatibility, optical tracking and skeletal-input limits, and the cited controller latency experiment. About review dates.
SteamVR Controllers
Basic Info
Type Input Device, Motion Tracker
Platform SteamVR
Developer Valve, HTC
Manufacturer HTC
Release Date 5 April 2016 (consumer Vive kit)
Website https://www.vive.com/us/accessory/controller/
Versions Vive developer controllers, Vive Pre controllers, Vive consumer controllers, Controller (2018)
Requires SteamVR system with compatible headset and base stations
Tracking
Tracking 6DOF, SteamVR Tracking
Rotational Tracking Inertial and optical measurements
Positional Tracking Base Stations
Connectivity
Connectivity Wireless pairing with the headset; Micro-USB
Power Rechargeable battery
Battery Capacity 960 mAh (consumer and 2018 controllers)
Battery Life Approximately 6 hours (original consumer specification)
Device
Haptics Haptic feedback
Sensors 24 optical tracking sensors; inertial measurement unit (original consumer controller)
Input Multifunction trackpad, grip buttons, dual-stage trigger, System button, Menu button

Introduction

SteamVR Controllers are the tracked handheld controllers developed for the original HTC Vive system through the partnership between Valve and HTC. This article covers the Vive developer prototypes, Vive Pre controllers and the consumer controllers commonly called Vive wands, including HTC's later Controller (2018).[1] HTC introduced the Vive partnership on 1 March 2015 and described a pair of wireless controllers alongside the headset.[2] The original consumer Vive kit began shipping on 5 April 2016.[3]

The wider SteamVR software ecosystem can bind application actions to different controller types. Hardware compatibility and input capabilities depend on the particular controller; SteamVR software support alone does not establish compatibility with a particular base station generation.[4][5]

Features

The Vive controllers combine tracked position and orientation with physical controls and haptic feedback. HTC lists a multifunction trackpad, grip buttons, a dual-stage trigger, and separate System and Menu buttons for the original consumer model. Its controller specification gives approximately six hours of use per charge and a Micro-USB charging port.[6] The retail accessory specification lists 24 sensors, a rechargeable 960 mAh battery and haptic feedback.[7]

Development and versions

The 2015 announcement initially projected a consumer release by the end of that year.[2] The Vive Pre, announced at CES on 5 January 2016, was a second developer edition rather than the final consumer release. HTC described revised controller ergonomics, softer edges, textured buttons and grip pads, together with the dual-stage trigger and haptic feedback. Its announcement advertised integrated lithium-polymer batteries, Micro-USB charging and over four hours of operation per charge. That figure describes the Vive Pre announcement, while the later consumer specification gives approximately six hours.[8][6]

HTC's Controller (2018) retains the wand controls, 24 sensors, haptic feedback and a 960 mAh rechargeable battery, but supports both generations of SteamVR base stations. The original Vive controller supports Base Station 1.0 only.[9][5]

Controller version Historical context Base Station 1.0 SteamVR Base Station 2.0
Original consumer Vive controller Supplied with the consumer Vive system that began shipping in April 2016.[3][10] Compatible.[5] Not compatible.[5]
Controller (2018) HTC's later wand controller with support for SteamVR Base Station 2.0.[9] Compatible.[5] Compatible.[5]

The headset must also support the selected base stations. HTC's compatibility table lists the original Vive headset with 1.0 stations, but not 2.0 stations, even when newer controllers are used. Different base station generations cannot be mixed in the same setup.[5]

Hardware

The consumer controller has a handheld grip below a ring containing optical receivers. HTC's parts diagram identifies the tracking sensors separately from the trigger, grip buttons, trackpad, Menu button, System button, status light and Micro-USB port. HTC instructs users not to cover or scratch the sensor lenses.[11] An April 2016 teardown identified an Invensense MPU-6500 gyroscope and accelerometer in the original controller, alongside its optical sensing hardware. It also found that the trackpad daughterboard closely resembled the one in the Steam Controller.[12] HTC's regulatory guide identifies the original controller as model 2PR7100 and its battery pack as B0PLH100.[13]

Input Behavior documented for the Vive wand
Trackpad Reports horizontal and vertical finger movement, touch and press events. Applications can assign different actions to these inputs.[14]
Trigger Dual-stage physical control. The documented software inputs include a continuous squeeze value. Unity's 2017.3 integration generated a trigger touch event when squeezing began, rather than detecting a resting finger in the way described for Touch and Knuckles controllers.[6][14]
Grip buttons Two side buttons share one grip input. In the documented Unity 2017.3 mapping their values are released or pressed, with no intermediate squeeze values.[14]
Menu button Separate application input above the trackpad.[11][14]
System button Turns the controller on or off and opens the System Dashboard when pressed while the controller is on.[15][10]

Power and connection

The controllers communicate wirelessly with the headset. HTC documents automatic pairing at first power-on and manual pairing through SteamVR's Devices > Pair Controller command. Pairing is a separate operation from receiving the base stations' optical tracking signals.[16][10]

Each controller charges through Micro-USB using the supplied cable and power adapter. The battery level is visible in the System Dashboard and SteamVR. With the controller connected and fully charged, the status light is green if the controller is on or white if it is off.[17] HTC's status guide distinguishes green normal operation, blinking red low battery, blinking blue pairing, steady blue connection in progress, and orange charging.[18]

HTC's legacy firmware procedure connects each controller to the computer by Micro-USB, one at a time, when SteamVR reports an available device update. The cable must remain connected until the update completes.[19]

Functionality

Base Stations emit infrared signals that the controller's optical receivers detect. In first-generation Lighthouse tracking, the timing between a synchronization flash and the arrival of rotating horizontal or vertical laser sweeps gives angular observations. Known receiver positions on the tracked object allow the system to estimate its position and orientation. Sensor fusion combines optical observations with measurements from an inertial measurement unit. The resulting pose has six degrees of freedom, comprising translation and rotation.[20][12]

SteamVR's hardware configuration records the receiver locations and orientations, their association with hardware ports, and the IMU's calibration and coordinate transform. These are inputs to tracking, rather than a camera image of the user's hand.[21] The base stations illuminate the tracked devices; wireless controller pairing is with the headset, not with the base stations.[10][16]

For the original two-station installation, HTC recommends mounting the stations diagonally at opposite corners, above head height, with no more than 5 m between them. It warns against bright light and movement of the stations after setup.[10] These are installation conditions, not a universal controller accuracy or latency specification.

Limitations

The wand reports its own pose and control state. It does not directly measure the locations of the user's finger joints. Valve classifies the Vive controller's skeletal input as estimated: hand animation can be inferred from buttons and other inputs. Its Index controllers belong to the separate partial skeletal-tracking category. Consequently, an animated virtual hand shown by an application is not evidence that a Vive wand has measured the corresponding finger posture.[22][1]

Optical tracking remains vulnerable to occlusion. Covering receiver windows prevents the intended optical observations; HTC explicitly warns against covering the sensor lenses. Its troubleshooting instructions include returning the controller to the play area, reactivating it and restarting SteamVR when tracking fails.[11][23] A wrist lanyard can help prevent an accidental drop, but HTC warns that throwing or flinging the controller can break the lanyard.[24]

Latency measurements

Latency depends on the measurement and the application pipeline. Warburton and colleagues measured controller motion-to-photon latency with a controller restricted to one axis on a linear guide, a 240 fps smartphone recording, and a Unity 2019.4 LTS application using SteamVR 1.14.16 and Unity plugin 2.6.1. They tested the original HTC Vive at 90 Hz alongside other systems, comparing sudden movement onset with continuous motion. In that setup, the Vive showed much lower effective latency once motion prediction could follow the movement. This measured the path from physical controller motion to the headset display, not radio transmission alone. The authors found that a single latency value failed to capture the changing delay through a movement, and called for measurements of the actual experimental setup.[25]

Apps

Applications assign meanings to the tracked pose and physical inputs. In Tilt Brush, one controller acts as the painting tool and the other as the palette. Holding the trigger while moving paints a stroke; swiping the Vive trackpad changes brush width or rotates the palette. Grip controls can move panels, and using both controllers' grips can move, rotate or scale the sketch.[26]

Chunks is a historical example of building at different virtual scales. Its publisher described constructing a block world while giant-sized and shrinking to walk inside the result, with an HTC Vive requirement. The Steam listing stated on 13 October 2026 that the game was no longer available for purchase. Its description illustrates an application interaction rather than a built-in controller function.[27]

Developer

In OpenVR's SteamVR Input system, an application declares actions and provides default bindings for controller types. Users can change bindings or choose shared ones. Pose, digital and analog actions are separate data paths, and haptic vibration is an output action.[4] A controller's input profile describes the components that the driver exposes. Valve identifies vive_controller_profile.json as an example profile; a trackpad exposes X and Y coordinates and touch, while click is a separately described component.[28]

Applications need to account for the actual hardware inputs. For example, the Vive grip's binary state differs from an analog squeeze control, and the legacy Unity documentation distinguishes a Vive trigger squeeze from capacitive trigger touch on other controllers.[14] Skeletal animation should likewise respect the hardware's tracking level instead of treating an inferred Vive hand pose as direct hand tracking.[22]

Images

Vive DK1 controllers
Vive DK2 (Pre) controllers

References

  1. ↑ 1.0 1.1 "OpenVR Driver API Documentation". Valve. https://github.com/ValveSoftware/openvr/blob/master/docs/Driver_API_Documentation.md. Retrieved 2026-10-13.
  2. ↑ 2.0 2.1 "HTC AND VALVE PARTNER TO MAKE VIRTUAL REALITY DREAM COME TRUE". HTC. 2015-03-01. https://www.htc.com/us/newsroom/2015-03-01-3/. Retrieved 2026-10-13.
  3. ↑ 3.0 3.1 VIVE Team (2016-04-07). "Vive Shipment Updates". VIVE Blog. https://blog.vive.com/us/vive-shipment-updates/. Retrieved 2026-10-13.
  4. ↑ 4.0 4.1 "SteamVR Input". Valve OpenVR documentation. https://github.com/ValveSoftware/openvr/wiki/SteamVR-Input. Retrieved 2026-10-13.
  5. ↑ 5.0 5.1 5.2 5.3 5.4 5.5 5.6 "Which VIVE hardware is compatible with my base stations?". VIVE Support. https://www.vive.com/us/support/vive-pro-hmd/category_howto/which-vive-hardware-are-compatible-with-base-stations.html. Retrieved 2026-10-13.
  6. ↑ 6.0 6.1 6.2 "VIVE Specs & User Guide". VIVE Developer Resources. https://developer.vive.com/resources/hardware-guides/vive-specs-user-guide/. Retrieved 2026-10-13.
  7. ↑ "Controller". VIVE. https://www.vive.com/us/accessory/controller/. Retrieved 2026-10-13.
  8. ↑ "HTC RESHAPES HUMAN IMAGINATION WITH INSPIRING VIRTUAL REALITY". HTC. 2016-01-05. https://www.htc.com/ca/newsroom/2016-01-05-2/. Retrieved 2026-10-13.
  9. ↑ 9.0 9.1 "Controller (2018)". VIVE. https://www.vive.com/us/accessory/controller2018/. Retrieved 2026-10-13.
  10. ↑ 10.0 10.1 10.2 10.3 10.4 "Vive User Guide". HTC. https://developer.vive.com/documents/720/Vive_User_Guide.pdf. Retrieved 2026-10-13.
  11. ↑ 11.0 11.1 11.2 "About the VIVE controllers". VIVE Support. https://www.vive.com/us/support/vive/category_howto/about-the-controllers.html. Retrieved 2026-10-13.
  12. ↑ 12.0 12.1 Brittany McCrigler (2016-04-26). "HTC Vive Teardown". iFixit. https://www.ifixit.com/Teardown/HTC+Vive+Teardown/62213. Retrieved 2026-10-13.
  13. ↑ "Safety and regulatory guide". HTC. https://dl4.htc.com/vive/safty_guide/91H02887-08M%20Rev.A.PDF. Retrieved 2026-10-13.
  14. ↑ 14.0 14.1 14.2 14.3 14.4 "Input for OpenVR controllers". Unity User Manual 2017.3. https://docs.unity.cn/2017.3/Documentation/Manual/OpenVRControllers.html. Retrieved 2026-10-13.
  15. ↑ "Turning the controllers on or off". VIVE Support. https://www.vive.com/us/support/vive/category_howto/turning-the-controllers-on-or-off.html. Retrieved 2026-10-13.
  16. ↑ 16.0 16.1 "Pairing the controllers with the headset". VIVE Support. https://www.vive.com/us/support/vive/category_howto/pairing-the-controllers-with-the-headset.html. Retrieved 2026-10-13.
  17. ↑ "Charging the controllers". VIVE Support. https://www.vive.com/us/support/vive/category_howto/charging-the-controllers.html. Retrieved 2026-10-13.
  18. ↑ "What does the status light on the controllers mean?". VIVE Support. https://www.vive.com/us/support/vive/category_howto/what-do-the-controller-status-lights-mean.html. Retrieved 2026-10-13.
  19. ↑ "Updating controller firmware". VIVE Support. https://www.vive.com/us/support/vive/category_howto/updating-the-controller-firmware.html. Retrieved 2026-10-13.
  20. ↑ Miguel Borges; Andrew Symington; Brian Coltin; Trey Smith; Rodrigo Ventura (2018). "HTC Vive: Analysis and Accuracy Improvement". 2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). https://wp.isr.tecnico.ulisboa.pt/rventura/wp-content/papercite-data/pdf/rventura-iros18b.pdf. Retrieved 2026-10-13.
  21. ↑ "The JSON File (Lighthouse Devices)". Valve OpenVR documentation. https://github.com/ValveSoftware/openvr/wiki/The-JSON-File-(Lighthouse-Devices). Retrieved 2026-10-13.
  22. ↑ 22.0 22.1 "SteamVR Skeletal Input". Valve OpenVR documentation. https://github.com/ValveSoftware/openvr/wiki/SteamVR-Skeletal-Input. Retrieved 2026-10-13.
  23. ↑ "What should I do if any of the controllers is not tracked?". VIVE Support. https://www.vive.com/us/support/vive/category_howto/what-to-do-if-controllers-not-tracked.html. Retrieved 2026-10-13.
  24. ↑ "Attaching the lanyards to the controllers". VIVE Support. https://www.vive.com/us/support/vive/category_howto/attaching-the-lanyards-to-the-controllers.html. Retrieved 2026-10-13.
  25. ↑ Warburton, Matthew; Mon-Williams, Mark; Mushtaq, Faisal; Morehead, J. Ryan (2023). "Measuring motion-to-photon latency for sensorimotor experiments with virtual reality systems". Behavior Research Methods 55 (7): 3658-3678. doi:10.3758/s13428-022-01983-5. Retrieved 2026-10-13.
  26. ↑ "Painting with Tilt Brush". Google Tilt Brush Help. https://support.google.com/tiltbrush/answer/6389712?hl=en. Retrieved 2026-10-13.
  27. ↑ "Chunks". Steam. Facepunch Studios. https://store.steampowered.com/app/402800/Chunks/. Retrieved 2026-10-13.
  28. ↑ "Input Profiles". Valve OpenVR documentation. https://github.com/ValveSoftware/openvr/wiki/Input-Profiles. Retrieved 2026-10-13.