🎮

Build a USB-to-GameCube Controller Adapter

Medium45–90 minutes💰 $31–51🧩 5 parts

🛒 Don't want to build? Buy a ready-made adapter and support Joypad.

Build a USB-to-GameCube Controller Adapter

What Is This?

USB2GC lets you use any modern USB controller (Xbox, PlayStation, Switch, 8BitDo, etc.) on a real GameCube or Wii console. Plug your favorite USB controller into the adapter, plug the adapter into a GameCube controller port, and play.

Why would you want this?

  • Use a modern controller on GameCube/Wii — better ergonomics, more options
  • 5 button mapping profiles — Default, SNES, Smash Bros Melee, Mario Kart Wii, and Fighting game layouts
  • Rumble support — vibration feedback is forwarded to your USB controller
  • Keyboard mode — use a USB keyboard for Phantasy Star Online
  • Copilot mode — combine multiple controllers into one for accessibility

This build requires soldering — you'll wire up a USB-A host port for controller input and a GameCube cable for console output. It's a step up from the USB2USB build, but still very approachable.

Parts List

Part Price Where to Buy
Waveshare RP2040-Zero $5.99 Waveshare / AliExpress
USB-A female breakout board $2.50 Adafruit
GameCube controller extension cable $5–8 Amazon / AliExpress
22–26 AWG wire $3–5 Any electronics supplier
Soldering iron + solder $15–30 If you don't have one
USB-C data cable ~$5 For flashing firmware

Total: ~$25–35 (less if you already have a soldering iron and wire).

You can also use an Adafruit KB2040 ($8.95) instead of the RP2040-Zero — it's the "default" board for this adapter, but the RP2040-Zero works great and is cheaper/smaller.

Step 1: Prepare the GameCube Cable

Cut one end off a GameCube controller extension cable. You'll solder the loose wires to your microcontroller board.

GameCube Controller Cable Pinout

The cable has these conductors:

Pin 1: VCC (5V)
Pin 2: Data (bidirectional joybus line)
Pin 3: GND
Pin 4: GND
Pin 6: 3.3V (some cables — optional)

Strip about 5mm of insulation from each wire. Use a multimeter in continuity mode to identify which wire is which — GameCube cables aren't always color-coded consistently.

Tip: If you're not sure which pin is which on the connector, search for "GameCube controller port pinout" — the plug has a distinctive notched shape that makes orientation easy.

Step 2: Wire the GameCube Connection

RP2040-Zero → GameCube

RP2040-Zero Pin GameCube Cable Signal
5V Pin 1 VCC (5V power)
GND Pin 3 Ground
3V3 Pin 6 3.3V (if present in cable)
GPIO 7 Pin 2 Data (joybus)

The data line uses the GameCube's joybus protocol, implemented via PIO on the RP2040. The firmware handles all the timing — you just need to get the wire to the right pin.

KB2040 → GameCube

Same signals, same pin assignments — GPIO 7 for data, 5V, 3.3V, and GND.

Step 3: Wire the USB Host Port

This is identical to the USB2USB Pico wiring — you're connecting a USB-A breakout board so controllers can plug in.

USB-A Connector Pinout

  ┌───────────────────┐
  │ 1   2   3   4     │
  └───────────────────┘
   VBUS  D-  D+  GND
   (5V)

RP2040-Zero → USB-A Host

RP2040-Zero Pin USB-A Pin Signal Wire Color (typical)
GPIO 10 Pin 3 D+ Green
GPIO 11 Pin 2 D- White
5V Pin 1 VBUS (5V) Red
GND Pin 4 Ground Black

KB2040 → USB-A Host

The KB2040 uses different GPIO pins for PIO-USB. Check the wiring guide for KB2040-specific pin assignments.

Wiring Tips

  • ⚠️ D+ and D- are the most common mistake — if your USB controller isn't detected, these are almost certainly swapped
  • Keep USB wires under 15cm (6 inches)
  • No USB hubs — PIO-USB only supports direct controller connections
  • A USB-A breakout board with labeled pins is much easier than cutting a cable open

