Electronic – Do PS3 controllers use SPP to send the state of the buttons

bluetoothcontrollerprotocolserialuart

I am making a little Arduino circuit, and I would like to use a PS3 controller to control my project (for now). I know there are things like MotionJoy for PC, but how does this software work? Would it take a lot of reverse engineering to get the buttons from a PS3 controller to a Bluetooth to UART chip?

The reason I am asking is because I already own the controller. If it can't be done I have another idea in mind, but I don't want to have to spend more money on this. Because of this I appreciate answers related to the PS3 controller, rather than an answer about alternatives.

Thank you!

Best Answer

I did something similar with the original Xbox controller. That used a "proprietary" USB connection. It was USB 1.1 plus a fifth wire that was used as an identifier or something. I just ignored it. The USB just sent HID packets which were easy to interpret.

The PS3 controller seems very similar but looks to use just standard USB communicating in HID (Human Interface Device) format or Bluetooth communicating over HCI (Host Controller Interface) and again sending HID formatted commands. So you can connect the PS3 controller directly over USB to the Arduino Host Shield or connect over Bluetooth using a Bluetooth dongle.

This article gives a detailed overview of both types of connections including links to the various standards and LGPL source code for you to try. Here is another article where the USB section links back to the first article. But the Bluetooth section gives a quick view of the HCI packet format and a step by step on how to pair with it.