ESP32AI.ME
Polnisches Radio, überall auf der Welt/M5Stack Core2/ spielt gerade auf meinem Schreibtisch

Polnisches Radio, das
einfach spielt.

Meine Familie und meine Freunde im Ausland mögen polnisches Radio im Hintergrund. Bisher hieß das: kostenpflichtige Apps oder teure Spezialempfänger. Also habe ich einen Würfel gebaut, der neun polnische Sender über WLAN und Bluetooth spielt. Dazu kommt ein Rauschgenerator: weiß, rosa und braun, und der läuft ganz ohne Internet. Das Systemabbild ist frei, du kannst dir also selbst einen bauen.

ZUSAMMENBAUZEICHNUNG OR-C2 LABOR
54 mm 54 mm 16 mm USB-C 5 V ESP32 2 × 240 MHz 16 MB FLASH · 8 MB PSRAM LAUTSPRECHER 1 W WI-FI 2,4 GHz + BT CLASSIC OR-C2 · BILDSCHIRME: RENDERER 0.4.1
letzter Mitschnitt: Ausgang BTStarvation 0Watchdog 0Warteschlange voll
A1
9
Radiosender
A2
~50
die ganze Hardware, ohne Löten
A3
3
Rauschfarben zum Runterkommen
A4
0
Konten · Cloud · Telemetrie
A5
4,65Mrd.
KI-Token in der Produktion
A6
100+
technische Dokumente
DER WÜRFEL, LIVE REC
läuft in Schleifeklicken für Ton aus dem Würfel
/ eine neue Plattform, mit Absicht

Wir kennen yoRadio. Wir bauen bewusst etwas anderes.

yoRadio ist ein großartiges Arbeitstier für Bastler: Du suchst Display und DAC aus, lötest, kompilierst in der Arduino IDE und spielst über Kabel. Respekt. Wir bauen eine neue Plattform von Grund auf, mit einer anderen Idee dahinter: Bluetooth statt Kabel, Mobilität, Bequemlichkeit und Leichtigkeit.

  • Ton über Bluetooth, während das WLAN läuft. Koexistenz auf einem einzigen 2,4-GHz-Funkteil. Ein Problem, das kabelgebundene ESP32-Radios nie zu Gesicht bekommen; hier ist es das Herz des Systems.
  • Wiederanlauf als Zusage. Last-known-good, Rotation der Endpunkte, Watchdogs, abgesicherter Modus. Das Radio fängt sich selbst, bevor du zum Kabel greifst.
  • Byteweise reproduzierbare Builds mit Telemetrie-Schranken vor jedem Release: Starvation Δ0, eingespielte Stille 0,0 s. Das Urteil sprechen die Zahlen.
  • Ein pixelgleicher Emulator im Browser. Jeden Bildpunkt der Vorschau zeichnet derselbe C++-RGB565-Renderer, der auch auf dem Gerät läuft.
  • Ein Rauschmodus im Gerät selbst. Wellness ohne Internet; eine Kategorie, die klassische Internetradios schlicht nicht haben.
  • Aufspielen aus dem Browser, zwei Klicks. Statt Arduino IDE 1.8.19, eines Generators für myoptions.h und eines Schrifttauschs in fremden Bibliotheken.

Und wenn Basteln deine Liebessprache ist: yoRadio hat 65.000 Senderplätze, MQTT und Home Assistant und ist darin richtig gut. Wir bauen das Radio für deine Mutter. Oder vielleicht eine neue Gewohnheit, in jedem Alter: ein kleiner Würfel, der deinem Tag einen Hintergrund gibt, Musik oder Rauschen, damit Leben und Arbeiten sich einfach besser anfühlen.

01 / was er macht

Zwei Modi: Radio und Rauschen

Tagsüber polnische Sender. Nachts ein Rauschgenerator, der das Haus beruhigt. Ein Würfel.

MODE-01RADIO

Polnische Sender — neun aus 236

Nachrichten, Musik und polnische Themen über WLAN, auf deinem Bluetooth-Lautsprecher oder dem eingebauten. Seit Version 0.2 stellst du die neun selbst aus einem Katalog von 236 geprüften Sendern zusammen. Einschalten und es spielt; um den Rest kümmert sich der Würfel.

MODE-02WELLNESS

Rauschen: weiß · rosa · braun

Ein Tippen macht aus dem Radio eine Beruhigungsmaschine: Babyschlaf, Mittagsschlaf, Meditation, konzentriertes Arbeiten. Das Rauschen entsteht im Würfel selbst, also funktioniert es ganz ohne Internet: im Hotel, im Auto, im Flugzeug.

