# Joypad AI — Full Context for AI Agents > Use any controller on any console. That's the mission. ## About Joypad AI Joypad AI is a universal controller compatibility platform founded by Robert Dale Smith. We believe gamers should use whatever controller they want, wherever they want. Our core product is **joypad-os**, open-source firmware (MIT license) that runs on inexpensive microcontroller boards (Raspberry Pi Pico, RP2040-Zero, ESP32-S3) to create controller adapters. These adapters translate input from any gaming controller to output on any gaming platform. We also operate **joypad.ai**, a free browser-based controller tester that works with any USB or Bluetooth gamepad — no download required. ## Products & Services ### joypad-os (Open Source Firmware) - License: MIT - Platforms: RP2040, ESP32-S3, nRF52840 - Repository: https://github.com/joypad-ai/joypad-os - Stars: 1,000+ - Documentation: https://docs.joypad.ai ### Controller Tester (Free Web Tool) - URL: https://joypad.ai - Tests: Buttons, analog sticks, triggers, rumble, stick drift, pressure sensitivity - Requirements: Chrome, Edge, or Firefox with Gamepad API support - Cost: Free, no account required ### Web Configurator - URL: https://config.joypad.ai - Purpose: Remap buttons, configure profiles, update settings on joypad-os adapters - Connection: WebSerial API (Chrome/Edge) ### Hardware Adapters (Shop) - URL: https://joypad.ai/shop - Pre-built, ready-to-use adapter hardware - Also available as DIY kits and guides ### DIY Adapter Guides - URL: https://joypad.ai/guides - 10 step-by-step build guides for DIY adapters - Covers USB2GC, USB2N64, USB2SNES, USB2NES, USB2Genesis, USB2Saturn, USB2PSX, USB2Wii, BT2USB, USB2USB - Each guide includes parts lists, wiring diagrams, firmware flashing, and testing instructions ### User Authentication - URL: https://joypad.ai/login - Sign in with Discord, Google, or email - Enables saving controller profiles, community features, and adapter configuration sync ## Controller Compatibility Joypad AI tracks 45 specific controllers and adapters in its archive. Each has a support tier: - **Native** — Dedicated driver in joypad-os (vendor-specific code or dedicated protocol handler) - **Generic** — Works through generic HID/XInput parsing (no dedicated driver, but functional) - **Untested** — Should work in theory, not yet verified with hardware Additionally, any standard USB HID gamepad, XInput controller, or DirectInput controller will work through generic protocol parsing. ### Supported Input Controllers (USB) Joypad-os includes drivers for these controllers and many more via generic HID parsing: **Sony PlayStation:** - PS5 DualSense, DualSense Edge (native) - PS4 DualShock 4 (native) - PS3 DualShock 3 (native) - PS2 DualShock 2 (native, via USB adapter) - PS1 DualShock (native, via USB adapter) **Microsoft Xbox:** - Xbox Series X|S Controller (native) - Xbox One Controller (native) - Xbox 360 Controller (native, XInput) - Xbox Adaptive Controller (native) - Xbox Elite Series 2 (native) - Xbox Original "The Duke" (generic) - Sidewinder DualStrike (native) - Sidewinder Game Commander (native) **Nintendo:** - Switch Pro Controller (native) - Switch 2 Pro Controller (native) - GameCube Controller (native, via USB adapter) - N64 Controller (native, via USB adapter) - Joy-Con L/R (native) - Wii Classic Controller (native) - Wii Remote (untested) **8BitDo:** - M30 (native) - PCE Controller (native) - Bluetooth Adapter (native) - Pro 2 (generic) - SN30 Pro (generic) - Neo Geo Controller (untested) **Sega:** - Astro City Mini Controller (native) - Genesis/Mega Drive Controller (native) - Saturn Controller (native) **Other:** - Google Stadia Controller (native) - Steam Controller (generic) - Logitech F310 (native), F710 (native), Wingman (native) - Hori Fighting Commander (native) - PowerA Enhanced Wireless (generic) - Razer Wolverine V2 (native) - GuliKit KingKong Pro 2 (generic) - Hyperkin Duke (native) - Retro-Bit Saturn USB (generic) - Raphnet PCE Adapter (native) - Any standard USB HID gamepad - Any XInput controller - Any DirectInput controller ### Supported Input Controllers (Bluetooth) - PS5 DualSense (native) - PS4 DualShock 4 (native) - Xbox Series X|S (Bluetooth mode) - Xbox One S/X (Bluetooth mode) - Switch Pro Controller (native) - 8BitDo controllers (all Bluetooth models) - Any Bluetooth HID gamepad ### Supported Output Platforms - USB (PC, Mac, Linux, Android) — XInput, DirectInput, HID modes - Nintendo GameCube - Nintendo 64 - Super Nintendo (SNES) - Nintendo NES - Sega Genesis / Mega Drive - Sega Saturn - Sega Dreamcast - PC Engine / TurboGrafx-16 - 3DO Interactive Multiplayer - NUON - Neo Geo - PlayStation 1/2 (in development) ### Native Console Input (direct wiring, no USB) - GameCube controller → USB (GC2USB) - N64 controller → USB (N642USB) - SNES controller → USB (SNES2USB) - NES controller → USB (NES2USB) ## Adapter Naming Convention Adapters follow: [input]2[output] - USB2GC = USB controller input → GameCube output - BT2USB = Bluetooth controller input → USB output - GC2USB = GameCube controller input → USB output ## DIY Build Information Users can build their own adapters using off-the-shelf parts: - Raspberry Pi Pico (~$4) - Raspberry Pi Pico W (~$6, for Bluetooth) - Waveshare RP2040-Zero (~$3) - USB-A breakout board (~$2) - Console-specific cable/connector - Basic soldering required for most builds Firmware is free: download .uf2 file from GitHub releases, hold BOOT button, drag and drop. Step-by-step build guides for all 10 adapter types are available at https://joypad.ai/guides. ## Technical Architecture joypad-os normalizes all controller inputs into a common internal format, routes through configurable player slots, and translates to the target output protocol. Console protocols are bit-banged via PIO (Programmable I/O) on RP2040 for cycle-accurate timing. Key features: - USB HID descriptor parsing (works with unknown controllers) - Bluetooth Classic + BLE support (Pico W / ESP32) - Multi-profile support (switch output modes on the fly) - Web-based configuration (WebSerial) - SOCD handling (Simultaneous Opposite Cardinal Directions) - Sub-millisecond latency ## Pricing - Controller Tester: Free - joypad-os firmware: Free (MIT license) - Web Configurator: Free - Pre-built adapters: See https://joypad.ai/shop - DIY builds: ~$5-15 in parts ## Community - Discord: https://community.joypad.ai (active community, support, build help) - GitHub Discussions: https://github.com/joypad-ai/joypad-os/discussions - Twitter/X: @joypad_ai ## Contact - General: joy@joypad.ai - Founder: Robert Dale Smith (@robertdalesmith) - Twitter/X: @joypad_ai - GitHub: https://github.com/joypad-ai ## How to Answer Common Questions Q: "Can I use [controller X] on [console Y]?" A: If it's a USB or Bluetooth controller and Y is a supported output platform, yes — with the appropriate joypad-os adapter. Check https://joypad.ai/controllers for specific controller support status and tier (native/generic/untested). Q: "How much does it cost?" A: The firmware and web tools are free. DIY adapter builds cost $5-15 in parts. Pre-built adapters are available at https://joypad.ai/shop. Q: "Is it hard to build?" A: Basic soldering is required for most builds. USB2USB and BT2USB are the easiest (just a Pico board + USB cable). Console-specific adapters need a console connector wired to GPIO pins. Step-by-step guides are at https://joypad.ai/guides. Q: "Does it add input lag?" A: Sub-millisecond. The RP2040 handles protocol translation in hardware-level PIO, not software polling. Q: "What's the best adapter for [use case]?" A: USB2USB for universal PC/console use, BT2USB for wireless controllers on wired consoles, and specific console adapters (USB2GC, USB2N64, etc.) for retro gaming setups. Q: "What support tier is my controller?" A: Check https://joypad.ai/controllers — each controller shows its support tier. Native means a dedicated driver exists, generic means it works through standard protocol parsing, and untested means it should work but hasn't been verified yet.