Skip to content
Joypad OS Joypad OS

Joypad OS

Universal controller firmware for adapters, controllers, and input systems.

Joypad OS translates any input device into any output protocol. Connect USB, Bluetooth, or WiFi controllers to retro consoles, or bridge native retro controllers to USB. It runs on RP2040, ESP32-S3, and nRF52840 microcontrollers.


Understand the System

  • Architecture

    The 4-layer model: inputs, core, outputs, and apps

  • Data Flow

    How controller input travels from device to console

  • Glossary

    Key terms: input_event_t, router, profiles, PIO, and more


Browse by Layer

  • Input Interfaces

    USB HID, XInput, Bluetooth, WiFi, SNES, N64, GameCube, NES, Neo Geo, LodgeNet, and more

  • Output Interfaces

    GameCube, PCEngine, Dreamcast, Nuon, 3DO, N64, Loopy, USB Device, BLE, UART

  • Joypad Core

    Router, profiles, players, storage, LEDs, hotkeys, and other shared services

  • Apps

    30+ firmware configurations: usb2gc, bt2usb, snes2usb, n642dc, and more


Getting Started


Console Adapters

Console App Highlights
PCEngine / TurboGrafx-16 usb2pce Multitap (5 players), mouse, 2/3/6-button
GameCube / Wii usb2gc Profiles, rumble, keyboard mode
Sega Dreamcast usb2dc Rumble, analog triggers, 4 players
Nuon usb2nuon Controller, Tempest 3000 spinner, IGR
3DO usb23do 8-player support, mouse, extension passthrough
Neo Geo / SuperGun usb2neogeo 7 profiles, 1L6B arcade layouts
Casio Loopy usb2loopy 4-player (experimental)
N64 (wireless) bt2n64 BT controllers, rumble, profiles

Native Input Adapters

Convert retro controllers to USB or bridge them to other consoles:


Platforms

Platform Apps Documentation
RP2040 All adapters Build Guide
ESP32-S3 bt2usb (BLE) ESP32-S3 Docs
nRF52840 bt2usb, usb2usb (BLE) nRF52840 Docs

For Developers


Protocol Reference

Dive into the low-level console protocols that Joypad OS implements:


Community & Support

Joypad OS is licensed under the Apache-2.0 License.