AtlasCube Controller

A pocket remote for the radio — its own screen, its own battery, no phone.

Firmware EXPERIMENTAL · built 2026-09-19

⚠ Prototype. The Controller is a bench build, not a finished product — hardware, pin map and firmware all still move. Everything below describes the current prototype and will change.

The Controller is a second, much smaller ESP32 device that talks to AtlasCube directly over ESP-NOW — no Wi-Fi network, no router, no pairing with a phone in between. It wakes on a touch or a key press, shows what the radio is playing, and goes back to sleep. Where the Android app is the full remote, this is the one you leave on the desk.

Hardware

MCUESP32-C6 (RISC-V), 4 MB flash, no PSRAM — and an ESP32-S3 board being brought up beside it Two boards rather than a migration: the C6 is what the prototype runs on and it stays. Each board takes any of the three panels and has its own firmware image, which is why there are six to choose from below.
DisplayCO5300 / ICNA3306 AMOLED, 240×296, QSPI — or a 128×64 mono OLED on I2C: the 0.96″ SSD1306 or the 1.3″ SH1106 The mono variants are the same board with the AMOLED module left off, the four-wire OLED in its place and everything else identical. The two OLEDs look alike but their chips address the screen differently, so each has its own image. Pick the image that matches both your board and your panel.
TouchCST816D capacitive digitizer on the AMOLED's own FPC The mono modules carry no digitizer — on those variants the keypad is the only input.
Keys4×3 matrix, entirely on wake-capable pads — a key press brings the chip out of deep sleep with no external parts
LinkESP-NOW, peer-to-peer with the radio
PowerSingle LiPo cell — TODO: cell size, connector, charger
EnclosureTODO

What it does

Now playing

Browsing

Settings

Power

Screens

photo
Now playing
photo
Menu
photo
Playlist

Flash the firmware

Requires a Chromium-based browser (Chrome, Edge, Opera, Brave). Firefox and Safari don't support WebSerial.
Before you click Connect: hold BOOT while plugging in the USB-C cable and keep holding until the browser's port picker appears. Console and flashing both go over the chip's USB-Serial/JTAG, so the port only appears while the board is in the bootloader.
  1. Plug the Controller in over USB-C, holding BOOT.
  2. Click Connect and pick the serial port.
  3. Click Install in the dialog and wait for it to finish.
  4. Power-cycle the board, then pair it with the radio from Settings.

One image per board and panel. They are not interchangeable — an AMOLED image on an OLED or the other way round leaves the screen dark, because they share neither a bus nor a driver; the SSD1306 image on an SH1106 shows the picture shifted with garbage at the edge. The wrong board will not flash at all: the installer checks the chip before it writes anything.

ESP32-C6 · AMOLED 240×296 CO5300 panel on QSPI with the CST816D digitizer — colour UI, wallpapers, touch · built 2026-09-19
ESP32-C6 · Mono OLED 128×64 · SSD1306 The 0.96″ module on I2C, four wires — no touch and no wallpapers, the keypad is the only input
No binary uploaded yet — see firmware/README.txt.
ESP32-C6 · Mono OLED 128×64 · SH1106 The 1.3″ module — it looks like a bigger SSD1306 but has an SH1106 chip, and the SSD1306 image shows it shifted with garbage at the edge. Same four wires, same UI
No binary uploaded yet — see firmware/README.txt.
ESP32-S3 · AMOLED 240×296 The same three panels on an ESP32-S3 board — being brought up, no image yet
No binary uploaded yet — see firmware/README.txt.
ESP32-S3 · Mono OLED 128×64 · SSD1306 The same three panels on an ESP32-S3 board — being brought up, no image yet
No binary uploaded yet — see firmware/README.txt.
ESP32-S3 · Mono OLED 128×64 · SH1106 The same three panels on an ESP32-S3 board — being brought up, no image yet
No binary uploaded yet — see firmware/README.txt.

A full image either way: bootloader, partition table and app. The AMOLED build carries its wallpapers inside the app itself, so flashing replaces them; the mono build has none. There is no OTA yet — the flash layout has a single app slot, so every update is a USB flash.

← Back to atlascube.net