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
- Disconnect the board from everything
- Hold the BOOT button on the KB2040
- While holding BOOT, plug the USB-C cable into your computer
- Release BOOT
- A drive named
RPI-RP2appears
Flash
- Drag and drop the
.uf2file onto theRPI-RP2drive - Drive auto-ejects — firmware is installed
- The board reboots and is ready to go
Step 4: Test It
- Plug the adapter into your PC via USB-C
- Plug your GameCube controller into the adapter's GameCube socket
- Open a gamepad tester:
- gamepad-tester.com in Chrome
- Or Windows:
joy.cpl(Set up USB game controllers)
- Move sticks, press buttons, squeeze triggers — verify everything registers
- 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?
- USB2GC Guide — Go the other direction — use USB controllers on GameCube
- USB2USB Guide — Universal USB controller translator
- BT2USB Guide — Wireless Bluetooth-to-USB adapter
- Controller Archive — Full compatibility list
- Web Configurator — Customize button mappings and settings
- Community Discord — Share your build, get help
Estimated build time: 45–90 minutes (includes soldering). Difficulty: Medium.