# Arcade Stick Conversion

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/129/798/medium800/hacks_xarcadepicoconversion.jpg?1714582694)

https://youtu.be/7aLU7XZGk-Q

![](https://cdn-learn.adafruit.com/assets/assets/000/129/761/medium800/hacks_xarc-9056.jpg?1714532959)

Play games with a proper old-school arcade joystick and buttons on your modern systems! Back at the dawn of MAME arcade game emulation there were lots of heavy-duty joysticks made for Windows PCs. Their joysticks and buttons are great, but their brains were meant to output over PS/2 keyboard cables or sound card joystick interfaces.

Now you can keep all the good parts and swap out the old-fashioned driver board for a Raspberry Pi Pico microcontroller that works as a gamepad over USB. With the Pico H and Terminal PiCowbell you can avoid soldering altogether for a plug-and-play solution.

Primary: This particular arcade stick has a trackball that is already a USB HID mouse device, so we'll leave it as-is.

## Parts
### Raspberry Pi Pico H - Pico with Headers Soldered

[Raspberry Pi Pico H - Pico with Headers Soldered](https://www.adafruit.com/product/5525)
The Raspberry Pi foundation changed single-board computing&nbsp;[when they released the Raspberry Pi computer](https://www.raspberrypi.org/archives/723), now they're ready to do the same for microcontrollers with the release of the brand new&nbsp; **Raspberry Pi Pico H with...**

In Stock
[Buy Now](https://www.adafruit.com/product/5525)
[Related Guides to the Product](https://learn.adafruit.com/products/5525/guides)
![Angled shot of a skinny green microcontroller with headers.](https://cdn-shop.adafruit.com/640x480/5525-02.jpg)

### Adafruit Terminal PiCowbell for Pico with Pre-Soldered Sockets

[Adafruit Terminal PiCowbell for Pico with Pre-Soldered Sockets](https://www.adafruit.com/product/5907)
Ding dong! Hear that? It's the PiCowbell ringing, letting you know that the new **&nbsp;Adafruit Terminal PiCowbell** &nbsp;is finally in stock and ready to assist your&nbsp;[Raspberry Pi Pico](https://www.adafruit.com/product/4864)&nbsp;and&nbsp;<a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/5907)
[Related Guides to the Product](https://learn.adafruit.com/products/5907/guides)
![Angled Shot ](https://cdn-shop.adafruit.com/640x480/5907-02.jpg)

### 2.5mm Pitch 5-pin Cable Matching Pair - JST XH compatible

[2.5mm Pitch 5-pin Cable Matching Pair - JST XH compatible](https://www.adafruit.com/product/4875)
These solid 2.5mm pitch connector cable pairs are great when you need something that can carry a couple amps of current, easy to connect and disconnect, and is just-about 0.1" pitch compatible.

These cables are nice and long, 20cm in fact. They've got both small form factor and...

In Stock
[Buy Now](https://www.adafruit.com/product/4875)
[Related Guides to the Product](https://learn.adafruit.com/products/4875/guides)
![Angled shot of 5-pin cable matching pair.](https://cdn-shop.adafruit.com/640x480/4875-02.jpg)

### Panel Mount Extension USB Cable - Micro B Male to Micro B Female

[Panel Mount Extension USB Cable - Micro B Male to Micro B Female](https://www.adafruit.com/product/3258)
Check out this handy MicroUSB extension cable, which will make it easy for you to enclose a device that has a B&nbsp;type (micro USB host) port. Great if you need to extend the USB port for your Raspberry Pi, Arduino, Feather or really anything development board.  
  
This Micro-B...

In Stock
[Buy Now](https://www.adafruit.com/product/3258)
[Related Guides to the Product](https://learn.adafruit.com/products/3258/guides)
![12 inch long black, panel mount extension USB Cable - Micro B plug to Micro B socket](https://cdn-shop.adafruit.com/640x480/3258-02.jpg)

### Right Angle USB cable - A/MicroB

[Right Angle USB cable - A/MicroB](https://www.adafruit.com/product/1318)
This here is your standard A to micro-B USB cable, for USB 1.1 or 2.0, but with a twist! Literally! Instead of the cable coming straight out from the connector, there's a right angle bend. We thought this might make a good pair for a Raspberry Pi **Model A or B** as the cable...

In Stock
[Buy Now](https://www.adafruit.com/product/1318)
[Related Guides to the Product](https://learn.adafruit.com/products/1318/guides)
![USB cable with Type A and Right Angle Micro B end](https://cdn-shop.adafruit.com/640x480/1318-05.jpg)

### Old Arcade Controller to Resurrect

This type of controller can be found at yard sales and online auctions -- they were made for MAME gaming on PCs with PS/2 or sound card joystick ports. Build like tanks, they contain real arcade joysticks and buttons and an obsolete controller interface PCB we'll bypass to modernize it!

This guide shows an X-Arcade Tankstick, but nearly any arcade-style controller should work.

![hacks_xsolo.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/704/medium640/hacks_xsolo.jpg?1714431926)

Info: You can alternatively build your own controller from scratch using the following items, plus an enclosure of your own design.

### Small Arcade Joystick

[Small Arcade Joystick](https://www.adafruit.com/product/480)
This snappy 8-way joystick beckons you to play with it! It is rugged, and not too large, reminiscent of a Pac Man arcade cabinet. Unlike the potentiometer-based 2-axis and mini thumbsticks, this joystick uses 4 snap microswitches so it's good if you want a directional control but not the...

In Stock
[Buy Now](https://www.adafruit.com/product/480)
[Related Guides to the Product](https://learn.adafruit.com/products/480/guides)
![Small Arcade Joystick with red ball](https://cdn-shop.adafruit.com/640x480/480-00.jpg)

### Arcade Button - 30mm Translucent Clear

[Arcade Button - 30mm Translucent Clear](https://www.adafruit.com/product/471)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. They're the same size as common arcade controls (often referred to as 30mm diameter) but have some nice things going for them that justify the extra dollar.  
  
First,...

In Stock
[Buy Now](https://www.adafruit.com/product/471)
[Related Guides to the Product](https://learn.adafruit.com/products/471/guides)
![Angled shot of a clear round 30mm arcade button. ](https://cdn-shop.adafruit.com/640x480/471-00.jpg)

### Arcade Button Quick-Connect Wire Pairs - 0.11" (10 pack)

[Arcade Button Quick-Connect Wire Pairs - 0.11" (10 pack)](https://www.adafruit.com/product/1152)
Quick connector wire sets will make wiring up our arcade-style or metal buttons quicky-quick. Each wire comes as a 'pair' with two 0.11" quick-connects pre-crimped onto 20cm long wires. The wires are then terminated together in a JST 2.5mm/0.1" spaced 2-pin connector (we...

In Stock
[Buy Now](https://www.adafruit.com/product/1152)
[Related Guides to the Product](https://learn.adafruit.com/products/1152/guides)
![Angled shot of ten 20 cm long quick-connect wire pairs. ](https://cdn-shop.adafruit.com/640x480/1152-06.jpg)

# Arcade Stick Conversion

## Pico Setup

![](https://cdn-learn.adafruit.com/assets/assets/000/129/762/medium800/hacks_xarc-9035.jpg?1714534229)

## Terminal PiCowbell

Orient your Pico H or Pico WH as shown -- with the Pico USB port above the PiCowbell I2C STEMMA QT port -- and press the header pins into the sockets.

![hacks_xarc-9036.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/763/medium640/hacks_xarc-9036.jpg?1714534380)

![hacks_xarc-9037.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/764/medium640/hacks_xarc-9037.jpg?1714534392)

![](https://cdn-learn.adafruit.com/assets/assets/000/129/767/medium800/hacks_xarc-9039.jpg?1714534415)

## Install Firmware and Customize Settings

[GP2040-CE](https://gp2040-ce.info/#/installation)&nbsp;is an open source gamepad firmware that's compatible with RetroPie, PC, PS3/PS4, Nintendo Switch, Xbox, and more. It runs on a number of microcontrollers that use the RP2040 chip, such as Pico,&nbsp;[KB2040 Kee Boar](https://www.adafruit.com/product/5302), and more.

Flash the Pico with a drag-and-drop .uf2 file and then customize settings with a web editor.

## Download Firmware

From the&nbsp;[GP2040-CE Downloads page](https://gp2040-ce.info/downloads/), click the Download button for the Raspberry Pi Pico firmware.

This will save a file named&nbsp;`GP2040-CE_0.7.8_Pico.uf2`&nbsp;(or later) to your download location.

![hacks_picodown.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/720/medium640/hacks_picodown.jpg?1714488183)

Info: A Pico W will work for this project too, although there are currently no WiFi or BLE features in GP2040. If using a Pico W, download the GP2040 for that specific board from the downloads page.

## Firmware Installation

[This page](https://gp2040-ce.info/installation) gives detailed instructions on installation, but the basic steps are:

- While holding the BOOTSEL button down, plug the Pico into your computer with a known good data and power USB cable -- this puts the board into **BOOTSEL** /USB drive mode
- A new removable drive named `RPI-RP2` will appear on your computer
- Drag-and-drop the G **P2040-CE v0.7.8.uf2** (or later) firmware **.uf2** file onto the `RPI-RP2` drive and wait for it to copy the file and reboot itself

![hacks_gp2040logo.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/721/medium640/hacks_gp2040logo.jpg?1714488288)

## Web Configurator

Unplug the Pico from your computer's USB cable. Then, you'll use a short wire to jumper Pico pin **GP17** to a **GND** pin (see attached diagram for physical pin locations).

Plug the Pico into your computer's USB cable while pin **GP17** is shorted to **ground**. After a couple of seconds you can remove the wire. This action has caused the Pico's GP2040-CE firmware to launch a web server you can access from your computer's web browser by visiting [http://192.168.7.1](http://192.168.7.1)

![hacks_fritz_short_S2.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/722/medium640/hacks_fritz_short_S2.jpg?1714488375)

![hacks_xarc-9040.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/768/medium640/hacks_xarc-9040.jpg?1714534474)

![hacks_xarc-9041.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/769/medium640/hacks_xarc-9041.jpg?1714534483)

Primary: You can configure the Pico to act like different controllers, such as PS4, Xbox, Switch, XInput, and more. We'll pick DirectInput, which is a venerable controller scheme with excellent compatibility with PC, Mac OS, and Linux based machines.

## Settings

You can now update the controller settings.

Click on the **Settings** menu item and then switch the **Input Mode** to **PS3/DirectInput** then press **Save**.

You can alternately use this on your Switch, Xbox, or Playstation -- just pick the appropriate Input Mode from the menu.

![hacks_set1.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/723/medium640/hacks_set1.jpg?1714489050)

![hacks_set2.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/725/medium640/hacks_set2.jpg?1714489298)

## Reboot

To get the Pico out of configuration mode and into controller mode, click the **REBOOT** button in the upper right corner of the configuration page.&nbsp;

This opens a reboot popup. From here, click the **CONTROLLER** button to restart the Pico in controller mode.

![hacks_reboot.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/733/medium640/hacks_reboot.jpg?1714497569)

Danger: If you ever need to get back to configuration, short GPIO17 to ground during power-up. Once your Pico is wired to your arcade controller, this will be the START button.

The pinout diagram below shows the default GPIO-pin to button mapping.

![](https://cdn-learn.adafruit.com/assets/assets/000/129/731/medium800/hacks_RaspberryPiPico_Pinout-ec2b4b899478cf9d0e04bf5d89bc106b.jpg?1714494797)

## Button Test

This is a great time to test the controller to make sure basic button presses are working.

Plug the Pico into your computer with a known good USB-C to Micro-B data and power&nbsp;[cable](https://www.adafruit.com/product/3879). Head to this [gamepad tester](https://hardwaretester.com/gamepad) in your browser to see the button presses.

You can now use a jumper wire to short any mapped GPIO pin to ground -- those button presses will register on the controller tester.&nbsp;

![hacks_tester.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/732/medium640/hacks_tester.jpg?1714497434)

# Arcade Stick Conversion

## Arcade Wiring

![](https://cdn-learn.adafruit.com/assets/assets/000/129/770/medium800/hacks_jep_tank_buttons.jpg?1714535214)

The default button-to-pin assignments in the GP-2040 Pico firmware will work well for most arcade controllers. The diagram above shows the GPIO pin numbering for the joystick and thirteen user buttons, as well as the reset button and enable switch.

## Wiring Harness

The microswitches that are actuated by the buttons and joysticks all use spade connector wiring. You can use these to connect to the terminal PiCowbell directly, or in the case of the X-Arcade, these are bundled and connected to the original PCB with JST-XH 5-conductor shrouded connectors.

Note how many of the ground runs are daisy-chained to reduce the number of connections back to the main board.

![hacks_xarc-9022.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/772/medium640/hacks_xarc-9022.jpg?1714540921)

![hacks_xarc-9021.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/773/medium640/hacks_xarc-9021.jpg?1714540931)

![hacks_xarc-8603.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/774/medium640/hacks_xarc-8603.jpg?1714541165)

![hacks_xarc-9023.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/775/medium640/hacks_xarc-9023.jpg?1714541181)

We can use the JST-XH cable sets to make the wiring simpler -- unplug them from the old PCB and plug them into the cable extensions to wire into the terminal blocks.

I used a continuity tester on my multimeter to determine the switch-to-wire correspondence and labeled each cable set before wiring.

This also included one sub-harness for the built-in power LED, and the selector switch for the enable pin.

![hacks_xarc-9028.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/776/medium640/hacks_xarc-9028.jpg?1714541217)

![hacks_xarc-9029.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/777/medium640/hacks_xarc-9029.jpg?1714541233)

![hacks_xarc-9027.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/778/medium640/hacks_xarc-9027.jpg?1714541275)

![hacks_xarc-9026.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/779/medium640/hacks_xarc-9026.jpg?1714541288)

![](https://cdn-learn.adafruit.com/assets/assets/000/129/780/medium800/hacks_xarc-9030.jpg?1714541405)

## USB Cable Extension

Use an available hole (from removing the old PS/2 and D-sub cabling) to run a USB micro-B panel mount extension. This plugs into the Pico on one end, and mounts to the exterior on the other.

You can then plug in a USB cable externally to plug into your gaming machine, and remove it when not in use.

![hacks_xarc-9044.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/781/medium640/hacks_xarc-9044.jpg?1714541630)

![hacks_xarc-9046.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/782/medium640/hacks_xarc-9046.jpg?1714541642)

![hacks_xarc-9047.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/783/medium640/hacks_xarc-9047.jpg?1714541744)

![hacks_xarc-9055.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/784/medium640/hacks_xarc-9055.jpg?1714541768)

## Case Closed

Fit the bottom panel back into the case and screw it in place.

![hacks_xarc-9053.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/785/medium640/hacks_xarc-9053.jpg?1714541841)

![](https://cdn-learn.adafruit.com/assets/assets/000/129/796/medium800/hacks_xarc-9056.jpg?1714541912)

This particular controller is a dual user setup. Since you can plug multiple USB devices into your computer for multiplayer gaming, a second Pico wired to the second set of buttons would give you exactly what you need for head-to-head gaming!


## Featured Products

### Raspberry Pi Pico H - Pico with Headers Soldered

[Raspberry Pi Pico H - Pico with Headers Soldered](https://www.adafruit.com/product/5525)
The Raspberry Pi foundation changed single-board computing&nbsp;[when they released the Raspberry Pi computer](https://www.raspberrypi.org/archives/723), now they're ready to do the same for microcontrollers with the release of the brand new&nbsp; **Raspberry Pi Pico H with...**

In Stock
[Buy Now](https://www.adafruit.com/product/5525)
[Related Guides to the Product](https://learn.adafruit.com/products/5525/guides)
### Adafruit Terminal PiCowbell for Pico with Pre-Soldered Sockets

[Adafruit Terminal PiCowbell for Pico with Pre-Soldered Sockets](https://www.adafruit.com/product/5907)
Ding dong! Hear that? It's the PiCowbell ringing, letting you know that the new **&nbsp;Adafruit Terminal PiCowbell** &nbsp;is finally in stock and ready to assist your&nbsp;[Raspberry Pi Pico](https://www.adafruit.com/product/4864)&nbsp;and&nbsp;<a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/5907)
[Related Guides to the Product](https://learn.adafruit.com/products/5907/guides)
### Right Angle USB cable - A/MicroB

[Right Angle USB cable - A/MicroB](https://www.adafruit.com/product/1318)
This here is your standard A to micro-B USB cable, for USB 1.1 or 2.0, but with a twist! Literally! Instead of the cable coming straight out from the connector, there's a right angle bend. We thought this might make a good pair for a Raspberry Pi **Model A or B** as the cable...

In Stock
[Buy Now](https://www.adafruit.com/product/1318)
[Related Guides to the Product](https://learn.adafruit.com/products/1318/guides)
### 2.5mm Pitch 5-pin Cable Matching Pair - JST XH compatible

[2.5mm Pitch 5-pin Cable Matching Pair - JST XH compatible](https://www.adafruit.com/product/4875)
These solid 2.5mm pitch connector cable pairs are great when you need something that can carry a couple amps of current, easy to connect and disconnect, and is just-about 0.1" pitch compatible.

These cables are nice and long, 20cm in fact. They've got both small form factor and...

In Stock
[Buy Now](https://www.adafruit.com/product/4875)
[Related Guides to the Product](https://learn.adafruit.com/products/4875/guides)
### Micro B Round Panel Mount Extension Cable - 30cm

[Micro B Round Panel Mount Extension Cable - 30cm](https://www.adafruit.com/product/4217)
If you need to add a panel-mount connection for USB Micro B,&nbsp; but don't have the time or ability to cut a custom oval or square hole, this **&nbsp;Round Panel Mount Extension Cable&nbsp;** is the easiest and fastest way to panel-ify your existing micro-B USB kit. The...

In Stock
[Buy Now](https://www.adafruit.com/product/4217)
[Related Guides to the Product](https://learn.adafruit.com/products/4217/guides)
### Panel Mount Extension USB Cable - Micro B Male to Micro B Female

[Panel Mount Extension USB Cable - Micro B Male to Micro B Female](https://www.adafruit.com/product/3258)
Check out this handy MicroUSB extension cable, which will make it easy for you to enclose a device that has a B&nbsp;type (micro USB host) port. Great if you need to extend the USB port for your Raspberry Pi, Arduino, Feather or really anything development board.  
  
This Micro-B...

In Stock
[Buy Now](https://www.adafruit.com/product/3258)
[Related Guides to the Product](https://learn.adafruit.com/products/3258/guides)

## Related Guides

- [Adafruit Terminal PiCowbell for Pico](https://learn.adafruit.com/adafruit-terminal-picowbell-for-pico.md)
- [No-Code Counters and Email Reports with Adafruit IO Actions](https://learn.adafruit.com/no-code-counters-and-email-reports-with-adafruit-io-actions.md)
- [Bass MIDI Stomp Box](https://learn.adafruit.com/midi-bass-synth-stomp-box.md)
- [Using Adafruit IO Actions to Make an IoT Door Detector](https://learn.adafruit.com/using-adafruit-io-actions-to-make-an-iot-door-detector.md)
- [Trash Panda 2: Garbage Day](https://learn.adafruit.com/trash-panda-2-dumpster-dive.md)
- [Quick-Start the Pico W WiFi with CircuitPython](https://learn.adafruit.com/pico-w-wifi-with-circuitpython.md)
- [Bluefruit Controlled Macetech RGB LED Shades](https://learn.adafruit.com/ledshades.md)
- [Match3 Game on the Fruit Jam and  Adafruit Metro RP2350](https://learn.adafruit.com/match3-game-on-metro-rp2350.md)
- [EYE SHOOTOUT: Contrasting Open Source and Big Retail Electronics](https://learn.adafruit.com/eye-shootout-contrasting-open-source-and-big-retail-electronics.md)
- [NeoPIO: Drive lots of LEDs with Raspberry Pi Pico](https://learn.adafruit.com/neopio-drive-lots-of-leds-with-raspberry-pi-pico.md)
- [Circuit Playground Bike Glove](https://learn.adafruit.com/circuit-playground-bike-glove.md)
- [Adafruit HX711 24-bit ADC](https://learn.adafruit.com/adafruit-hx711-24-bit-adc.md)
- [Feather Guitar Hero Adapter](https://learn.adafruit.com/feather-guitar-hero-adapter.md)
- [Arcade Coin-Op](https://learn.adafruit.com/arcade-coin-op.md)
- [USB C CC Resistor Fixer Case](https://learn.adafruit.com/resistor-fixer-case.md)
