Fetching contributors…
Cannot retrieve contributors at this time
125 lines (82 sloc) 4 KB
A cross-platform C library for using the Sony Playstation Move Motion
Controller, with bindings for Python, Java, Qt and others.
The library is available for Mac OS X, Windows and Linux (USB and Bluetooth).
Basic features:
* Set the RGB LED color and rumble intensity (USB and Bluetooth)
* Read digital buttons, analog trigger and sensors (Bluetooth only)
Advanced features:
* Tracking: Controller tracking with a camera using OpenCV
* Calibration: Reading of normalized/calibrated values
* Orientation: Rotation tracking using gyro and accelerometer
Environment variables:
If set, this is the camera that will be used when using
psmove_tracker_new() instead of using auto-detection
Example: export PSMOVE_TRACKER_CAMERA=2 # Will use the 3rd camera
If set, this will use a video file to playback instead of
capturing from a camera. Any camera settings are ignored.
Example: export PSMOVE_TRACKER_FILENAME=demo.avi # Will play demo.avi
If set, this is the color *in the camera picture* of the
tracked controller.
Example: export PSMOVE_TRACKER_COLOR=fda0fc
If set, this controls the size of the biggest (initial) ROI that will
be used to track the controller. Bigger means slower in general, but
recovery from tracking loss might be faster.
Example: export PSMOVE_TRACKER_ROI_SIZE=200
If set, these variables control the desired size of the camera picture.
Example: export PSMOVE_TRACKER_WIDTH=1280
If set, this controls the dimming factor (1-100) of the RGB LED. Use in
situations where you can't control the exposure of the camera image.
|- 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
| external/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 PS Move protocol information is based on information from the the linmctool
and Move On PC projects.
Bindings to the API using C# / Unity are available in "bindings/unity". They
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:
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 1.0.0: 2011-03-24
Release of PSMoveAPI 1.0.2: 2011-12-03
Updated: 2012-08-07