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
tree: e772f419d9

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, Windows and Linux (USB and Bluetooth).

========== WIP features for release 3 ========================
 - moved: A daemon for Linux to maintain Bluetooth connections
 - moved-client: Example demo of how to use the client library
 - Integration of moved support into the PS Move API
 - Right now, the throughput is not as fast as on OS X, though
 - moved TODO: Implement support for getting the BT address

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

 |- Windows notes ----------- -- -  -
 | If you are using MinGW from the Qt SDK, you have to replace the file
 | libbthprops.a in mingw\lib\ with the file of the same name from the
 | mingw-w64 package. A modified set of Bluetooth headers can be found in
 | contrib\mingw-w64-headers if you need them - they are taken from the
 | mingw-w64 distribution and have been modified to work with Qt SDK's mingw.
 | If for some reason, you get an assertion error (hFind != NULL) on Windows
 | with psmovepair, it could be that you are not using the Windows Bluetooth
 | stack. Whatever the reason is, the psmovepair utility accepts a command-line
 | parameter that is the desired host address, so you can still pair the device
 | by figuring out the Bluetooth host address manually and using this as the
 | first parameter when starting psmovepair, e.g.:
 |       psmovepair.exe AA:BB:CC:DD:EE:FF
 | If you have Python 2.7 and Swig (tested with 2.0.4) installed, the Python
 | module will be built and can be used normally. If you want to try out the
 | samples, use the follwing (assuming you built the project in "build/":
 |       set PYTHONPATH=..\build\
 |       set PATH=%PATH%;C:\python27\
 |       python

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.