LuxDMX logo

Flash LuxDMX

Art-Net / sACN (E1.31) → DMX512 gateway for ESP32. Flash it straight from this page — no install, no command line.

Not just another Art-Net node: LuxDMX is a node plus a live diagnostic tool. Watch all 512 channels update in real time in your browser, get a warning the moment two consoles fight over a universe, see per-sender FPS and frame jitter, and drive galvanically-isolated DMX out. Fully open source, builds for a few dollars.

Pick your board and click flash. The firmware is always the latest release.

ESP32 (WROOM-32)

Classic ESP32 DevKit, 30/38-pin, CH340 / CP2102. WiFi build. Needs a board with a solid 3.3 V supply (see the power note below); the ESP32-S3 has more RAM headroom.

Web Serial not supported. Use desktop Chrome or Edge. Must be served over HTTPS (or localhost).

Which S3 image, and switching later

Read the suffix on the module's own label. R8 is 8 MB octal PSRAM and has its own image below. R2 is 2 MB quad, and there is no image for it yet: quad and octal are a build-time choice on the ESP32-S3, so an R2 module runs the plain image and leaves its PSRAM unused. Nothing breaks, there is just nothing gained.

Changing between them needs USB. PSRAM is brought up by the bootloader, and an over-the-air update replaces only the application — so a device moved from one variant to the other over OTA keeps the PSRAM setup it booted with, silently and with no error at all. Flash once over USB and OTA works normally again afterwards.

Not sure which you have? The plain ESP32-S3 image runs on every S3. Afterwards check /dmx.json: psram is how many bytes were actually found.

ESP32-S3 (DevKitC-1)

ESP32-S3 DevKitC-1. WiFi build, and the right choice for every S3 except the ones with 8 MB octal PSRAM. A module with 2 MB quad PSRAM (the R2 suffix) runs this image fine, it just will not use the PSRAM. Use the USB-UART port, not the native USB port.

Web Serial not supported. Use desktop Chrome or Edge. Must be served over HTTPS (or localhost).

ESP32-S3 + 8 MB octal PSRAM

Only for modules with 8 MB octal PSRAM — the R8 suffix (WROOM-1-N8R8, N16R8). Octal and quad are fixed when the firmware is built, so this image and the one above are not interchangeable. The RDM tables, the WiFi buffers and the pixel framebuffers move to PSRAM and the internal heap stays wide open (measured: 8 MB found, 121 KB internal heap free against 57 KB without). Use the USB-UART port.

Web Serial not supported. Use desktop Chrome or Edge. Must be served over HTTPS (or localhost).

WT32-ETH01 (Ethernet)

Wired LAN8720 Ethernet build. No on-board USB — needs an external USB-to-serial adapter (see note below).

Web Serial not supported. Use desktop Chrome or Edge. Must be served over HTTPS (or localhost).

Custom PCB — LuxDMX v6

Built the open-source 4-layer board? It uses the ESP32-S3 firmware — flash with the ESP32-S3 button.

View the PCB design

Before you start

If it fails to connect, put the board in download mode manually, then retry: hold BOOT, tap EN/RST, release BOOT.
Classic ESP32 boots but won't come online? Cheap WROOM-32 boards can brown out the instant the WiFi radio powers up if their 3.3 V regulator is weak. The firmware now reboots with Brownout detector was triggered instead of hanging silently, if you see that on serial, give it a solid 3.3 V supply or add a bulk capacitor (470 µF+) across 3V3/GND near the module. The ESP32-S3 avoids this and has far more RAM for RDM.
WT32-ETH01: this board has no USB port, so browser flashing needs an external USB-to-serial (3.3 V TTL) adapter wired to TXD0 / RXD0 / GND, with IO0 pulled to GND while you tap EN to enter download mode. If you would rather not, use the scripted esptool method instead.

After flashing

  1. Press EN/RST to boot.
  2. WiFi builds: the device opens an access point named DMX-Gateway (no password). Connect to it, pick your network in the captive portal, and save.
  3. WT32-ETH01: plug in Ethernet and power. DHCP assigns an IP automatically.
  4. Open http://dmx-gateway.local (or the IP on the serial monitor at 115200 baud) for the live status page.