PS2 gamepad wireless retrofit hack

I reverse-engineered a $10 PS2 gamepad into a wireless robot controller using Arduino and 433 MHz RF modules. Built a custom 13-byte packet protocol covering dual analog sticks and 8 buttons, delivering approximately 23 Hz real-time control.

Story

In January 2009, I needed a reliable wireless control interface for my differential drive robot. Rather than designing one from parts, I repurposed a $10 Gigaware PS2-compatible gamepad from RadioShack. I removed the cable and PCB to expose the raw inputs: two dual-axis joysticks (four 5.2kΩ potentiometers), eight action buttons, and two LEDs.

I opened the gamepad, traced every signal path, and soldered wire-wrap leads to each one. The four analog axes connected to an Arduino Duemilanove on analog inputs A0 through A3 for 10-bit ADC sampling. Eight buttons and two LEDs used digital I/O pins. The cramped shell limited me to 8 of the original 16 buttons, which was enough for directional control, speed, and mode switching.

Wireless communication used 433 MHz TX/RX RF modules. The packet structure I designed was 13 bytes: a sync byte, an address byte, 8 bytes for joystick coordinates (four int16 values), a bit-packed button byte, and a 16-bit checksum. That covered the full robot state in a single frame at approximately 23 packets per second.

Four-byte test packets worked without issue. Scaling to 13 bytes caused over 50% loss. The most likely culprit was UART buffer overflow under software serial at 2400 bps. The diagnostic pointed clearly to hardware UART and Manchester encoding as the right solution for a future iteration. Even with that limitation, the system delivered full wireless teleoperation with analog joystick precision using nothing but repurposed consumer hardware and open-source tools.

Read in the Name of your Lord Who created, Who taught by the pen, and taught humanity what they did not know.

Quran 96:1–96:5
PS2 gamepad with control mappings
4 x 5.2kΩ pots wired to analog inputs
Hand-soldered wire-wrap connections
Arduino and 433 MHz radio modules
13-byte transmission packet
Tinkering with gamepad (Jan 9, 2009)

Impacts

  • Built a complete wireless robot control system for under $15 by repurposing a consumer gamepad
  • Designed a 13-byte packet protocol from scratch covering 4 analog axes, 8 buttons, addressing, and a 16-bit checksum at approximately 23 Hz

Challenges & Solutions

Challenges

  • The PS2 joypad had no documented pinout or library support, requiring physical reverse-engineering to interface it
  • Scaling from 4-byte test packets to the full 13-byte protocol introduced over 50% packet loss on the 433 MHz link
  • Routing 14 signal wires inside the cramped gamepad shell without shorts or mechanical interference

Solutions

  • Opened the gamepad, traced all signal paths by hand, and soldered wire-wrap leads to the four analog potentiometers and eight button contacts
  • Structured the packet with a sync byte, address byte, and 16-bit checksum to isolate and validate each frame. Diagnosed the likely cause as UART buffer overflow under software serial, and identified hardware UART with Manchester encoding as the correct fix for future iterations
  • Used wire-wrap wire for its thin gauge and flexibility, carefully routing all lines through the interior while maintaining the original ergonomics