ANWENDUNGEN BabyschlafMittagsschlafMeditationkonzentriertes ArbeitenLärm überdeckenRunterkommen
02 / wofür er wirklich da ist

Polen in der Tasche, immer

Millionen Polen leben im Ausland. Dieser Würfel kostet ungefähr so viel wie zwei Pizzen und gibt dir etwas, das keine Plattform verkauft: polnische Morgen, polnische Nachrichten und polnische Musik in Dublin, Chicago oder Oslo.

Unabhängigkeit

Niemand kann ihn abschalten

Kein Abo, kein Konto, keine Nutzungsbedingungen, die sich morgen ändern. Es gibt kein OTA und keine Cloud, also auch keinen Knopf, den jemand drücken könnte, um dein Radio aus der Ferne stumm zu schalten.

Immer dabei

54 mm im Koffer

Fürs Radio reicht das WLAN im Hotel, und das Rauschen spielt ganz ohne Netz. Gemessen ~2,5–3 h am eingebauten Akku (140–190 mA Stromaufnahme), danach jede Powerbank.

Ein Preis

~50 € und keine Rechnungen

Die Streams der Sender sind öffentlich, und das Rauschen entsteht im Würfel. Es gibt nichts, was monatlich zu zahlen wäre.

Der Würfel ist kein Dienst. Es gibt keinen Server, der sterben kann, und keine Firma, die es sich anders überlegen könnte. Er gehört dir, wie ein Radio im Regal, nur dass er aus dem Internet spielt.

03 / Umfang

Was dieser Würfel ist und was er bewusst nicht ist

Open Radio ging von einer Annahme aus: fertige Hardware kaufen, in der alles schon drin ist, und das ganze System dafür schreiben. Den Funktionsumfang haben wir mit Absicht eingefroren.

Ist

  • Ein System für Hardware von der Stange. M5Stack baut die Hardware, wir bauen den Rest: Firmware, Oberfläche, Wiederanlauf, Senderkatalog. Kein Lötkolben, kein 3D-Drucker.
  • Ein Kompromiss zwischen Preis und Leistung. ESP32 gegen Streaming im Jahr 2026. Die ganze Ingenieursarbeit in diesem Projekt folgt aus diesem Missverhältnis.
  • Tragbar und kinderleicht zu bedienen. Drei Tippflächen am unteren Bildschirmrand: voriger Sender, Übersicht, nächster. Ein Gerät, das du in zehn Sekunden verstanden hast. Am eingebauten Akku spielt es mindestens 2 h ohne Kabel.
  • So wenig Handgriffe wie möglich. Netz, Stream, Lautsprecher, Einstellungen: Was ausfallen kann, versucht es von selbst noch einmal, ohne Neustart und ohne Handy in der Hand.
  • Bewusst eng gefasst. Jedes Kilobyte DRAM ist abgezählt, und WLAN und Bluetooth streiten sich um ein Funkteil. Mehr Funktionen passen in dieses Silizium schlicht nicht hinein.

Ist nicht

  • High-End-Audio. MP3 mit 128 kbit/s über SBC an einen Bluetooth-Lautsprecher oder den eingebauten 1-W-Treiber. Für die Küche, die Werkstatt, den Balkon, aber nicht fürs Hörzimmer.
  • Eine Plattform für alles. Neun Senderplätze und ein geschlossener Funktionsumfang. Kein Spotify, keine Podcasts, kein Wecker, keine Steuerung per Handy.
  • Ein Konfigurationsmonster. Die Einstellungen passen auf drei Bildschirme. Keine versteckten Dateien, kein Expertenmodus.
  • Ein Cloud-Produkt. Nach außen gehen nur die Streams der Sender und optional NTP. Das Radio weiß nicht, was du hörst, und hätte auch niemanden, dem es das erzählen könnte.

Die neun ab Werk spielen ab dem ersten Einschalten, und im Katalog stehen 236, aus denen deine eigene Liste entsteht. Der Würfel spielt offizielle, öffentliche MP3-Streams direkt vom Sender: keine Weiterverbreitung, keine Aufnahme, niemand dazwischen. Für den Sender ist das ein Tick mehr auf dem Hörerzähler, nur in einer hübscheren Schachtel. Die Links führen auf die offiziellen Seiten.

04 / Hardware

Eine Schachtel, fertig aus dem Laden

