release log / the open radio system
What changes in the cube
Every release described in plain words: what was added, what got fixed and what is deliberately missing. You will find the version in the cube's settings, and you flash a new system exactly like the first one, from the browser, in two clicks.
0.4.1
2 August 2026
latest
A maintenance release. One defect could play a station you had not asked for and leave no trace of doing it. Plus fourteen more stations and four Bluetooth fixes — three of them found by an independent audit, and one of those in code written the same day.
- fixedA tile stopped playing the station it used to hold. The cube remembers the address a station last played from, so it can start without waiting on the catalogue. That address was filed under the tile's number rather than the station's name. So: assign something else to the tile, restart, and the old radio plays while the new name shows on screen. Nothing was logged, because as far as the software was concerned everything worked. If you ran 0.4 and swapped a tile, this is the release where that swap finally sticks.
- new236 stations instead of 222. The threshold holding the rest out was a fixed number, and that number turned out not to be reproducible: the same stations measured eleven days later all read lower, together, across four unrelated networks. The measurement was drifting, not the stations. The bar is now a station that was heard playing on real hardware, measured in the same run as everyone else. Match something that works, and you are in.
- fixedTapping "pair a speaker" on a fresh cube could restart it. Downloading station logos and starting Bluetooth reached for the same scarce memory. Automatic pairing had always waited for the download; the manual tap did not — and that is exactly when a person touches the screen. A tap now stops the download instead of queueing behind it: artwork can arrive on a later boot, and the person standing at the cube does not wait a minute.
- fixedA disconnect the speaker never confirms no longer ends Bluetooth for the session. Sometimes the cube is told "disconnecting" and never "disconnected". It used to wait for the second one forever. It now calls the matter closed after eight seconds and goes back to connecting.
- fixedLogos from stations served in chunks now arrive. Some servers split the response into pieces, and the cube was reading those pieces together with their framing — rejecting a perfectly good image as malformed. Every boot, for every such station. Nine tiles out of nine, measured on the device.
- what we don't knowA speaker coming back after being switched off takes ten seconds sometimes and a minute other times. Measured on byte-identical firmware: 13 s, 10 s and 55 s. We do not know why and are not hiding it. The cube returns on its own and plays through its built-in speaker meanwhile, so nothing needs clicking — but sometimes it needs a moment. It is the first thing on the bench for the next release.
- what we did not testThe settings-preserving update has not been run on a physical cube, so it stays withdrawn, as it was for 0.4. Nor is there an uninterrupted hour of playback. The evidence comes from one cube.
0.4
31 July 2026
The largest release since the project began. The cube learned to measure the air, gained a second way to be installed — one that does not erase your settings — and had its public claims taken apart and rewritten to match what the firmware actually does.
- newAir sensors, optional, on Port A. M5Stack CO2L, CO2 and ENV Pro — singly or both through a passive hub. Carbon dioxide, temperature, humidity, pressure and a gas-resistance trend. The cube describes the air, never the person, and it is not a carbon-monoxide or smoke detector. It writes nothing to the sensors' own memory.
- newHome screens follow the hardware. Without a module, one home: the radio. With a module, two more — a minimal one and one carrying the air. A home you may select but may not keep is not a home, which is why the one logic change in this release is the configuration validator.
- newTwo ways to install instead of one. A factory image written from zero that erases every setting, and an application-only update that keeps them: remembered Wi-Fi, the paired speaker, chosen stations, volume, home screen. Separate files, separate buttons, and each name says which one it is before you click.
- newThe catalogue grew to 222 stations, and two of them have a story. Four arrived: Radio Nowy Świat, Radio Silesia and Radio Kraków — all three admitted on their own measurements — and finally Radio 357. Both listener-funded, both in the shipped 222.
- fixedRadio 357 nearly left the catalogue — on a cause that had been attributed wrongly. One evening we read audio dropouts as a problem with that station. The next day's log said otherwise: the buffer starved on a different station too, and the same image that starved at midnight ran with a full buffer in the morning. The culprit was the tax for running Wi-Fi and Bluetooth at once, not a catalogue entry. Rather than remove a working station, we aimed an hour-long test at it over Bluetooth and the question was settled by measurement, on the image that shipped.
- newThe sources ship beside the binary and now rebuild without git. As with 0.2.1 — except that the rebuild instruction used to stop on its first line, because the build called a git command in a tree that has no git by policy. That is the first thing anybody exercising the GPL runs into.
- what is not thereAlerts are silent. Seventeen rules with sourced thresholds work and put a sentence on the screen, but the strongest level computes a sound flag that nothing in this release reads. No alert ever makes a noise.
- what is not thereNo over-the-air updates, by design. Every update needs a cable. There is no telemetry, no account and no remote catalogue.
- what we did not testNobody ran the update path on a physical cube — neither the update itself nor an upgrade from a configured 0.2.1. There is also no uninterrupted hour: the session ran 69 minutes but contained deliberate reboots, which produced evidence that the cube recovers instead. The 0.4 evidence comes from one cube; 0.2.1 remains the only release checked on three hardware revisions.
0.2.1
22 July 2026, in the evening
Two fixes from the field — both found by the first users within hours of the 0.2 release. Which is exactly how an open project is supposed to work.
- fixedA factory-fresh cube could loop forever on first boot. Preparing the on-disk space for station logos took longer than our own smoothness watchdog allowed, so the watchdog kept cutting the work short, restarting it from scratch every time. The preparation now happens in the background while the radio is already playing. Thanks for the report and the logs. The first cube in the field did its job.
- fixedFour stations picked from the console (Eska Rock and catalogue TOK FM among them) refused to play. The catalogue carried a technical suffix in the address that the broadcaster's server rejects; our measurements skipped it, the cube sent it. Cleaned in the catalogue and in the system, including stations already saved on the cube.
0.2
22 July 2026
The nine stations baked into the system are gone. You choose from a list we measured station by station, because a stream that barely keeps up only starts stuttering minutes later, long after you stopped expecting it.
- new218 stations to choose from instead of a hard-wired nine. You put the list together yourself — here you can do it before you even flash the system. Every entry measured under load: 184 with at least half again the headroom the player needs, another 34 I checked by playing them on a real cube running 0.1.
- newA station picker — at first power-on and later in settings. The cube asks about stations right after it starts, and if you change your mind, you go back to it in settings. Nothing needs reflashing.
- betterPlayback stability. Less stuttering on long sessions — a change that never shows up on a feature list, but you hear it after an hour.
- not hereStations broadcasting in AAC will not play. The only AAC decoder that fits this chip carries a licence that cannot be reconciled with the GPL, and we release the system under the GPL and hand out its sources. You get exactly the binary I run at home.
- not here192 kb/s streams sit above the ceiling the cube holds with Bluetooth running, which is why Polish Radio's four national channels are missing. The format is fine, the bandwidth is not. One measurement on the device itself could let them in.
0.1
18 July 2026
first release
The first version you can flash onto your own cube. You switch it on and it plays, with no account, no app, nothing to configure beyond Wi-Fi.
- newNine Polish stations over Wi-Fi, switched with one touch of the screen.
- newOutput to a Bluetooth speaker. The pairing is remembered for good.
- newSleep noise in three shades (white, pink, brown), generated locally, so it works with no internet at all.
- newA Wi-Fi portal on first start: the cube puts up its own network, you type in the code from its screen and hand over your home Wi-Fi.
- newInstallation from the browser. Two clicks in Chrome or Edge, no terminal and no soldering.
- ruleNo accounts, no cloud, no telemetry. The cube does not know what you are listening to, and has no one to tell.
The cube does not check for newer versions on its own, and it never will. If you want to hear about the next releases, check back here or drop me a line through the contact form.