Skip to content


Subversion checkout URL

You can clone with
Download ZIP
PS Move Controller Low-Level API
C C++ Python Processing CMake C# Other
Tag: 2

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
hidapi @ e44064c


PS Move API (Release 2)

The PS Move API provides three different APIs for accessing the PS Move Motion
Controller via USB or Bluetooth. The most basic API is the C API, which allows
you to write applications targetting the PS Move controller in C. Based on that,
two high-level APIs exist: A Python binding, which allows developers to quickly
prototype applications and script behavior using Python, and a C++ library using
the Qt Framework. In addition to allowing developers to interface with the PS
Move controller from C++, the C++ library includes annotations and extensions
that are needed to utilize the PS Move controller from within the declarative
user interface description language QML.

The library is available for Mac OS X (both USB and Bluetooth) and Linux (only
USB for now, as the hidraw implementation in the Linux kernel is missing some
features that will hopefully land in a future kernel version). Thanks to the
cross-platform hidapi library on which the PS Move API is based, a port to the
Windows operating system should be possible, but was out of scope for this

Features include:

 * Setting the RGB LED color and rumble intensity (USB and Bluetooth)
 * Read the status of the digital buttons (Bluetooth only)
 * Read the status of the analog trigger (Bluetooth only)
 * Read sensor values for the accelerometer and gyroscope (Bluetooth only)

New features in v2:

 * New, more permissive license (Simplified BSD)
 * Support for reading the battery level/charging state (psmove_get_battery)
 * Experimental support for reading the temperature (psmove_get_temperature)
 * Various fixes to improve building on different systems and with/without Qt
 * A few new examples

The library also includes several examples in C, Python and C++ (Qt). A Test
GUI has been developed to test the library features without having to write any
code at all, and to serve as an example for developing custom solutions. A QML
movie trailer browser was also developed as part of the project to demonstrate
the possibilities of using the trigger and gyroscope for navigation gestures.

The PS Move protocol information is based on information from the the linmctool
and Move On PC projects.

The "unity" subproject includes the source for bindings to the API using C# /
Unity. It can be used to create application in the Unity Framework. This
project has been contributed by the Copenhagen Game Collective (thanks to
Douglas Wilson et al) and has its own homepage at:

The "glib" subproject includes the source for bindings to GObject using Vala
and GIR. This will eventually allow you to interface with the PS Move API from
JavaScript (using the GJS interpreter) and other languages supporting GObject
Introspection. The GLib bindings are very(!) incomplete and not well tested.

Documentation links:

Known issues:

    * On Debian Wheezy, you might need to specify the path to "swig"

Author / contact info: Thomas Perl <>
Project homepage:
Git repository:
License: Simplified BSD-style license (see COPYING)

Initial release date: 2011-03-24
Release of PSMoveAPI 2: 2011-12-03

Something went wrong with that request. Please try again.