All about PS3 SixAxis controller USB communications

[Austyn] is currently working on reverse engineering a PlayStation 3 SixAxis controller’s USB communications. You may be thinking that this has already been done but [Austyn] was unable to find useful source code so he’s started his own project called libopenaxis.

The process he used to sniff out USB communications makes for an interesting read. He utilized GlovePIE to get the USB request block for the controller. With that in hand he grabbed the Python script used in a DIY Kinect hacking tutorial to start dumping controller data. With each keypress the script reads out the full data packet, which is used to figure out how the data structures are organized.

The project has come as far as knowing all of the data types, but right now the purpose for the majority of those variables is unknown. Hopefully the blanks will be filled in over time. Two things are for sure; if you’re interested in writing Python code that can communicate with PS3 controllers this is a great source of info, and the Kinect hacking that was so fun to watch over the last few months is still bearing fruit.

Comments

  1. addidis says:

    Tomorrows headlines: Hacker sued for hacking sony product.

  2. The bluetooth data packets and USB data packets are identical afaik, and I’m pretty sure the bluetooth protocol is well known. I’m trying to find the link I once found, it contained what every single bit represented.

    I actually got my PS3 controller working with my iPhone once, It was pretty epic, and I wrote a mac app in the process to pair the PS3 controller to the iPhone’s BT address. Good times.

  3. charliex says:

    its on the ps2dev site, and motionjoy works on windows, btsix might/not. diyp23emulator does the reverse. the wiibrew has a project on it too
    https://jim.sh/svn/jim/devl/playstation/ps3/sixaxis/bt/emu/
    loads of info.

  4. Matlo says:

    The sixaxis is working with linux since ages in usb mode (out-of-the box), and also in bluetooth mode (with QtSixA). No need to reverse engineer anything again. Good project to learn stuffs though.

  5. Mic says:

    Maybe the spare variables are used by the Sony Remote which as a lot of extra button compare to a standard controller.

  6. Hugo says:

    The ROS (robot operating system) project has nice Python code for accessing Sixaxis controllers, over Bluetooth and maybe over USB too. Check it out.

  7. mareviq says:

    ummm… what about
    http://www.pabr.org/sixlinux/sixlinux.en.html
    It’s been out there for several years now.

    The basic controller works out-of-the-box as a HID device, the only tricky part was to read the accelerometers and that was solved as well.

  8. paul says:

    Can I use this to control my PS3 from Linux?

  9. frank says:

    I’m currently implementing the ps3 remote for a ti launchpad and a mbed platform as well. This is interesting.

  10. nos says:

    Has anyone used this type of thing to create bots that literally play the game for you? interesting concept

  11. Ashley says:

    I’m not sure if I am reading this right, But would this supply developers with the ability to create a piece of software, where you can connect to your PS3 and bot your character in a game i.e. MW2/3 to walk around by itself and kill people online and offline?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 92,285 other followers