finds.dev← search

// the find

ricardoquesada/bluepad32

★ 1,079 · C · NOASSERTION · updated Jan 2026

Bluetooth gamepad, mouse and keyboard support for ESP32 and PicoW

Bluepad32 is a Bluetooth HID host library for ESP32 and Raspberry Pi Pico W that lets you connect modern gaming controllers (PS5, Xbox, Switch, etc.) to microcontroller projects. It targets embedded developers building robots, retro gaming adapters, or any project that needs a real controller instead of a joystick module. Actively maintained with good hardware breadth.

Single-core design (runs entirely on CPU0) is the right call for ESP32 projects where you need the other core free for application logic. Per-controller HID parser files mean the code is well-separated — adding a new controller doesn't touch existing parsers. Pre-compiled firmware binaries for common platforms (Nina, AirLift, Unijoysticle) lower the barrier significantly for non-C users. CircuitPython and Arduino support alongside raw ESP-IDF means it covers the full skill-level spectrum from beginners to people writing production firmware.

BTstack dependency carries a commercial licensing requirement for closed-source ESP32 products — this is buried in the README and will surprise anyone building a product who didn't read carefully. No USB HID fallback: if the target controller doesn't support Bluetooth Classic or BLE, you're stuck. ESP32-S3/C3/C6/H2 support only a subset of controllers (unspecified in the README — you have to dig into the docs), which creates a support surface mismatch if you pick the wrong chip variant early. The NINA/AirLift coprocessor mode adds latency and protocol overhead that makes it a poor fit for anything requiring precise timing, but this tradeoff isn't documented.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →