gitwtfhub

wtf is usb-gamecube-controller-adapter?

loopj/usb-gamecube-controller-adapter — explained in plain English

Analysis updated 2026-05-18

16CAudience · developerComplexity · 3/5Setup · moderate

TL;DR

Open source firmware that turns a cheap ESP32-S3 or Raspberry Pi Pico board into a 4 port USB adapter for real GameCube controllers, recognized by the Wii U, Switch, and Dolphin.

Mindmap

mindmap
  root((GameCube USB Adapter))
    What it does
      Reads 4 GameCube controllers
      Exposes them over USB
      Supports rumble and WaveBird
    Tech stack
      C
      TinyUSB
      Pico SDK and ESP-IDF
    Use cases
      Play GameCube games on Switch
      Use Dolphin emulator
      Build a custom adapter
    Hardware
      ESP32-S3
      Raspberry Pi Pico
      Pull up resistors
    Audience
      Hobbyist makers
      GameCube fans

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Flash a ready made firmware file onto a cheap board to make a working GameCube controller adapter.

REASON 2

Play GameCube games with original controllers on Wii U, Switch, Switch 2, or the Dolphin emulator.

REASON 3

Wire up to four GameCube controllers, including a WaveBird wireless receiver, to one small board.

REASON 4

Build the firmware from source to add support for a new board or customize which pins are used.

What's in the stack?

CTinyUSBESP-IDFPico SDKCMake

How it stacks up

loopj/usb-gamecube-controller-adapterbrucenguyen1102/canon-lbp2900-capt-toolkitdanveloper/flash-pi-dsv4
Stars161616
LanguageCCC
Setup difficultymoderatemoderatehard
Complexity3/53/55/5
Audiencedevelopergeneralresearcher

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · moderate Time to first run · 30min

Using a prebuilt firmware is quick, but you still need to solder or wire connectors and add pull up resistors to the data lines.

The README does not state a license, so the terms for using or redistributing this code are unclear.

Wtf does this do

This project is an open source, do it yourself replacement for Nintendo's official USB GameCube controller adapter, the small box that lets you plug real GameCube controllers into a computer or a modern console. Like the official adapter, it reads up to four GameCube controllers using the Joybus protocol they normally speak and presents them to a computer over USB. The project is built on two of the author's own libraries, one for talking the Joybus protocol and one for USB device support, and it targets two families of cheap microcontroller boards: the ESP32-S3 and the Raspberry Pi Pico, including its RP2040 and newer RP2350 chips. It supports all four controller ports at once, controller rumble, and even the wireless WaveBird receiver, which the README notes many cheaper clone adapters do not support. Input is polled at 1000 times per second for low delay, and the finished adapter is recognized as the genuine Nintendo adapter by the Wii U, the Switch, the Switch 2, and the Dolphin GameCube emulator. For most people, using it means downloading a ready made firmware file for a supported board, such as a Raspberry Pi Pico, Pico 2, or one of several small Waveshare boards, and copying or flashing that file onto the board. No coding is required for this path, only a few button presses to put the board into its firmware update mode. Building the adapter also requires some basic electronics work: wiring each GameCube controller's power, ground, and data lines to the board, plus a small pull up resistor on each data line so the signal reads correctly. A wiring table in the README shows exactly which pin on each supported board corresponds to each of the four controller ports. Developers who want to customize the firmware, for example to use different pins or add new boards, can build it from source using the official Raspberry Pi Pico SDK or Espressif's ESP-IDF toolchain, with ready made build presets provided for common boards.

Yoink these prompts

Prompt 1
Walk me through wiring a GameCube controller to a Raspberry Pi Pico for this adapter, including the pull up resistor.
Prompt 2
Explain how to flash the prebuilt firmware for a Waveshare ESP32-S3-Zero board from the releases page.
Prompt 3
Show me the cmake commands to build this firmware from source for a custom Raspberry Pi Pico configuration.
Prompt 4
Help me understand how the Joybus protocol is used to read GameCube controllers in this project.

Frequently asked questions

wtf is usb-gamecube-controller-adapter?

Open source firmware that turns a cheap ESP32-S3 or Raspberry Pi Pico board into a 4 port USB adapter for real GameCube controllers, recognized by the Wii U, Switch, and Dolphin.

What language is usb-gamecube-controller-adapter written in?

Mainly C. The stack also includes C, TinyUSB, ESP-IDF.

What license does usb-gamecube-controller-adapter use?

The README does not state a license, so the terms for using or redistributing this code are unclear.

How hard is usb-gamecube-controller-adapter to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is usb-gamecube-controller-adapter for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.