Hi HACKADAY readers, I have some updates: Progress on UsbXlater, DualShock 4 spoofing
This circuit is a STM32F2 chip with a USB host interface and USB device interface. The original goal of this project is to allow me to play Playstation 4 games using a keyboard and mouse (as opposed to using a gamepad, because the PS3/PS4/Xbox360/XboxOne do not support keyboard and mouse directly in games).
This device has many possible uses…
This circuit can input/output from a USB device while simultaneously input/output with a USB host. So I can take input from a USB mouse and USB keyboard, translate the data into a format that the Playstation accepts, and send it to the Playstation.
- Act as a test signal generator for USB devices, by being a USB host
- Act as a test signal generator for USB hosts, by being a USB device
- Log and analyze traffic between a USB device and USB host, even manipulate the data or inject data
- Block write attempts to USB media, turning any USB drive into read-only, ensuring that data will not be altered or lost
- There are countless more possibilities, use your imagination
The project is open source, click here to download hardware version 20131021. The zip package contains EAGLE schematics, PCB, and a part list.
There is also a github repo for this project.
You can load precompiled firmware without any tools using a bootloader. This means any user can perform firmware updates without needing any tools. However, a firmware developer will find that using some programming and debugging tools is more convenient and helpful:
- Serial port of some sort
- maybe a FT232 or FT230X breakout board? FTDI cable? Anything similar will work
- Debugger (any one of these is good, but I’ve listed them in my order of recommendation)
- J-Link (or J-Link EDU)
- J-Link LITE CortexM
- ST-Link V2
- any other SWD capable debugger
- SWO capability highly recommended
- USB traffic analyzer. This will help a lot, but they can be expensive
The header exposes the SWD interface (SWCLK, SWDIO, SWO), the reset signal, and a serial port (RX and TX). This header is meant for use by firmware developers. There is a jumper header used to select the bootloader. There is a reset button. There are 4 LED indicators.
Internally, the STM32F205RGT runs at 120MHz, has 1 megabyte of flash memory, and 132 kilobytes of RAM. This chip was selected because of its high performance, which means less latency in video gaming applications.
The current work-in-progress firmware is capable of handling unlimited number of slave USB devices (you need a USB hub for more than one device), and the firmware is capable of fully emulating the behaviour of a Playstation controller. The USB framework code is completely ready. It is smooth sailing from here, but it’s not 100% done. The code will be open source once I get a basic demonstration working.
I have many spare blank PCBs of this circuit right now. I plan on giving them away. I will give some to members of the local hackerspaces who are interested. I will also give them to anybody who is interested, but you will have to convince me that you deserve one…
- Preference given to people who will use it for Playstation or Xbox gaming
- Please play a lot of different games, the calibration settings for each game may need to be adjusted
- Personally I only have a Playstation 4 on preorder, not a Xbox One, so preference is given to a Xbox One owner
- Do you have any good ideas?
- Do you already have a USB traffic analyzer? This will help tremendously.
- Can you code a little bit? Do you have any tools that I suggested?
- Must be willing to share your work with me and the public
I encourage you to contact me privately if you want a spare blank PCB. If you want an assembled circuit, you will need to pay for the parts.
Also if you help out, I’ll let you suggest a better name for it. USB Xlater is supposed to be USB Translator, but cooler…
Just in case you feel the urge to tell me that this idea is not new… Let me assure you that I know, there are plenty of products out there like this. But mine is made by me for fun, and it is also open source and hackable