Step 4: Flash the Firmware

Download the UF2

Go to github.com/joypad-ai/joypad-os/releases and download:

Board Firmware File
RP2040-Zero joypad_*_usb2gc_rp2040zero.uf2
KB2040 joypad_*_usb2gc_kb2040.uf2

Enter Bootloader Mode

  1. Disconnect the board from everything
  2. Hold BOOT (or BOOTSEL)
  3. While holding, plug the USB-C cable into your computer
  4. Release the button
  5. RPI-RP2 drive appears

Flash

  1. Drag and drop the .uf2 file onto the RPI-RP2 drive
  2. Drive auto-ejects — firmware is flashed
  3. Done!

Step 5: Test It

Basic Test (Without GameCube)

  1. Plug the adapter into your PC via USB-C
  2. Plug a USB controller into the USB-A port
  3. Open config.joypad.ai in Chrome
  4. You should see the controller in the input monitor
  5. Press buttons and verify they register

On the GameCube

  1. Power off the GameCube
  2. Plug the adapter into a controller port (the GameCube cable end)
  3. Plug a USB controller into the adapter's USB-A port
  4. Power on the GameCube
  5. Navigate menus and test in a game

LED Status

  • 🟢 Solid green = no controller connected
  • 🔵 Solid blue = controller connected and working

Using Profiles

USB2GC has 5 built-in button mapping profiles optimized for different games:

How to Switch

  1. Hold Select for 2 seconds
  2. Press D-Pad Up to cycle forward, D-Pad Down to cycle backward
  3. Controller rumbles and LED flashes to confirm
  4. Profile saves to flash — it remembers your choice

Profile Overview

Profile Best For Key Differences
Default Most games Standard mapping — A/B/X/Y, analog triggers
SNES SNES-style games L/R as full digital press, Select→Z
SSBM Super Smash Bros. Melee Light shield, multiple jump buttons, 85% stick sensitivity
MKWii Mario Kart Wii LB→Wheelies, RB→Drift, RT→Item throw
Fighting Fighting games Right stick disabled (prevents accidental input), LB→C-Up

Default Button Mapping

Your Controller GameCube
Cross / A B
Circle / B A
Square / X Y
Triangle / Y X
RB / R1 Z
LT / L2 L (analog)
RT / R2 R (analog)
Start Start
Left Stick Control Stick
Right Stick C-Stick

Troubleshooting

GameCube Doesn't Detect the Adapter

  • Check your GameCube cable wiring — especially the data line on GPIO 7
  • Make sure 5V and GND are connected
  • Verify the 3.3V connection if your cable has it
  • Try a different controller port on the GameCube
  • Try pressing the reset button on the GameCube

USB Controller Not Detected

  • This is almost always D+ and D- swapped on the USB host wiring
  • Verify GPIO 10 → D+ (green) and GPIO 11 → D- (white) on RP2040-Zero
  • Make sure VBUS is providing 5V to the USB-A connector
  • Try a different controller
  • Check the controller compatibility list

Rumble Not Working

  • Not all controllers support rumble feedback — Xbox and PlayStation controllers do
  • High-current rumble may need more power than the adapter can provide
  • Try using a powered USB hub between the controller and adapter (note: PIO-USB hub support is limited)

Buttons Feel Wrong

  • You might be on the wrong profile. Hold Select + D-Pad to cycle through them
  • The default profile maps Cross→B and Circle→A (not the other way around) — this matches GameCube layout conventions

RPI-RP2 Drive Doesn't Appear

  • Hold BOOT before connecting USB
  • Try a different cable (data-capable)
  • Try a different USB port

What's Next?


Estimated build time: 45–90 minutes (includes soldering). Difficulty: Medium.

More Build Guides

Need help with this build?

Join our community for build support. Get help on Discord →