Only required if the SIXAXIS is to be used with a non-PS3 Bluetooth master. The SIXAXIS apparently does not support the standard Bluetooth pairing procedure; instead, pairing is done over USB, which is arguably simpler and more secure. This command-line utility searches USB buses for SIXAXIS controllers and tells them to connect to a new Bluetooth master.
Alternatively, it might be possible to support the Bluetooth HID "Report Protocol" on older kernels by using bthid instead of hidd, with a similar patch.
Besides, the new "input service" (bluetoothd-service-input), which replaces hidd in recent versions of bluez-utils, should support the SIXAXIS without any patch. However, since it does not accept connections from unknown Bluetooth devices, authorizations must be set-up by another utility, such as a udev plugin, as suggested in this discussion (http://thread.gmane.org/gmane.linux.bluez.devel/14354).
Note: Bluetooth experts use the word "controller" to refer to the Bluetooth network adapter inside the host or the PS3, whereas everybody else thinks "game controller" (a.k.a. joystick). This sometimes causes confusion.
Using Inertial Sensors with the Hidraw Interface:
The Linux joystick interface [Register or Login to view code]
does not report inertial measurements from the accelerometers and gyro. The hidraw interface can be used instead. It transfers raw HID input reports to user-space and works identically in USB mode and in Bluetooth mode.
xsixhidtest.c (http://www.pabr.org/sixlinux/xsixhidtest.c) graphically displays speed, position and orientation derived from accelerometer measurements. High-pass filtering is used to control integration drift; this works well for fast periodic signals, e.g. circular motion. In this simple example, no attempt is made to track simultaneous translations and rotations, nor rotations around the vertical axis.
- A 2.0 Bluetooth adapter is recommended. Otherwise, incoming input reports may be truncated to 12 bytes.
- On some PS3 hosts, hcidump shows "Role Change" "Role: Master" and dmesg reports "hci_acldata_packet: hci0 ACL packet for unknown connection handle". Upgrading to linux-2.6.23 or later should solve this problem.
- The Bluetooth adapter in the PS3 supports remote wake-up. This has not been tested with Linux.
- Bluetooth authentication and encryption have not been investigated. This probably requires a key exchange procedure over USB.
- The LEDs are not supported. /dev/js0 should have the first LED turned on, and so on.
- Hand-over between USB mode and Bluetooth mode is not transparent for applications.
- Monitoring of battery status is not implemented.