Introduction: Hacking a USBasp Dongle Into a PPM2USB RC SIM Dongle

Here's a 10 minute hack which will turn one of these awful USBasp dongles into something useful: a RC PPM to USB joystick converter. There's nothing fancy going on here, all the credit goes to Thomas Pfeifer's PPM2USB project.

Things you'll need:
A USBasp dongle (http://www.aliexpress.com/item/WholeSale-New-USBASP-USBISP-AVR-Programmer-USB-ATMEGA8-ATMEGA128/676088426.html)
An AVR programmer (I used an arduino with an ISP sketch + AVRdude.)
A jack plug on a lead (assuming your radio has a jack trainer socket) I used some crappy old headphones.
Soldering Iron etc.

There are loads of different USBasp dongles out there, just make sure it's got an ATMEGA8, and you can get at the pins relatively easily. Luckily there's only one pin to reroute.


Step 1: Hacking (literally)

We need to use pin B0 (pin 12) for its ICP1 function to time the incoming PPM signal. Unfortunately USBasp uses this pin as USB D+. So we're going to have to reroute it somewhere else...

So first just scrape off the solder mask from the track coming from pin 12, then cut it so you can solder onto both sides.


Step 2: Rewiring

Pin 9 is D5, which is relatively easily accessible, so we'll reroute D+ to there.

So just get a bit of wire and solder it in there! (It's the one on the left in the picture)

We then need to get the PPM signal into pin 12, so just solder a wire from the track to the NC pin. That conveniently gives us a ground and signal on the header.

Then just wire up an old jack plug so the tip is connected to NC and the base is connected to GND on the header.

Step 3: Programming

First we need to enable self-programming on the USBasp by soldering over the self-programming jumper. All this does is jump the USBasp MEGA8's reset line to the reset pin on the header. This was labelled J2 on my board.

You'll now need an AVR programmer. Arduino has an example sketch called Ardunio ISP you can use with AVRdude.

Either way, hook up the MISO,MOSI,SCK,VCC,RST,GND lines on the header to the appropriate places (check the instructions for your programmer)

Program the attached hex binary onto the device. (This was modified off of PPM2USB to change the D+ pin over to D5, and to allow the device to enumerate even if a TX is not plugged in.)

Step 4: Have Fun!

Okay, you should be good to go now.

On my 9x transmitter I had to change the "Shift Sel" to NEG in the setup page (page 2)

Then just plug it in a USB hole and a joystick appears!