Skip to content
Chris Williams edited this page Nov 3, 2026 · 1 revision

The box needs two radios in one chip, Wi-Fi to reach Home Assistant and Bluetooth to reach the lights, and room for the Bluetooth mesh stack beside two copies of the firmware so that updates can roll back. Two Espressif chips fit: the ESP32-S3 and the ESP32-C6. So the requirement is an ESP32-S3 or ESP32-C6 board with 8 MB of flash or more and the chip's native USB port brought out to a connector, which is what the flasher page talks to. PSRAM is not needed; a board that has it leaves it unused.

The flasher page carries two firmware images, one for every ESP32-S3 board and one for the ESP32-C6, and picks the right one from the chip it finds on the port. You never choose.

Tested boards

Each of these has run the whole path, flashed from the flasher page by someone who had never seen it before that week, joined Wi-Fi from the page, imported fixtures and driven a light from Home Assistant.

Board Chip Flash / PSRAM Port to use Install mode Notes Buy
M5Stack ATOMS3 Lite S3 8 MB / none its one USB-C port hold the side button about two seconds until the LED turns green; a short press is reset Enclosed, one button, 24 × 24 × 13 mm. The author's production box. The top face is the user button, not BOOT. Amazon
Seeed XIAO ESP32S3 S3 8 MB / 8 MB its one USB-C port hold B, tap R The smallest board here, and the only one with an external antenna: snap it on before you start, the board has none of its own. Bare board, no case. Amazon (its listing's memory figures are garbled; it is the 8 MB board), or a 3-pack, which at the time of writing cost little more than two singles: the way to get a spare
ESP32-S3 N16R8 devkit (HiLetgo and the many identical ones) S3 16 MB / 8 MB USB, not COM hold BOOT, tap RST The classic two-port devkit. The extra flash and PSRAM go unused. Its on-board RGB LED is left off by the firmware. Amazon
Freenove ESP32-S3-WROOM (N8R8) S3 8 MB / 8 MB USB-OTG, not USB-UART hold BOOT, tap RESET Fresh out of the bag the OTG port is silent until you put the board in install mode, which is why that step comes first. The UART port can flash it but can never show the Wi-Fi step. Amazon
Waveshare ESP32-C6 dev kit (N8) C6 8 MB / none its one USB-C port hold BOOT, tap RESET The other chip family; the page picks the C6 image for it. One port, so nothing to get wrong there. Amazon

Which one? The ATOMS3 Lite if you want something you can put on a shelf and forget: it is enclosed and tiny. The XIAO if the box will sit far from the lights and you want an antenna. The devkits if you already have one in a drawer.

What they look like

The buttons and ports named in the table, on the boards themselves.

M5Stack ATOMS3 Lite

The ATOMS3 Lite, a small white cube with a USB-C port on one end and a small button on the side

The USB-C port is on the end. The large top face is a user button that amble-home does not use. The small button on the side, next to the port, is the one that matters: hold it for about two seconds until the LED turns green for install mode; a short press is reset.

Seeed XIAO ESP32S3

The XIAO ESP32S3 from above: USB-C at the top with buttons R and B on either side, and the antenna socket at the bottom

USB-C at the top, with the two tiny buttons beside it: R (reset) on the left and B (boot) on the right. The gold socket at the bottom edge takes the antenna.

The XIAO with its antenna clipped on

The antenna that comes in the box clips onto that socket. The board has no antenna of its own, so snap it on before the first flash.

ESP32-S3 N16R8 devkit

The N16R8 devkit from above: RST and BOOT beside the module, two USB-C ports at the far end

RST and BOOT sit beside the module; the two USB-C ports are at the other end.

The underside of the devkit, with the ports labeled USB and COM

The underside names the ports: USB is the one to use, COM is the serial chip.

Freenove ESP32-S3-WROOM

The Freenove board from above: EN/RST and BOOT/IO0 beside two USB-C ports

EN / RST and BOOT / IO0 sit beside the two USB-C ports.

The underside of the Freenove board, with the ports labeled USB-OTG and USB-UART

The underside names them: USB-OTG is the one to use, USB-UART is the other.

Waveshare ESP32-C6

The Waveshare ESP32-C6 board from above: BOOT at one corner, RESET at the other, the USB-C port between them

BOOT at the top corner and RESET at the bottom corner, with the USB-C port between them.

Should work, untested

  • Any other ESP32-S3 board with 8 MB of flash or more whose native USB port reaches a connector. Under ESP-IDF the board name changes nothing but pin defaults, so the one S3 image is the whole S3 family. The flasher page will accept it. If you run one, say so on an issue with the board's name and it joins the table above.
  • Any other ESP32-C6 board with 8 MB of flash. Same image as the Waveshare. Note that the Seeed XIAO ESP32C6 has only 4 MB and does not qualify.
  • A board with only a USB-to-serial chip (no native USB) can be flashed with ESPHome's command line, but the flasher page's Wi-Fi step cannot reach it, so you would join the box's own setup network instead (Installing).

Will not work

Board Why
Classic ESP32 (WROOM-32, DevKitC, ESP32-D0WD and friends) Not built for it. The firmware needs two update slots, which do not fit beside the Bluetooth mesh stack in the 4 MB of flash these boards carry, and the chip has no native USB.
Any 4 MB S3 or C6 board Same reason: no room for two update slots.
ESP32-S2 No Bluetooth.
ESP32-C3 No image is built for it, and most boards carry 4 MB.
ESP32-C5 Its mesh stack support waits on a newer ESP-IDF than ESPHome ships. Revisit when ESPHome moves.
ESP32-H2 No Wi-Fi.
ESP32-P4 No radio of its own.
ESP8266 Different chip altogether.

Power and placement

The box needs 5 V over USB and nothing else: any phone charger or a USB port on a powered hub or router does. After the first flash it never needs a computer again. Place it within Bluetooth range of your lights; the mesh relays between fixtures, so one box at the edge of the room is usually enough, and a fixture that is "never heard" on the box's Home page is the sign to move it closer (Troubleshooting).

Clone this wiki locally