Web flasher
Flash AtlasCube firmware
No tooling. Pick your display, plug in over USB, click Connect.
- Hold BOOT, plug in USBKeep holding until the browser's port picker appears. The board won't enter the bootloader on its own.
- Connect → InstallClick Connect on your display below, pick the serial port, then Install.
- Join the radio's Wi-Fi
AtlasCube-XXXXXX, password99876543, then open192.168.4.1to set Wi-Fi and pins.
Chrome, Edge, Opera or Brave only. Firefox and Safari have no WebSerial. Already running AtlasCube? Use ↓ OTA and upload it at Settings → Tools → OTA.
More about the first boot
One firmware fits any wiring: pins live in the web UI, not the build. The page at 192.168.4.1 sets up both Wi-Fi and the GPIO pin map. Later, once the device is on your own Wi-Fi, reopen it at <device-ip>/setup (the IP is shown on the splash screen at startup). After mapping pins, unplug the device and plug it back in.
Work in progress. If you hit problems after an OTA update, a full USB flash with Connect is recommended.
Not sure how to wire it? See the wiring diagrams.
Colour TFT
SPI panels with capacitive or resistive touchST7789V
320×240 SPI · 16MB flashST7789V
320×170 · 1.9" SPI · 16MB flashWiring notes
Default pins are the ILI9341 ones. On the Sunton ESP32-1732S019N the panel is fixed on the board: set mosi 13, clk 12, cs 10, dc 11, rst 1, led 14 at /setup after flashing (the screen stays dark until then), and move the SD card and encoder pins off them.
ST7796U
480×320 SPI · 16MB flashILI9488
480×320 SPI, 18-bit · 16MB flashAMOLED & round
High-contrast and round panelsOLED
Mono and grayscale, driven by a rotary encoderWiring notes
Same pins as the SSD1322.
SSD1306
128×64 mono OLED, I2C · 16MB flashWiring notes
Four wires: VCC, GND, SCL, SDA. The two pins are set at /setup after flashing.
SH1106
128×64 · 1.3" mono OLED, I2C · 16MB flashWiring notes
The 1.3" module looks like a bigger SSD1306 but has an SH1106 chip; the SSD1306 image shows it shifted with garbage at the edge. Four wires: VCC, GND, SCL, SDA. The two pins are set at /setup after flashing.
2× SSD1306
256×64 two mono OLEDs as one screen, I2C · 16MB flashWiring notes
Both modules on the same four wires (VCC, GND, SCL, SDA). Re-strap one module to address 0x3D (jumper on its back) and mount it on the right; the left one stays at 0x3C. Pins are set at /setup; if the two differ in brightness, Settings → Two display brightness balance evens them out.
No display
A radio without a screenHeadless
no screen web UI, app, MQTT or rules · 16MB flashWiring notes
An optional rotary encoder turns the volume; press = pause, long press = next.
ESP32-P4
MIPI-DSI boards, Wi-Fi through the onboard ESP32-C6FireBeetle 2
800×480 · 4.3" DFRobot FireBeetle 2 ESP32-P4 · ST7701S over MIPI-DSI, Waveshare 4.3-DSI-TOUCH-A · 16MB flash
Wiring notes
For the DFRobot FireBeetle 2 ESP32-P4 with early silicon (chip revision below v3, as sold so far). It does not run on the P4 DEV-KIT or the JC4880P443C, whose newer chips have their own images. Wi-Fi goes through the onboard ESP32-C6, which should run esp-hosted 2.12.6: see the ESP32-C6 card. The panel needs 5 V on a separate wire, since the ribbon carries only 3.3 V. The microSD slot on the board is used as is. ESP-NOW is not available through the C6, so the AtlasCube Controller cannot pair with this radio yet.
P4 DEV-KIT
800×480 · 4.3" Waveshare ESP32-P4-Module-DEV-KIT · ST7701S over MIPI-DSI, Waveshare 4.3-DSI-TOUCH-A · 16MB flash
Wiring notes
For the Waveshare ESP32-P4-Module-DEV-KIT. Its P4 is newer silicon (chip revision v3.x) than the FireBeetle 2's, so it has its own image: the two are not interchangeable. No Connect button yet: the browser flasher cannot reach the flash of this chip revision until its next update. Download the .bin and flash it with esptool v5 (esptool 4.x, including the one in ESP-IDF 5.5, fails on this chip the same way): pip install "esptool>=5", then esptool --chip esp32p4 -p COMx write-flash 0x0 AtlasCube-p4dk-st7701-gt911.bin. Use the USB TO UART port: it switches the P4 into download mode by itself, so no BOOT button is needed, and the radio's log comes out on the same port. Wi-Fi goes through the onboard ESP32-C6, which should run esp-hosted 2.12.6: see the ESP32-C6 card. The panel's separate 5 V wire goes to the 5V OUT pins. The microSD slot on the board is used as is. The onboard ES8311 codec and speaker output are not used: wire a PCM5102A to BCK 46, LCK 47, DATA 48, the defaults on this board. The other defaults are the encoder on 32/33 with its button on 23, and the buzzer on 20. GPIO 28–31, 34, 35 and 49–52 carry the board's Ethernet, so /setup refuses them. ESP-NOW is not available through the C6, so the AtlasCube Controller cannot pair with this radio yet.
JC4880P443C
800×480 · 4.3" Guition JC4880P443C_I_W · ST7701S over MIPI-DSI, panel built onto the board · 16MB flash
Wiring notes
For the Guition JC4880P443C_I_W, the 4.3" ESP32-P4 board with its own touch panel. Its P4 is newer silicon (chip revision v3.x), so it has its own image: FireBeetle 2 and DEV-KIT images do not run on it, nor this one on them. No Connect button yet, for the same reason as on the DEV-KIT: download the .bin and flash it with esptool v5: pip install "esptool>=5", then esptool --chip esp32p4 -p COMx write-flash 0x0 AtlasCube-p4jc-st7701-gt911.bin. Use the full-speed USB-C port (the P4's USB-Serial-JTAG): it flashes without the BOOT button, and the radio's log comes out on the same port. Wi-Fi goes through the onboard ESP32-C6. Its factory esp-hosted 2.3.0 is too old for this firmware and drops the connection, so flash the one from the ESP32-C6 card. The microSD slot on the board is used as is. The onboard ES8311 codec and speaker output are not used: wire a PCM5102A to BCK 28, LCK 29, DATA 30 on the JP1 header. The other defaults on JP1 are the encoder on 32/33 with its button on 31, the buzzer on 52 and the BT module on 49 (TX 50, RX 51). ESP-NOW is not available through the C6, so the AtlasCube Controller cannot pair with this radio yet.
ESP32-C6
Wi-Fi co-processor onboard, SDIO to the P4 · 4MB flashWiring notes
The FireBeetle's factory C6 image works, but it predates version reporting (the boot log says Co-proc [0.0.0]) and can hit RPC timeouts, so we recommend this one. It changes only the C6: the radio keeps its firmware and settings. The C6 has no USB of its own, so you need a 3.3 V USB-UART adapter. On the FireBeetle 2, use the row of three pads next to the C6: tie IO9 to GND, connect the adapter's TX to RX0 and its RX to TX0, and its GND to a GND pin. On the P4 DEV-KIT, the 4-pin C6_UART connector carries the same lines: IO9, GND, RXD, TXD. On the JC4880P443C they are on the JP1 header: C6_IO9 on pin 24, C6_U0RXD on 20, C6_U0TXD on 22, GND on 5 or 6. On any of them, hold the P4's BOOT button while you power it, so AtlasCube does not start and reset the C6. Then click Connect and pick the adapter's port, or download the .bin and run esptool.py --chip esp32c6 write_flash 0x0 AtlasCube-C6.bin. Afterwards remove the IO9 link and power-cycle the board.
No display matches. Try the chip number only, e.g. 9341.
/setup.
↓ .zip
AtlasCube