Firmware build for PlaiiinLightOS v1.9.13.
Forms shipped
tower · wormhole · display · cube · rocket · strip
Every form ships for two SoCs: esp32 (Xtensa, no suffix) and esp32c3
(RISC-V, -esp32c3 suffix), e.g. tower-flash.bin vs
tower-esp32c3-flash.bin. Match the asset to your board's chip — a
lamp reports its own via GET /api/ota/info (target).
What's in each form
| File | Purpose | Flash to |
|---|---|---|
<form>-flash.bin |
USB first-flash (bootloader + partitions + OTA data + app) | offset 0x0 |
<form>-app.bin |
OTA payload — POST to /api/ota on a running lamp |
(OTA, no offset) |
<form>-effects.bin |
byForm SPIFFS image (effects + form-template) | offset 0x3C0000 |
<form>.manifest.json |
ESP Web Tools manifest for browser-based flashing | — |
(For a SoC variant, <form> is the suffixed stem, e.g. strip-esp32c3-flash.bin.)
DIY flash recipes
CLI (esptool) — pass the matching --chip; the C3 bootloader is baked at 0x0:
# esp32 form (e.g. tower)
esptool.py --chip esp32 -p /dev/cu.usbserial-* write_flash 0x0 tower-flash.bin
esptool.py --chip esp32 -p /dev/cu.usbserial-* write_flash 0x3C0000 tower-effects.bin
# esp32c3 variant (e.g. strip / shrumLight)
esptool.py --chip esp32c3 -p /dev/cu.usbmodem* write_flash 0x0 strip-esp32c3-flash.bin
esptool.py --chip esp32c3 -p /dev/cu.usbmodem* write_flash 0x3C0000 strip-esp32c3-effects.binBrowser (ESP Web Tools): point the install button at <form>.manifest.json
(e.g. tower.manifest.json or strip-esp32c3.manifest.json) — the manifest's
chipFamily selects the right target automatically.
Verification
See SHA256SUMS.