Elemental Arena

Flash a puck

Got a bare ESP32 puck? Put Elemental Arena on it in one command — then it walks you through getting online and picking your fighter. Takes about two minutes.

Get the puck into flashing mode first — this is the step people miss. The puck won’t flash unless you hold its button down as it connects:
  1. Press and hold the BOOT button (the small button on the board — if there are two, BOOT is the one not labelled RST/RESET).
  2. While still holding it, plug the puck into your computer with a USB‑C cable.
  3. Keep holding for about one more second, then let go. The screen stays dark — that’s correct, it’s now waiting to be flashed.
Then run the command below. Didn’t work / can’t connect? Hold BOOT, tap RESET once, release BOOT, and run it again. (Firmware v2.2.24 · ESP32‑S3 · 16 MB.)

Make your computer see the puck one-time driver

The puck talks to your computer through a WCH CH34x USB‑to‑serial chip. The first time you plug it into a given computer, install that driver — otherwise the puck simply won’t show up and the flasher can’t find it.

  • macOS — install the WCH CH34x driver: github.com/WCHSoftGroup/ch34xser_macos. After installing (and approving it in System Settings → Privacy & Security if prompted), the puck appears as /dev/cu.wchusbserial….
  • Windows — install the CH340/CH34x driver from wch-ic.com (CH341SER). The puck then shows up as a COM port (e.g. COM3) in Device Manager.

Check it’s visible: macOS/Linux — run ls /dev/cu.* and look for wchusbserial; Windows — open Device Manager → Ports (COM & LPT). Nothing there? Try a different USB‑C cable (many are charge‑only), another port, and make sure you held BOOT while plugging in.

1Run this macOS / Linux

Paste it into a terminal and press Enter. It installs the flash tool, downloads the firmware, finds your puck, and writes it — all on its own.

curl -fsSL https://arena.156.67.216.187.sslip.io/static/flash/install.sh | bash

Don’t like piping to bash? Download flash.py and the firmware into the same folder, then run python3 flash.py. On a Mac you can also just double‑click flash-mac.command.

2Windows

Install the flasher once, then write the firmware:

pip install esptool && python -m esptool --chip esp32s3 write_flash 0x0 elemental-arena-2.2.24.bin

Download the firmware (7.8 MB) first and run the command from the folder you saved it in.

3Now follow along

When flashing finishes, the puck reboots on its own. From here it’s all on-screen:

  1. It shows a Wi‑Fi setup hotspot — join it from your phone and pick your Wi‑Fi.
  2. It then shows a 6‑character pairing code.
  3. Sign in here and enter that code on the pairing page to claim it.
  4. Create a character and assign it in My Devices.
  5. Let it come to life. The screen glows with a soft loading orb while your fighter’s art is generated and loaded onto the device — the first time this can take a minute or two. It’s not stuck; when your character appears on screen, it’s ready.
  6. Give your fighter a brain (required). Your character stays quiet until you connect an AI — this is what powers its voice, chat and battle smarts, and you use your own AI account so you’re always in control of cost and data. Open your character’s settingsBrain and add one of:
    • Gemini, OpenAI or Anthropic — paste an API key from that provider. (Gemini has a generous free tier — easiest to start.)
    • Ollama or Custom — point it at your own open‑source model (any OpenAI‑compatible endpoint, e.g. a self‑hosted Llama/Qwen).
    Until a brain is added, the puck will politely ask you to connect one instead of talking.

Full get‑started guide Pair a device

All downloads

Trouble connecting? Hold BOOT, tap RESET, release BOOT, and run the command again. To force a specific port: python3 flash.py /dev/cu.usbmodemXXXX.

Are you sure?