OR OPEN RADIO
PL
install

Flash the radio straight
from this page.

Plug the cube in with a USB-C cable, press the button and wait two minutes. Nothing to install on your computer, nothing to compile, no account to create.

This browser cannot talk to the cube over the cable. Open this page in Chrome or Edge — or scroll down to the terminal route. The browser blocked access to the port. Open the page over HTTPS and try again.

This is the one for a new cube, or when you want to start clean — it erases your settings: Wi-Fi, speaker, chosen stations.

only these browsers can drive the cable Chrome Edge Safari no Firefox no

You need a computer running Windows or macOS — a phone will not do, because the cable has to reach a computer. No Chrome or Edge? The terminal route is further down.

WHAT YOU NEED M5Stack Core2 cubeUSB-C data cableWindows / macOS computerhome Wi-Fi, 2.4 GHzBT speaker (optional)
YOUR COMPUTER USB-C DATA CABLE one esptool command → the system image lands on the cube THE CUBE CORE2 USB-C
STEP 01BUY

Buy the cube

M5Stack Core2 — one box with a screen, speaker, battery and both radios, ~€50. No soldering iron required for anything. Buy it from the official M5Stack store ↗ (ships worldwide), or in Poland from Botland ↗ (approx. 220 PLN, 24 h shipping). Every revision so far (v1.0, v1.1, v1.3) runs the same file.

Paid partnership · Botland is a partner of this project. Buy the cube anywhere you like, the system works the same.

STEP 02IMAGE

Download the system image

One file with the whole system. Nothing to build or install on your computer. The current release is 0.4: 222 tested stations, you pick nine from your phone, station logos that fetch themselves, and room for air sensors if you ever want them.

One file, one route. The factory image writes from zero and erases every setting — Wi-Fi, speaker, chosen stations. Yes, that means setting the cube up again after each new version. The second route, which kept your settings, is withdrawn for now — the reason is under step 04 below.

Factory image — open-radio-0-4.bin (2.5 MB)

SHA-256: 3040146fc08fd07ccad78a9992cb4d5053bd573f0dc6cd8eebc7bffe48d2467a (.sha256 file) ·

By downloading you accept the terms: GPL-3.0-or-later license, project name protected, no warranty. Full text: LICENSE-0-4.txt. The source corresponding to exactly this binary is published beside it (GPL §6d): open-radio-0-4-corresponding-source.tar.gz (58 MB, .sha256) — with the code cut, four libraries at pinned commits and the rebuild procedure. Public repository: github.com/fiedoruk/open-radio ↗ (still shows 0.2.1; the 0.4 synchronisation is deliberately deferred).

Previous releases: 0.2.1, 0.2 and 0.1

0.2.1open-radio-0-2-1.bin (2.4 MB) · SHA-256: 295ca3fdf9f9daf7a11ee979bc3371b2c79aaf48de5afe455668b72b23dc0546 (.sha256). It is the only release with evidence from more than one cube — v1.0, v1.1 and v1.3.

0.1open-radio-0-1.bin (2.3 MB) · SHA-256: a075693cbc401ebadfc222befc53b899d17e9df564d6277c28d51f434f77b671 (.sha256)

STEP 03CABLE

Connect the cube to your computer

Use a USB-C cable that carries data (many “charging” cables have no data lines and the computer will see nothing). The cube shows up as a serial port through its CH9102 chip. If your system does not see it, install the driver from the M5Stack driver page ↗ (the “CH9102 Driver” section, Windows and macOS builds) and replug the cable.

STEP 04FLASH

Flash the image

▣ FROM THE BROWSER — THE MAIN PATH

Three moves, nothing to install: 1. open this page in Chrome or Edge on a computer, cube on the cable · 2. click the button and pick the port · 3. confirm erase and install. The page flashes the system and reboots the cube (~2 min).

This browser cannot talk to a device over a cable. Open the page in Chrome or Edge, or expand the options below. The browser blocked access to the cable. Expand the options below.

In the port picker the cube may appear as an “Unnamed device”, “USB Single Serial”, cu.usbserial-… (macOS) or COM… (Windows) — the name comes from the cube's factory USB chip (CH9102), not from our system. Unplug other USB-serial devices and the cube will be the only entry.