MCUESP32-D0WDQ6-V3 · 2 Xtensa-LX6-Kerne @ 240 MHz
Speicher520 KB SRAM + 8 MB PSRAM · 16 MB Flash
BildschirmIPS 2,0″ · 320 × 240 · kapazitiver Touch
AudioI2S-Verstärker NS4168 + Lautsprecher 1 W
FunkWi-Fi 2,4 GHz b/g/n + Bluetooth Classic · A2DP Source (SBC)
StromUSB-C · eingebauter Akku 500 mAh — mindestens 2 h ohne Kabel
Gehäuse54 × 54 × 16 mm · Serienteil, ab Werk
Warum M5Stack Core2

Weil das der einzige Weg zu 50 € ohne Löten ist. Bildschirm, Touch, Lautsprecher, Akku, Gehäuse und beide Funktechniken sind drin, du nimmst ihn also aus der Schachtel und spielst auf.

Bezahlt wird in einer Währung: WLAN und Bluetooth teilen sich ein einziges 2,4-GHz-Funkteil und müssen sich darin abwechseln. Die meisten Einträge im Bautagebuch weiter unten gehen direkt auf diese eine Kaufentscheidung zurück.

Der Core2 ist ein Stück eines größeren M5Stack-Ökosystems: Core-Würfel mit Bildschirm, kleinere Atom- und StickC-Einheiten und Dutzende stapelbare Module, alle auf ESP32 aufgebaut, alle mit offener Dokumentation. Wir haben diesem Projekt nichts hinzugefügt: ein Würfel, direkt aus der Schachtel.

Bezahlte Partnerschaft · Botland ist Partner dieses Projekts. Hinter den Links zum M5Stack-Shop und zur Dokumentation steckt keine solche Abmachung.

SHA-256: 0230fa8c…51c1fa8 · Lizenz (GPL-3.0, ohne Gewähr) ·

05 / Signalweg

Vom CDN bis zur Lautsprechermembran

SIGNALFLUSS OR-C2/A 44,1 kHz
SENDERCDN · MP3 128 kbit/s WI-FI / TCPbraucht 16 KB/s MP3-DEKODER8192 Frames / Durchlauf PCM-WARTESCHLANGE≈ 6 s Reserve · 44,1 kHz BT A2DP · SBCReconnect 8–20 s BT-LAUTSPRECHERdeiner, gemerkt LAUTSPRECHER 1 Weingebaute Rückfallebene BT-Ausfall → der Ton spielt lokal weiter
MP3 128 kbit/s braucht 16 KB/sWLAN unter aktivem BT liefert 12–14 KB/sdiese Lücke = der Hauptgegner des Projekts → LOG-01
06 / Bautagebuch

Kram für Nerds: was wirklich passiert ist

Ausgewählte Einträge aus dem Entwicklungstagebuch. Jede Zahl stammt aus Telemetrie, die während minutenlanger Testläufe vom Gerät gezogen wurde.

LOG-01PHYSIK

Ein Funkteil, zwei Aufgaben

WLAN und Bluetooth teilen sich im ESP32 ein 2,4-GHz-Funkteil und wechseln sich an derselben Antenne ab. Während A2DP sendet, ergibt das TCP-Fenster (~5,7 KB, eine zur Compile-Zeit festgelegte Konstante im Arduino-LWIP) bei einer auf 350–500 ms gedehnten RTT gerade 12–14 KB/s. Ein MP3-Stream mit 128 kbit/s braucht 16. Das Defizit ist kein Fehler, das ist Arithmetik.

LOG-02FALLSTRICK

WiFi.setSleep(false)

Der klassische Forumstipp, um WLAN auf dem ESP32 zu beschleunigen. Bei aktivem Bluetooth landet der Controller in abort(), und der Würfel startet alle 26 Sekunden neu. Modem-Sleep bleibt an; die Coex-Schicht verlangt es.

LOG-03PHYSIK

Burst und Gleichgewicht

Das CDN liefert die ersten Sekunden eines Streams in einem schnellen Schwall und pendelt sich danach auf genau 1× Echtzeit ein. Keine Pufferschwelle oberhalb dieses Gleichgewichts wird je erreicht: Das Radio wartet endlos darauf, „fertig gepuffert“ zu sein. Alle Reserveschwellen mussten darunter.

LOG-04ENTDECKUNG

Dekoderbudget ≠ Bandbreite

Die dreifache Dekoderarbeit pro Schleifendurchlauf brachte kein einziges zusätzliches Audioframe (das Defizit sitzt im Netz), dehnte den Durchlauf aber auf 1,6 s und würgte die Touch-Reaktion ab. Bei einem Netzdefizit steuert das Dekoderbudget nur, wie flink sich die Oberfläche anfühlt. Wir haben es zurück auf 8192 Frames pro Durchlauf gestellt.

