Now with BLE-HID Gamepad Support — Play retro-go on NM-CYD-C5 with a Bluetooth Keyboard🎮
Hi r/esp32,
Following up on our retro-go port for the NM-CYD-C5 — we've now added BLE-HID gamepad support. That means you can pair a Bluetooth controller and play without touching the screen. No wires, no mods, just pair and play.
We tested with the Shan Wan Q36 — a compact Bluetooth gamepad that maps cleanly to retro-go's input system — but any BLE-HID keyboard/controller should work.
Quick recap for context:
the NM-CYD-C5 is an ESP32-C5 board with 8 MB PSRAM, 16 MB flash, and a 2.8" 240×320 ST7789 display. Our retro-go port runs on it out of the box — no PSRAM soldering needed. Now it talks Bluetooth too.
What's new in this release:
BLE-HID host mode: scanning for BLE HID keyboard devices at boot
Auto-pair: picks up the first advertising BLE-HID keyboard in range and
connects automatically — you can also manually pair via the launcher menu
- Gamepad mapping: Shan Wan Q36 (D-pad + ABXY + shoulder buttons) mapped to
retro-go's standard input layout:
- D-pad → directional input
- A / B → retro-go A / B
- Start / Select → menu / select
A few technical notes:
- ESP32-C5's BLE 5.0 stack is handled via NimBLE in ESP-IDF 5.5+; we use the
standard esp_hid component with a thin HID→retro-go input bridge
The Shan Wan Q36 advertises as a BLE-HID keyboard (mode: HID for Android), which is why the HID report parsing treats a subset of keycodes as gamepad buttons
Pairing is stateless per session — no bonding or persistent storage needed; just turn on the controller before booting the board
Getting started:
Flash the latest retro-go .img to 0x0
Power on your Shan Wan Q36 (or any BLE-HID keyboard) — put it in pairing mode
Power on the NM-CYD-C5 — it auto-scans and connects
Launch a ROM and play with the gamepad
Software tag: https://github.com/RockBase-iot/retro-go/releases/tag/Retro-Go_1.46_NM_CYD_C5
(Updated .img includes BLE-HID support)
Would love to hear what controllers you test with — drop a comment if you try
something other than the Q36.
Happy gaming 🕹️