Arduino USB+BT PS3 Controller
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


== First of all ==
PS Remote Controller Bluetooth stack for Arduino with USB Host Shield / Arduino MEGA ADK
Copyright (C) 2010 Tomo Tanaka - Original written WiiRemote Stack adapted for using with PS3 Controller
Copyright (C) 2011 Ion Agorria - PS3 adaptation

This program is based on <wiiblue.pde> which is developed by Richard Ibbotson.
This program also needs MAX3421E and USB libraries for Arduino written by Oleg Mazurov.
This program is based on WiiRemote code from

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <>.

== Hardware Requirement ==
	Case 1:
		* Arduino 
		* USB Host Shield
	Case 2:
		* Arduino Mega ADK (USB Host included)
	* USB Bluetooth Device

== Software Requirement ==
	Case 1:
		* MAX3421E and USB library for Arduino written by Oleg Mazurov
		The source codes can be grabbed from
	Case 2:
		*Same Libraries adapted for Arduino Mega ADK:
	Open Downloaded Library and copy these files to a folder with PSRemote files:
        * Max3421e_constants.h 
        * Max3421e.h         
        * Max3421e.cpp      
        * ch9.h         
        * Usb.h 
        * Usb.cpp
	So it must look something like this
== Files ==
		+- Example.pde
		+- PSRemote.h
		+- PSRemote.cpp
		+- README.txt
		+- Max3421e_constants.h
		+- Max3421e.h        
		+- Max3421e.cpp         
		+- ch9.h           
		+- Usb.h                
		+- Usb.cpp 

== Usage ==
Same as USB version library
getBDADDR() and setBDADDR() are just for compatibility, they do nothing
rename header and constructor to "PSRemote" or see the example!

Added Functions:

getPSADDR(): gets connected PS bt address
LED(): sets LED only without affecting rumble
Rumble(): set Rumble without changing LEDs

=== Modify USB Device Descriptors ===
The values of CSR_VID and CSR_PID described in PSRemote.h need to be modified
to match descriptors of USB Bluetooth Device to be used.

Default is configured for CSR chips (like mine)

== Hint ==
--Hints from PS3 and Wiimote game controllers thread in Circuit@Home.
    - Bluetooth 1.x seems not work on this library.
--Bluetooth Docs:

HCI, L2CAP,... Doc:

BT HID profile Doc:

--Sixaxis/DualShock3 Info:

Windows Driver/Pairing: MotionInJoy
Linux Pairing: sixaxis.c source file
Mac: I dont know but i seem some

I appreciate the gread codes developed by Oleg, Richard and Tomo :-)

--What Does?--

-HCI Waits for PS Remote (Remenber to Pair with your BT Dongle!!!)
Then Accepts connect Req and goes to L2CAP

-L2CAP responses two Connection Req from PSRemote (HID Control and HID Interrupt)
Then configures it and then passed to HID

-Initializates PS Controller and lights all Leds



I started this because noone has taken initiative with PS (unlike Wii)