LOG-05BUG

Die Rotation, die nicht rotierte

Die Todespfade des Streams löschten den aktiven Endpunkt nie, also öffnete die „Kandidatenrotation“ immer wieder dieselbe tote URL. Symptom: 81 Neustarts in 3 Minuten. Die Reparatur lief darauf hinaus, den Endpunkt an drei Stellen zu löschen.

LOG-06RAM

TLS gegen Bluetooth

Ein TLS-Handshake braucht ~40 KB freies DRAM. Während Bluetooth spielt, bleiben nur 25–30 KB übrig, also ist ein Senderwechsel, der mitten im Betrieb eine HTTPS-Suche verlangt, schlicht unmöglich. Die Lösung: fest hinterlegte HTTP-Rückfallquellen pro Sender, dazu ein Zwischenspeicher der zuletzt funktionierenden Quelle.

LOG-07BT

Das Kopplungsfenster

Nach dem Aus- und Einschalten wartet der Lautsprecher nicht höflich auf eine Suche. Er ruft den Würfel von sich aus an. Und der Würfel wies Fremde ab. Patt. Die Lösung: Ein Tippen auf „Suchen“ öffnet ein Fenster, in dem jeder passende eingehende Lautsprecher übernommen und gemerkt wird.

LOG-08RF

Zu nah am Router

Zwei Meter vom Access Point bricht der Ton in Wellen weg; ein Zimmer weiter spielt er tadellos. Der WLAN-Sender des Routers übertönt den Bluetooth-Empfänger des Würfels. Manchmal ist der beste Eingriff in die Firmware, das Gerät drei Meter zu verschieben.

07 / ohne Handgriffe

Was passiert, wenn etwas kaputtgeht

Die Regel beim Entwurf: einstecken + Strom = es spielt. Das Radio muss jeden Ausfall allein überstehen, ohne Handy und ohne Mensch.

WLAN bricht wegversucht es bei bekannten Netzen mit begrenztem Backoff erneut; geht nie in ein unbekanntes oder offenes Netz
Server kappt den Stream2 s ohne Frame = sofort neu öffnen und Kandidaten rotieren (ein Server hat die TCP-Verbindung in 12 Minuten 65× gekappt, und es spielte trotzdem weiter)
BT-Lautsprecher fällt ausder Ton fällt auf den eingebauten Lautsprecher zurück, im Hintergrund wird alle 8–20 s neu verbunden
tote URL im KatalogLast-known-good: die zuletzt funktionierende Quelle jedes Senders steht im Flash
Hauptschleife hängtWatchdog 30 s: diagnostischer Reset und automatische Rückkehr ins Spielen statt eines Briefbeschwerers
beschädigte Konfigurationabgesicherter Modus mit Reparatur im Gerät; ein kaputter Zustand überschreibt nie den letzten funktionierenden
0 Konten0 Cloud0 Telemetrie0 Aufnahmen0 Auto-OTAeinziger Verkehr: Streams der Sender + optional NTP
08 / Produktion

Gebaut im Dreieck: zwei KIs und ein Mensch

Das System bauen zwei KI-Agenten auf derselben Maschine, und sie prüfen gegenseitig die Arbeit des anderen. Dem Menschen bleiben die Entscheidungen und die Ohren.

Leitender Ingenieur

GPT-5.6 Sol · Codex

2,5 Milliarden
Token

Architektur, Firmware, ein pixelgleicher Simulator der Oberfläche (der Browser zeichnet exakt dieselben RGB565-Pixel wie das Gerät), zweisprachige Dokumentation.

Stabilisierung und Audit

Claude Fable 5 · Claude Code

950Mio.
Token

Übernahme in Krisen: Physik des Signalwegs, Hotfixes für Rotation und TLS, QC-Schranken, Gegenprüfung der Berichte der anderen Maschine.

Projektinhaber

Tomasz Fiedoruk

1 Paar Ohren
+ Entscheidungen und Veto

Steckt die Grenzen des Produkts ab, hört sich die Ergebnisse live an und stoppt jedes Aufspielen, das das Testprotokoll nicht bestanden hat. Der einzige Teil des Systems, der hören kann.

Das Urteil PASS/FAIL spricht die Telemetrie. Jeder Firmware-Kandidat durchläuft einen minutenlangen protokollierten Test: Starvation Δ0 · Watchdog Δ0 · eingespielte Stille 0,0 s / 300 s · Warteschlangen voll. Erst danach hört der Mensch zu.

