CodexPad-S10 is a Bluetooth Low Energy gamepad from the CodexPad series, highly optimized for bare-metal and lightweight runtime environments. Unlike conventional gamepads that depend on an operating system’s Bluetooth stack, this product focuses on low‑barrier access. Utilizing an open, lightweight binary protocol, it can establish peer‑to‑peer communication directly with bare‑metal BLE devices such as ESP32, ESP32‑S, ESP32‑C, STM32, nRF, micro:bit, Raspberry Pi, and similar boards. This makes it an out‑of‑the‑box remote physical input solution for robots, IoT devices, custom control panels, and more.
We provide a clean communication protocol, lightweight driver libraries, and a wide range of examples for supported platforms, so you can integrate the gamepad into your firmware quickly and focus on your core application.
⚠️ Important: This is NOT a plug‑and‑play gamepadThe CodexPad-S10 is not a BLE-HID device, so it will NOT be automatically recognised by the operating system as a standard gamepad like an Xbox or PlayStation gamepad. Therefore:
- ❌ You CANNOT simply pair it with Windows / macOS / Linux, a phone, or a game console and start playing games;
- ✅ You MUST establish the Bluetooth connection manually in code, and parse the gamepad’s reported data (buttons, joysticks, etc.) yourself to obtain input.
In other words, every input must be actively read and handled by your own program — the system does not perform the “button → keyboard / gamepad event” translation for you. This product is positioned as a development‑oriented input device, not a plug‑and‑play gaming peripheral for end users.
- Number of buttons: 17
- Number of joysticks: 2
- Joystick type: dual‑axis analog
- Joystick resolution: 8‑bit (0 – 255)
- Charging voltage / current: 5 V / 500 mA (USB Type‑C)
- Battery capacity: 400 mAh
- Charging time: approximately 1.5 hours
- Battery life: approximately 8 hours under typical use
- Bluetooth version: Bluetooth Low Energy 5.3
- Transmission distance: Up to 50 m (under optimal conditions; actual range depends on host Tx power, antenna gain, BLE PHY settings, and environmental factors)
- Transmit power: 0 ~ 6 dBm (adaptive, automatically adjusted by the gamepad based on RSSI, no user configuration required)
- BLE PHY support: 1M, 2M, Coded S2, Coded S8
- Communication protocol: open, lightweight binary protocol optimized for embedded systems
- Supported role: BLE peripheral (slave)
- Power on: Briefly press (click) the Home button in the centre of the gamepad. The No. 1 blue LED indicator will start blinking slowly, indicating the device is starting up.
- Power off: While powered on, long‑press the Home button for 3 seconds. The No. 1 blue LED indicator will turn off and the device will shut down.
💡 Tip: If the gamepad shows no LED response at all after you attempt to power it on, or the LEDs turn on but go out immediately, the battery is most likely fully drained and cannot support startup or stable operation. Please charge the gamepad with a USB Type‑C cable first, then try again.
-
No. 1 Indicator (Blue): Operating status indicator
No. 1 LED Status Device Status Slow blinking (approx. 1 s on/off) Powered on, advertising, and ready to connect Solid on Powered on and successfully connected to a host device Off Powered off -
No. 2, 3, 4 Indicators (Green): Battery level and charging status indicators
Together these three LEDs form a three‑bar battery gauge that shows the remaining capacity or charging state at a glance.
-
When the device is powered on and not charging, they display the current battery level:
LED Status (No. 2 / 3 / 4) Battery Level All three on (full bars) High No. 2 and 3 on, No. 4 off (two bars) Medium Only No. 2 on, No. 3 and 4 off (one bar) Low (charge recommended; may auto‑shutoff when reaching the minimum protection voltage) -
When the device is connected to a charger, they display the charging state:
LED Status (No. 2 / 3 / 4) Charging State The three LEDs cycle on in sequence (running‑light effect) Charging in progress All three on solidly Charging complete
-
To conserve power, the gamepad will automatically shut down under the following two conditions:
-
Low‑battery auto power‑off: When the battery drains to the minimum protection voltage, the gamepad powers off automatically and all LEDs turn off. This is a battery protection mechanism. Please recharge promptly. The gamepad will power on normally after charging.
-
Broadcast timeout auto power‑off: After power‑on, if the gamepad remains in the slow‑blinking state (advertising and waiting for a connection) for more than 1 minute without being connected, it will turn itself off to save power.
💡 Tip: If the gamepad shuts down shortly after power‑on, first check the battery level indicators, or try to complete the Bluetooth connection as quickly as possible after turning it on.
When connecting to a CodexPad, you may need the device’s unique identifier: the Bluetooth Device Address. It acts like an “ID number” for the device, formatted as 12 hexadecimal characters separated by colons: XX:XX:XX:XX:XX:XX (where X is 0–9 or A–F), for example E4:66:E5:A2:24:5D.
The Address is printed on the label located in the centre of the gamepad’s back panel. Please check and record it yourself.
To extend the lifespan of the built‑in lithium battery, follow these charging and care guidelines:
-
Avoid overcharging; disconnect when full: Lithium batteries do not need a “12‑hour first charge” activation. When the green LEDs No. 2‑4 stay solid on (fully charged), disconnect the charger promptly. Avoid leaving the gamepad plugged in for extended periods (e.g., overnight or for several days) — staying at 100 % charge for a long time accelerates battery ageing.
-
Charge as needed; avoid deep discharge: You don’t have to wait until the battery is completely empty to recharge. When the battery gauge shows low (only LED 2 is on), you can charge the gamepad. Frequent deep discharge (to auto‑power‑off) significantly shortens battery life.
-
Use a suitable charger: Please use a standards‑compliant 5 V / 1 A (or 5 V / 500 mA) USB charger or a computer USB port. Avoid using fast chargers — excessive current may cause the battery to heat up, affecting safety and lifespan.
-
Charge in a suitable environment: Whenever possible, charge at room temperature (0 °C – 35 °C). Extreme high temperatures (e.g. inside a car in summer) or very low temperatures will seriously reduce charging efficiency and harm battery health.
-
Long‑term storage: If you plan not to use the gamepad for an extended period (more than one month), charge the battery to a medium level (around 50 %–60 %, i.e. LEDs 2 and 3 on, LED 4 off) and store it in a cool, dry place. Never store the gamepad for long periods either fully charged or fully drained.
All hardware platforms listed in the table below are provided with official adaptation libraries and sample code, and developers can directly use the corresponding resources for rapid development.
In theory, any hardware platform with standard BLE capability can communicate with this gamepad. If your platform is not included in the list, you may refer to the library implementations and communication protocols of existing supported platforms for self-porting. The official team will also continuously evaluate and expand support for new platforms based on market demand and technical roadmap.
Main controller has built-in BLE capability or a BLE coprocessor, and the software can directly call low-level BLE APIs to connect to devices
| Main Controller Hardware Platform | Development Environment and Languages | Documentation |
|---|---|---|
|
Arduino IDE(C/C++) | CodexPad Arduino Lib |
|
MicroPython | CodexPad MicroPython Lib |
|
MakeCode | CodexPad Extension for micro:bit MakeCode |
|
Python | CodexPad Bleak Lib |
Main controller (e.g. STM32/Arduino) lacks Bluetooth and requires an external Bluetooth-to-Serial module (connected to TX/RX pins)
| Hardware Combination | Development Environment and Languages | Documentation |
|---|---|---|
|
|
GamepadCodec Arduino lib |


