🕹️

Build a GameCube-to-USB Controller Adapter

Medium45–90 minutes💰 $37–60🧩 5 parts

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

Build a GameCube-to-USB Controller Adapter

What Is This?

GC2USB turns a real GameCube controller into a USB gamepad you can use on PC, Mac, Linux, Switch, or anything with a USB port. Full analog support for both sticks and triggers, rumble feedback, and multiple button mapping profiles.

Why would you want this?

  • Use your GameCube controller on PC — for Smash Bros. emulation, Steam games, or anything else
  • Full analog support — both sticks, L/R analog triggers, and C-stick all work properly
  • Rumble feedback — games that support vibration will rumble your GC controller
  • Multiple output modes — XInput (Xbox), PS3, PS4, Switch, keyboard/mouse
  • 3 button profiles — Default, Xbox Layout, Nintendo Layout
  • Web configuration — remap buttons and tweak settings at config.joypad.ai

Unlike the USB2GC adapter (which outputs to a GameCube console), this one reads from a GameCube controller and outputs to USB. The wiring is simpler too — just 3 wires from the controller cable to the board.

Parts List

Part Price Where to Buy
Adafruit KB2040 $8.95 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 connecting to PC

Total: ~$20–30 (less if you already have tools).

You can also use a Raspberry Pi Pico ($4) as a budget alternative — same wiring concept, different board.

How It Works

The GameCube controller speaks a protocol called joybus — a single-wire bidirectional protocol. The RP2040's programmable I/O (PIO) handles the timing-critical joybus communication at 125Hz (the GameCube's native polling rate), while the USB side presents a standard gamepad to your computer.

The adapter reads your GameCube controller's buttons, sticks, and triggers, then translates everything into USB HID (or XInput, PS3, etc.) — no drivers needed.

Step 1: Prepare the GameCube Cable

Cut one end off a GameCube controller extension cable — you want the female end (the socket your controller plugs into). Strip about 5mm of insulation from the wires.

GameCube Controller Cable Pinout

Pin 1: VCC (5V)       — Not used for GC2USB (power comes from USB)
Pin 2: Data           — The one wire that carries all controller data
Pin 3: GND            — Ground
Pin 4: GND            — Ground (sometimes connected to Pin 3)
Pin 6: 3.3V           — Powers the controller

Use a multimeter to identify the wires if they're not clearly color-coded.

Step 2: Wire the GameCube Controller Socket

You only need 3 wires — this is simpler than the USB2GC build because there's no USB host port to wire up.

KB2040 → GameCube Controller Socket

KB2040 Pin GameCube Cable Signal
3V3 Pin 6 (or Pin 1) 3.3V (powers the controller)
GND Pin 3 Ground
GPIO 29 Pin 2 Data (joybus)

Important: The GameCube controller runs on 3.3V, not 5V. Connect 3V3 from the KB2040 to the controller's power pin. The data line is also 3.3V logic, which is native to the RP2040 — no level shifting needed.

Wiring Tips

  • The data line is GPIO 29 — this is specified in the firmware for gc2usb builds
  • Keep the data wire reasonably short for signal integrity
  • Make sure GND is solid — a bad ground causes flaky connections
  • If using a Pico instead of KB2040, the data line is also GPIO 29

Step 3: Flash the Firmware

Download the UF2

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

Board Firmware File
KB2040 joypad_*_gc2usb_kb2040.uf2

Enter Bootloader Mode

  1. Disconnect the board from everything
  2. Hold the BOOT button on the KB2040
  3. While holding BOOT, plug the USB-C cable into your computer
  4. Release BOOT
  5. A drive named RPI-RP2 appears

Flash

  1. Drag and drop the .uf2 file onto the RPI-RP2 drive
  2. Drive auto-ejects — firmware is installed
  3. The board reboots and is ready to go

Step 4: Test It

  1. Plug the adapter into your PC via USB-C
  2. Plug your GameCube controller into the adapter's GameCube socket
  3. Open a gamepad tester:
  4. Move sticks, press buttons, squeeze triggers — verify everything registers
  5. Check analog values:
    • Main stick and C-stick should show smooth analog movement
    • L and R triggers should show analog values (0–255)
    • All 8 buttons + D-pad should respond

LED Status

  • 🟢 Solid green = no controller connected
  • 🔵 Solid blue = GameCube controller connected and reading

USB Output Modes

Double-click the board button to cycle through output modes:

SInput → XInput → PS3 → PS4 → Switch → Keyboard/Mouse → SInput

Triple-click to reset back to SInput (default).

Mode is saved to flash — it remembers your choice across power cycles.

Button Mapping Profiles

GC2USB has 3 profiles you can cycle between:

Default Profile

GC Button USB Output
A B1 (Cross/A)
B B2 (Circle/B)
X B3 (Square/X)
Y B4 (Triangle/Y)
L L1
R R1
Z R2
Start Start
D-Pad D-Pad
Main Stick Left Analog
C-Stick Right Analog
L Trigger L2 (analog)
R Trigger R2 (analog)

Xbox Layout

A and B are swapped to match Xbox controller conventions.

Nintendo Layout

X and Y are swapped to match Nintendo controller conventions.

Web Config

For full control over button mappings, connect the adapter and open config.joypad.ai in Chrome or Edge:

  • Create custom button mappings
  • Monitor input in real time
  • Test rumble
  • Switch output modes
  • Reboot into bootloader for firmware updates

Troubleshooting

GameCube Controller Not Detected

  • Check the data line — GPIO 29 must be connected to Pin 2 of the GameCube cable
  • Verify 3.3V power is reaching the controller (measure with a multimeter)
  • Check GND connection
  • Try a different GameCube controller — the adapter supports OEM and most third-party controllers
  • Try pressing the reset button on the board (or unplug/replug)

Stick Drift or Incorrect Calibration

  • GameCube controllers center at 128. The adapter auto-calibrates on startup
  • If you see drift, unplug and replug the controller while keeping the sticks centered
  • Physical stick drift on old GameCube controllers is common — that's a hardware issue with the controller itself

Analog Triggers Not Working

  • Make sure you're in a mode that supports analog triggers (SInput and XInput both do)
  • Check the gamepad tester — L2/R2 should show smooth analog values
  • The L and R buttons also register a digital press at full squeeze

Rumble Not Working

  • Rumble only works in games/apps that send vibration feedback via USB
  • Make sure your output mode supports rumble (SInput and XInput both do)
  • Steam may need rumble enabled in controller settings

No LED / Board Doesn't Power On

  • Try a different USB cable (data-capable)
  • Try a different USB port
  • If the board was working before, try reflashing firmware via bootloader mode

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 →