Im Repository liegen über 100 nummerierte technische Dokumente, jedes auf Polnisch und Englisch. Ja, für ein Radio.

09 / FAQ

Fragen, die wirklich gestellt wurden

Jedenfalls einige davon.

FAQ-01

Warum genau diese neun Sender?

Meine Frau mag sieben davon. Die anderen zwei haben sich selbst hinzugefügt, weil ihr Stream stabil läuft. Technik darf auch mal einfach sein. ;)

FAQ-02

Warum spielt er ein Zimmer weiter besser als direkt neben dem Router?

Weil der Router sein WLAN direkt in das Bluetooth-Ohr des Würfels brüllt. Wir haben es gemessen. Drei Meter Abstand schlagen jeden Eingriff in die Firmware, den wir versucht haben. Siehe LOG-08.

FAQ-03

Es gibt doch Apps fürs Handy.

Gibt es, manche kosten Geld. Nur klingelt ein Handy, brummt vor Benachrichtigungen und verlässt mit dir die Küche. Der Würfel bleibt stehen und spielt.

FAQ-04

Was hat das wirklich gekostet?

Rund 50 € für die Hardware. Dazu 4,65 Milliarden KI-Token, die wir nicht in Euro umrechnen, weil das ein Hobby werden sollte.

10 / Status und Verbreitung

Erst das Abbild, dann der Quellcode

Wir haben die übliche Reihenfolge einer Veröffentlichung mit Absicht umgedreht: Statt zuerst rohen Quellcode abzuwerfen, liefern wir zuerst ein fertiges Abbild zum Aufspielen: ein esptool-Befehl und der Würfel spielt. Der Code liegt bereits auf GitHub, mit den vollständigen passenden Quellen neben der Binärdatei.

Spielt tagelang auf dem Schreibtisch. Laborbuild, 9/9 Sender mit Logos, Touch, Favoriten
Dauertest über 10 Minuten bestanden. 0,0 s eingespielte Stille, dabei 1 echter Neustart der Quelle unterwegs
Zwei echte BT-Lautsprecher bestätigt. Koppeln, automatisches Neuverbinden nach einem Neustart, Übernahme eingehender Verbindungen
Langzeitqualifizierung läuft. Schwellen von 60 min → 2 h → 8 h Dauerspiel vor der Veröffentlichung
Abbild 0.4.1 steht zum Herunterladen bereit. Voller Flash (byteweise reproduzierbarer Build), mit Rauschmodus: weiß / rosa / braun
GitHub-Repository: veröffentlicht. Vollständige Quellen neben der Binärdatei und im offenen Repository: github.com/fiedoruk/open-radio (Lizenz, §2)
+ / bekannte Probleme und nächste Versionen
Touch und Tempo. Wir fahren an den Grenzen der Hardware: ein 2,4-GHz-Funkteil und jedes Kilobyte RAM abgezählt. Manches, etwa das Starten und Steuern des Rauschgenerators, hat heute eine spürbare Verzögerung. Reaktionsschnelligkeit = Priorität der nächsten Veröffentlichung
Noch läuft nicht alles so, wie es soll. Das ist 0.4.1, der eine oder andere Schluckauf kommt vor. Wenn etwas aufhört zu spielen: Strom ab und wieder dran, der Würfel fängt sich selbst wieder
Easter Eggs. Ein, zwei Easter Eggs verstecken sich im System: Funktionen, die auf ihre offizielle Veröffentlichung warten. Wer sie findet, darf sie behalten ;)

Erklärte Lizenzen: GPL-3.0-or-later (Code) · CC BY-SA 4.0 (Dokumentation) · CC0 (Senderkatalog) · keine Weiterverbreitung und keine Aufnahme von Sendungen · Senderlogos nur mit Einwilligung der Sender

Tomasz Fiedoruk
wer das gebaut hat

Tomasz Fiedoruk — Strategieberater: KI, IT, Marketing

Dieses System haben zwei KI-Agenten geschrieben. Ich habe sie beaufsichtigt, und ich stehe dafür gerade. Der Name, die Geschichte und der Vertriebsweg sind ebenfalls meine. Genauso habe ich zenbox aufgebaut, die Hosting-Marke, die ich als CMO mitgegründet und in die Top fünf in Polen geführt habe. Für Kunden mache ich beides: Ich spitze die Entscheidung zu, forme Marke und Botschaft, führe den Bau und setze meinen Namen unter das Ergebnis. Das mache ich seit 2003, 8 Systeme in Produktion, 47 Projekte unter NDA. Ich nehme Aufträge an, von der einmaligen Beratung bis zur Leitung eines ganzen Baus.