Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now


madtoyslab. - Xbox Controller S breakout board ( R&W latest version ) - V0.1b [ WIP ] | PCB Design

madtoyslab. - Xbox Controller S breakout board ( R&W latest version ) - V0.1b [ WIP ]
Version 1 - Last update: Oct 17, 2015

breakout board to interface an Xbox Controller S with any uC, pinout for ATmega328P-PU allows to either record a player's controls or be remotely controlled by a laptop .. or pretty much anything ;)

Image of breakout

Project's Github repo: Madtoyslab. Xbox-Controller-S-breakout


-> thnk on a rework ( hardware & software ) to free pins on the uC for CC3300 WiFi ( takes D11/D12/D13) [ nb: Bluetooth already supported using a Bluefruit EZ-Link ]

aka: use an additional shift register to drive the necessary PWM outputs & using "ShiftPWM" lib, making enough native PWM pins free to not have to rework the internals of some WiFI lib(s)

0: change the pins used to control the shift-registers to free PWM pins for triggers [ nb: keep in mind that some PWM pins may be required by some ESP8266.. -> 'll have to digg that ! .. ]

on the above: a rerouting 'll be done once shift registers are tested with other, non-PWM-or-other-fancy-stuff pins, just to make sure

1: enlarge gamepad connector pins & add space between them for easier/quicker soldering

2: correct the 16MHz crystal drawing, aka the space it takes on the board & the size of its pins ( too little )

3: correct the voltage regulator pins ( too little )

5: add connector pins for an additional FTDI header ( to be able to easily switch between devices with male & female headers, not to have two ftdi device connected -> 'd need resistors .. )

6: either enlarge ├╝berjoy connector pins or add the alternative version directly to the board => DONE !

7: add extra pins for the unused pins on the uC & the shift registers ( as "extra purpose IO", since the code is available for anyone, including me [ ;p ], to get extra functionality (..) )

8: add the "record||control" mode selection toggle + two shift-in registers + arrange the shift registers MR, OE, +V, Gnd & the shift-in register +V & Gnd to be handled by the switch , & rework pins to be READ-ready without being caused troubles by the WRITING circuitry ( .. )

the above is currently being done

also: another version could use a TLCxxxx PWM/LED driver, to provide additional pinouts for feedback ;D


thnk about the stuff to come for the V0.1c


in [pre-]alpha testing ..

breakout board to interface an Xbox Controller S with any uC:

not using the gamepad on a computer ( aka, using nearly all of the M$-mdified USB cable ), but instead wiring stuff to the gamepad in order to control the console by a computer ( currently tests are succeful via serial in bash & python ).


1 - play Super Mario 64 on the Projects64 emulator on an original Xbox from a terminal running a Python/bash program: OK

2 - play it using a SNES gamepad connected to the computer [ OK ] or connected to the modified Xbox Controller S directly ( with I2C/SPI or wirelessly .. )

3 - see if it's possible to "make that particular bear dance" ( aka, script the completion of a SuperMario64 level ) despite that ***! cam movements

The breakout can be powered either by using the FTDI connector ( WARNING: NOT regulated ) or the micro USB connector ( 7~25V input will output a regulated 5V for the uC )

The micro USB connector is FOR POWERING ONLY ! ( there is no onboard FTDI USB to serial chip, thus you must use an FTDI cable for programming or serial )

The breakout can accept an uC onboard, but it is NOT necessary & can be interface with any uC ( the traces connections are for the ATmega328P - PU, uC whose contours are depicted on the silkscreen )

Two LEDs can be mounted on the board: The first is for the D13 pin, it'll light up when the board has booted & also whenever controls are received The second is directly connected to the +5V power and simply indicates when it's powered up

A push button has been added to reset the board

Also, the reset pin has now a 10k pull up resistor to prevent it from floating ( & the uC to reset itself )

Comments disabled