# joypad-ai/joypad-os

Universal controller firmware core for adapters, dongles, and custom controllers.

Repository: https://github.com/joypad-ai/joypad-os
Canonical: https://ross.abutalabs.com/products/joypad-os
Homepage: https://joypad.ai
Language: C
License: Apache-2.0
License Family: permissive
Topics: pcengine, dinput, gamecube, nuon, switch, tinyusb, usb-hid, xbox-one, xinput, controller, usb, 3do, bluetooth
Last push: 2026-08-25T04:57:09+00:00

## Health v2 (maintenance only)
Score: 99/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 99, release rhythm 98, longevity 100
- inputs: {"age_days": 1445, "days_push": 8, "days_rel": 19, "gap_med": 12.5, "n_releases_24m": 17}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1568, forks 88 (observed 2026-08-28T04:05:05.113137+00:00)

## What it is
Joypad OS (formerly USBRetro) is open-source C firmware for microcontrollers (RP2040, ESP32-S3, nRF52840) that turns any input device into any output protocol. It powers controller adapters, custom controllers, and assistive input devices by normalizing USB HID, Bluetooth, and retro console inputs and routing them to outputs like GameCube, PCEngine, Dreamcast, N64, 3DO, Nuon, and USB/XInput.

## Use cases
- use a modern USB or Bluetooth controller on a retro console like GameCube or PCEngine
- convert retro SNES, N64, or GameCube controllers to USB gamepads
- build a custom controller from buttons and sticks on a microcontroller
- merge multiple assistive input devices into a single gamepad output
- turn a Bluetooth controller into a wired low-latency USB gamepad
- flash firmware onto a controller adapter dongle
- remap buttons and configure controller profiles from a browser

## When to choose
- you are building controller adapters, dongles, or custom gamepads on RP2040, ESP32-S3, or nRF52840 hardware
- you need protocol translation between USB HID/XInput/Bluetooth and retro console interfaces
- you want configurable input routing, profiles, and remapping in firmware
- you need assistive gaming input merging on embedded hardware

## When to avoid
- you need a PC-side driver or software-only controller remapper rather than firmware
- your target console or protocol is not among the supported input/output interfaces
- you are not comfortable flashing .uf2 firmware or compiling embedded C

## Facets
- artifact type: library
- maturity: active
- function: embedded, middleware, sdk
- domain: gaming-tools, hardware, embedded-systems, cross-platform
- platform: embedded, iot, cross-platform
- tags: controller-firmware, game-controller, usb-hid, bluetooth, retro-gaming, console-adapters, rp2040, esp32-s3, nrf52840, input-routing, xinput, dinput, tinyusb, assistive-tech

## Member repositories
- joypad-ai/joypad-os (main) score 99

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:05:05.113137+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T03:58:57.444446+00:00, confidence not recorded.
  - readme: https://github.com/joypad-ai/joypad-os (fetched 2026-08-28T04:05:05.113137+00:00, sha a1ff7ab7bf09)
  - homepage: https://joypad.ai (fetched 2026-08-29T11:28:32.539349+00:00, sha fa019339edd5)
  - site_page: https://docs.joypad.ai (fetched 2026-08-29T11:28:32.548737+00:00, sha 3741ad526f6e)
  - site_page: https://docs.joypad.ai/getting-started/installation (fetched 2026-08-29T11:28:32.550559+00:00, sha 484dc463499b)
- Data as of 2026-08-30T08:39:29.467469+00:00.
