A plain ESP32 in place of the QCC5125 — Bluetooth audio for the radio.
Firmware v0.1.0 · built 2026-09-28
AtlasCube plays Bluetooth audio through an external module: the phone streams to the module, the module feeds I2S into the radio's audio mux, and a UART line carries the controls and the track info. The original module is a QCC5125 board, which is getting hard to find. This firmware turns a cheap, everywhere-available ESP32-WROOM into a replacement: same pins, same role on the board, and it speaks the QCC5125's own command dialect — so the radio firmware does not need to know the difference, and there is nothing to change on the radio side.
| Module | ESP32-WROOM-32 (classic ESP32), 4 MB flash — a bare module or any DevKit board carrying one Not a WROVER: those use GPIO16/17 for PSRAM, and those are the UART pins. Not an ESP32-S3 or C3 either — they have no Classic Bluetooth, only BLE, and A2DP needs Classic. |
| Bluetooth | Classic BR/EDR — A2DP sink and AVRCP; the phone sees it as AtlasCube |
| Codec | SBC |
| Audio out | I2S master, 16-bit stereo, 44.1 or 48 kHz — follows whatever the phone sends Into the 74HC157 mux on the input the QCC5125 used; the radio still drives the mux select line itself. |
| Control | UART 115200 8N1, QCC5125 AT dialect |
| Signal | ESP32 | AtlasCube (ESP32-S3) |
|---|---|---|
| I2S BCK | GPIO26 | mux BCK (QCC5125 input) |
| I2S WS | GPIO25 | mux WS |
| I2S DATA | GPIO27 | mux DATA |
| UART RX | GPIO16 | ← BT module TX pin |
| UART TX | GPIO17 | → BT module RX pin |
| GND | GND | GND |
The radio side uses the same BT pins it would for the QCC5125 — set at
<device-ip>/setup like every other pin.
BOOT button needed.TX0 /
RX0 (GPIO1 / GPIO3), hold GPIO0 to GND and pulse
EN before clicking Connect. Flash it before soldering it into the radio.
A full image: bootloader, partition table and app. The installer checks the chip before it writes anything, so it will refuse an ESP32-S3 — the radio itself cannot be overwritten with this by mistake. There is no OTA; every update is a USB flash, and it forgets the phones that were paired.
← Back to atlascube.net