▣ UPDATE — WITHDRAWN FOR NOW

There was a second route here: it wrote the application alone and kept your settings — Wi-Fi, speaker, chosen stations. We took it down on the evening of 31 July after a report that it did not work for someone.

We are not pretending to be surprised: at publication this page said plainly that nobody had run this route on a physical cube. One report is enough to stop offering it — a button that works sometimes is worse than no button.

One route remains: the factory image above. It erases settings, so Wi-Fi, the speaker and your nine stations go in again — about fifteen minutes. We will bring the update back once we have run it on hardware end to end.

Other options: previous releases and terminal install (esptool)

▣ PREVIOUS RELEASES FROM THE BROWSER

This browser has no Web Serial. Web Serial blocked.

Terminal (Safari/Firefox/Linux, or if you prefer the classic way). esptool is Espressif’s official tool. You install it once and use it with a single command:

▣ WINDOWS

  1. Install Python ↗, then tick “Add python.exe to PATH” in the installer.
  2. Open the Command Prompt (Start → type “cmd”) and install the tool:
    python -m pip install esptool
  3. Find the port number: Device Manager → Ports (COM & LPT). E.g. COM5.
  4. Flash the image (swap COM5 and the file name for yours):
    python -m esptool --chip esp32 --port COM5 --baud 460800 write_flash 0x0 open-radio-0-4.bin

▣ MACOS

  1. Open Terminal (Spotlight → “Terminal”). Python 3 ships with the system.
  2. Install the tool:
    python3 -m pip install esptool
  3. Find the cube’s port:
    ls /dev/cu.*
    Look for an entry like /dev/cu.usbserial-XXXX or /dev/cu.wchusbserial-XXXX.
  4. Flash the image (swap the port and file name for yours):
    python3 -m esptool --chip esp32 --port /dev/cu.usbserial-XXXX --baud 460800 write_flash 0x0 open-radio-0-4.bin

After 1–2 minutes you'll see Hash of data verified. The cube reboots on its own straight into the radio.

STEP 05FIRST BOOT

Connect to Wi-Fi with your phone

The cube brings up its own temporary setup network. On your phone: join the OpenRadio-Setup network and enter the one-time code shown on the cube’s screen. The portal opens by itself (if not, go to 192.168.4.1), add your home Wi-Fi there and you're done. The phone is no longer needed.

Right after that the cube asks about stations: you pick nine from a catalogue of 222 tested ones, and you can go through the list on a computer first. You can change it later in the settings, with no reflashing.

STEP 06SPEAKER

Pair a Bluetooth speaker (optional)

The built-in speaker always plays first. Want better sound? Put your BT speaker in pairing mode and tap scan on the cube’s Bluetooth screen. The speaker gets remembered and the two connect on their own from then on. A tip straight from our measurements: the cube likes to sit more than 2 m from the router, whose transmitter can drown out Bluetooth.

Common stumbles:
computer does not see the cube9 times out of 10 it's a cable with no data lines. Grab another one; then the CH9102 driver (Step 03)
“Permission denied” / port busyclose the programs holding the serial port (Arduino IDE, serial monitors) and try again — no sudo needed
flash OK, but nothing playsunplug and replug the power (power-cycle); the first time a station starts, the cube buffers for about 2 s

▣ THIS IS WHAT IT LOOKS LIKE — 50 SECONDS

A walk through what you will see and touch: first boot, adding a speaker, changing station with a swipe, volume, all three home screens, the air sensor and the sleep noise. Every screen was drawn by the same code that draws on the cube — these are not mock-ups.

no sound · 1280×720 · MP4 and WebM from our own server, no YouTube and no tracking

← Back to the cube page Build log
Tomasz Fiedoruk
who built this

Tomasz Fiedoruk — strategic advisor: AI, IT, marketing

Two AI agents wrote this system. I supervised it, and I answer for it. The name, the story and the distribution channel are mine too. The same way I built zenbox, the hosting brand I co-founded as CMO and took into Poland's top five. For clients I do both: I frame the decision, set the brand and communication, run the build and put my name on the result. Doing this since 2003, 8 systems in production, 47 projects under NDA. I take on work, from a one-off consultation to running an entire build.