Your Retro Console Doesn't Need a PC to Talk to a Modern Controller
You've got a drawer full of controllers—USB, Bluetooth, maybe a GameCube pad you can't bear to part with—and a retro console that only speaks its own native protocol. The usual solution involves a PC running adapter software, which is clunky and adds latency. Joypad OS takes a different approach: it's firmware that runs directly on a microcontroller, so your adapter is a tiny chip doing all the translation work instead of your computer.
What It Does
Joypad OS is an open-source firmware platform for game controllers and adapters. You flash it onto a small microcontroller board—specifically the RP2040, ESP32-S3, or nRF52840—and it handles the entire job of reading inputs, translating protocols, and routing signals to whatever output you need. No PC in the loop.
The architecture works by normalizing every input source into a common format, then routing that through configurable player slots before translating it into the target output protocol. That output could be a retro console protocol bit-banged via PIO, or modern USB HID and XInput. The practical result is that you can use a modern USB or Bluetooth controller on a GameCube, Dreamcast, PCEngine, or 3DO—or go the other direction and convert a retro controller to USB. It also supports custom controllers (wire up buttons and sticks to a microcontroller and get a USB gamepad), assistive setups that merge multiple input devices into one output, and wireless adapters that turn a Bluetooth controller into a wired USB gamepad.
The project was formerly known as USBRetro, so if you've seen that name around, it's the same thing.
Why It's Cool
-
The microcontroller-first design is the whole point. Running firmware on a chip instead of a PC eliminates the middleman entirely. Your adapter is a self-contained device—plug it in and it works. That's a fundamentally better user experience than juggling adapter software on a computer.
-
The input normalization architecture is genuinely flexible. Because every input gets converted to a common format before routing, the system isn't locked into specific pairings. The README describes merging switches, joysticks, and eye trackers into a single controller output—that's a real accessibility use case that most adapter projects don't touch.
-
Prebuilt firmware means you don't have to compile anything. If you already own an adapter, you download a
.uf2file, hold BOOT while connecting USB-C, drag the file onto theRPI-RP2drive, and you're done. That's about as low-friction as firmware updates get. -
The build system is straightforward. Named make targets like
usb2gc_kb2040andbt2usb_pico_wtell you exactly what you're building and for which board. There's no guessing which combination of flags you need. -
It spans three microcontroller families. RP2040, ESP32-S3, and nRF52840 coverage means you're not locked into a single chip vendor or board.
How to Try It
If you already have a compatible adapter, updating is the easy path:
- Download the latest
.uf2for your adapter from the Releases page. - Enter the bootloader by holding BOOT and connecting USB-C (or double-tap reset).
- Drag the
.uf2file onto theRPI-RP2drive that appears. - The drive ejects and your adapter runs the new firmware.
If you want to build from source on RP2040 (macOS example):
# Install ARM toolchain
brew install --cask gcc-arm-embedded cmake git
# Clone and initialize
git clone https://github.com/joypad-ai/joypad-os.git
cd joypad-os && make init
# Build an adapter
make usb2gc_kb2040 # USB/BT to GameCube
make usb2usb_feather # USB/BT to USB HID
make bt2usb_pico_w # Bluetooth to USB
make snes2usb_kb2040 # SNES controller to USB
For ESP32-S3, there's a one-time make init-esp setup, then make bt2usb_esp32s3 to build and make flash-bt2usb_esp32s3 to flash. The nRF52840 path uses make init-nrf with Nordic's NCS toolchain.
Full installation details, including troubleshooting and LED status codes, are in the docs. The repo is at github.com/joypad-ai/joypad-os.
Final Thoughts
Joypad OS is aimed at people who want a purpose-built adapter rather than a software stack running on a PC—and it covers a lot of ground for that audience, from retro console conversion to accessibility setups. The prebuilt firmware path makes it accessible even if you never touch the toolchain, while the multi-board support gives builders room to pick their hardware. If you've been putting off a controller adapter project because the software side seemed annoying, this is worth a look.