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.
- Press and hold the BOOT button (the small button on the board — if there are two, BOOT is the one not labelled RST/RESET).
- While still holding it, plug the puck into your computer with a USB‑C cable.
- Keep holding for about one more second, then let go. The screen stays dark — that’s correct, it’s now waiting to be flashed.
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.
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:
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:
- It shows a Wi‑Fi setup hotspot — join it from your phone and pick your Wi‑Fi.
- It then shows a 6‑character pairing code.
- Sign in here and enter that code on the pairing page to claim it.
- Create a character and assign it in My Devices.
- 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.
- 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 settings → Brain 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).
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.