DIY PC to PS3 usb adapter

Refer to the wiki instead of reading this section.
User avatar
Posts: 5767
Joined: Wed Jul 06, 2011 7:01 am
Location: France

DIY PC to PS3 usb adapter

Post by Matlo »

This post explains how to build a pc to ps3 usb controller, that can be used with the v0.23+ sixemu packages.

Warning: I'm not responsible for any wrong hardware you can buy, or anything you can do with this.

Required hardware:
  • a usb to serial TTL converter - 1Mbps recommended - chip examples: FT232R, CP2102
  • a usb development board with a chip among the following: at90usb82, at90usb162, at90usb646, at90usb647, at90usb1286, at90usb1287, atmega16u4, atmega32u4
[*]USB development board:[/*] [/list]

The hardware I used for my tests is the following:
  • Arduino duemilanove (on-board FT232RL) + Bumble-b (discontinued, at90usb162)
  • Arduino duemilanove (on-board FT232RL) + Teensy++ (at90usb1286)
  • CP2102 board (from ebay) + Teensy 2.0 (atmega32u4)
  • CP2102 board (from ebay) + Teensy++ (at90usb1286)
I suggest the CP2102 converter from ebay (very low price, but sometimes low delivery) and the Teensy board (low price, good quality, and quick delivery).

So, you have a usb to serial TTL converter, and a compatible usb dev board?

I/ Load the firmware on the usb dev board

The following archive contains all firmwares: link. I only tested the at90usb162, at90usb1286 and atmega32u4 firmwares.

Load the proper hex file to your board with the Teensy loader, the Flip utility from Atmel, or the dfu-programmer command-line tool.

dfu-programmer example:

Code: Select all

sudo dfu-programmer at90usb162 erase ; sudo dfu-programmer at90usb162 flash at90usb162.hex
II/ Wire the two devices

The only thing you have to do is to solder 3 wires between these two devices:

GND <--> GND
RX <--> TX
TX <--> RX

The example below shows how to connect a CP2102 converter (left) to a Teensy board (right):

Warning: Rx and Tx may be inverted on the usb to serial TTL board.
The CP2102 converter in the above example has inverted Rx and Tx.
If you use the arduino on-board USB to serial converter, Rx and Tx are inverted.

  • Bumble-b and FT232RL wired on a breadboard:
  • Teensy++ and CP2102 wired on a breadboard:
  • Teensy and CP2102 soldered:
III/ Connect it & use Sixemugui-serial

If you are using windows and a CP2102 usb to ttl board, install the CP2102 windows drivers first.

Connect the USB to serial converter to your PC, and connect the usb dev board to your ps3. Turn the PS3 on (the ps button is not working yet). The ps3 should detect a joystick (turn a sixaxis on, it should be detected as controller #2).

If it's not already done, install the sixemu package (v0.23 or higher).

Start gimx-serial:

In Ubuntu/Linux, the USB to serial TTL converter should be detected as "ttyUSB0", and as "COMX" in windows (with 'X' a number).

Start emuclient & play!

  • Don't set the frequency to a value higher than the mouse frequency (ask google about your mouse frequency, or let the value to 100Hz).
  • It's not recommended to run at 500Hz or 1000Hz, unless you have a realtime linux kernel (running at 500Hz with a 500Hz mouse may generate some small glitches).
  • For details about the installation & the configuration of the sixemu software, read the following tutorial: link.
  • All buttons are "digital" (i.e. value is 0/1, not in 0-255).
  • No PS3 button yet.
  • This is not a true sixaxis emulation. Some games like GT5 are not compatible with gamepads other than the sixaxis. Tested: COD: BO, BF: BC2.
GIMX creator Donate Shop