Getting Started & Flashing

This chapter gets firmware onto your POOM board and walks you through the first boot. There are two supported paths: the web flasher (fastest, no toolchain) and idf.py (full control, for building from source). Do the web flasher first; move to idf.py when you want to change the code.

Desktop only: the web flasher needs a POOM board (target esp32c5), a data-capable USB-C cable (not charge-only), and Chrome or Edge on a desktop or laptop. Web Serial is not available on phones or tablets. A microSD card is optional but needed later for captures and portals.
POOM connected by USB-C to a laptop showing the web flasher.
Connect POOM to your computer with a data USB-C cable, then open the web flasher.

Option A — Flash with the POOM Web Flasher

The web flasher runs entirely in your browser. It uses the Web Serial API to talk to the board's USB Serial/JTAG port and write the firmware — no drivers or command line required.

Step by step:

  1. Open the POOM Web Flasher (poom.stellar-iot.com/bin-store) in Chrome or Edge on desktop. (Web Serial is not available in Safari or Firefox, and not on mobile.)
  2. Plug POOM into your computer with a data USB cable.
  3. Click Connect and pick the POOM serial port in the browser's device dialog.
  4. Select your board target (esp32c5) if prompted, then click Install / Flash.
  5. Wait for the write and verify to finish, then let the board reboot into POOM.
POOM Web Flasher — Connect, pick the port, Install / Flash.
If the port doesn't appear: the cable is the usual culprit — swap to a known data cable. If it still fails, put the board into download mode (hold BOOT, tap RESET, release BOOT) and click Connect again. Close any other serial terminal first — only one program can hold the port.
POOM board with the boot button area highlighted, hold 3 seconds.
Hold the boot combo ~3 seconds to enter download mode if the port won't appear.
Web flasher: the official POOM flasher lives at poom.stellar-iot.com/bin-store. It auto-loads poom.bin; just Connect and Flash.

What Gets Written (Flash Layout)

POOM flashes as four images at fixed offsets on an 8 MB flash (mode DIO, 80 MHz). A web flasher usually bundles these into one merged file, but this is what is underneath:

OffsetImagePurpose
0x0bootloader.binSecond-stage bootloader
0x8000partition-table.binPartition map
0x15000ota_data_initial.binSelects the active OTA slot
0xa0000poom.binThe POOM application (OTA slot 0)

The partition table reserves two 3712 KB app slots (ota_0/ota_1) so POOM can update itself over the air later, plus NVS for config/credentials and a FAT area for Zigbee/Thread storage. You don't need to manage these by hand — the flasher writes them for you.

Option B — Build and Flash with idf.py

Use this when you want to build from source or change POOM. It requires ESP-IDF v6.1.0 installed.

. "$HOME/esp/esp-idf/export.sh"

# Consumer POOM target (ESP32-C5)
idf.py set-target esp32c5

# Build, flash, and open the serial monitor
idf.py build
idf.py flash monitor

idf.py flash writes the same four images shown above; monitor then attaches to the console so you can watch boot logs. Press Ctrl+] to exit the monitor.

Wrong-chip error? Make sure set-target matches the silicon in your hand. Build for esp32c5, the consumer POOM target.

First Boot: The Menu

Turning on POOM — hold the power button until the POOM logo shows on the OLED.
Turn POOM on — it boots to the POOM logo, then the main menu.

After flashing, POOM boots to menu_general_poom — the hierarchical menu that fronts every tool. It is organised into five categories:

CategoryWhat lives there
THE BEASTWireless security & pentest tools (see the BEAST Lab)
THE ZENNFC, MIDI, IR, media control (NFC in the NFC Lab)
THE GAMERController and gaming interfaces
THE MAKERI2C scanner, plotting, Edge AI, BLE scan
SETTINGSWi-Fi, DFU update, NFC tuning, SD files

Navigation: LEFT/RIGHT switch category, UP/DOWN move between tools, A launches, B exits or goes back. A launched app detaches the menu and runs on its own; press B to return.

Where to Go Next

With POOM flashed and booting, pick a track: