Polskie stacje — dziewięć z 222
Wiadomości, muzyka i polskie sprawy przez Wi-Fi, na Twoim głośniku Bluetooth albo wbudowanym. Od wydania 0.2 dziewiątkę układasz sam z katalogu 222 sprawdzonych stacji. Włączasz i gra, resztą kostka martwi się sama.
Rodzina i znajomi za granicą lubią mieć w tle polskie radio. Do tej pory oznaczało to płatne aplikacje albo drogie dedykowane odbiorniki, więc zrobiłem kostkę, która gra dziewięć polskich stacji radiowych przez Wi-Fi i Bluetooth. Do tego generator białego, różowego i brązowego szumu: usypia, wycisza i działa bez internetu. Obraz systemu udostępniam za darmo, więc możesz powielić ją u siebie.
yoRadio to świetny kombajn DIY: sam dobierasz ekran i przetwornik, lutujesz, kompilujesz w Arduino IDE i grasz po kablu. Szanujemy. My budujemy od zera nową platformę o innej filozofii: Bluetooth zamiast kabla, mobilność, wygoda i lekkość.
A jeśli kochasz grzebać: yoRadio ma 65 tysięcy slotów na stacje, MQTT i Home Assistanta, i jest w tym świetne. My robimy radio dla twojej mamy. A może po prostu nowy trend, niezależnie od wieku: mała kostka, która daje ci tło — muzykę albo szum — żeby lepiej się żyło i pracowało.
W dzień polskie stacje. Wieczorem generator szumu, który usypia i wycisza. Jedna kostka.
Wiadomości, muzyka i polskie sprawy przez Wi-Fi, na Twoim głośniku Bluetooth albo wbudowanym. Od wydania 0.2 dziewiątkę układasz sam z katalogu 222 sprawdzonych stacji. Włączasz i gra, resztą kostka martwi się sama.
Jeden dotyk i radio staje się maszyną do wyciszania: sen niemowlaka, drzemka, medytacja, praca w skupieniu. Szum powstaje w kostce i gra bez sieci, także w hotelu, w aucie i w samolocie.
Miliony Polaków mieszkają poza krajem. Ta kostka kosztuje tyle, co dwie pizze, a daje coś, czego nie sprzedaje żadna platforma: polskie poranki, polskie wiadomości i polską muzykę w Dublinie, Chicago czy Oslo.
Zero subskrypcji, konta i regulaminu, który jutro się zmieni. Nie ma OTA ani chmury, więc nie ma też przycisku, którym ktoś zdalnie zgasi twoje radio.
Hotelowe Wi-Fi wystarczy na radio, a szum gra nawet bez sieci. Zmierzone ~2,5–3 h na wbudowanym aku (pobór 140–190 mA), dalej dowolny powerbank.
Strumienie stacji są publiczne, szum rodzi się w kostce. Nie ma czego opłacać co miesiąc.
Kostka nie jest usługą. Nie ma serwera, który może paść, ani firmy, która może zmienić zdanie. Jest twoja, jak radio na półce, tylko że gra z internetu.
Open Radio powstało z jednego założenia: kupić gotowy sprzęt all-in-one i napisać do niego cały system. Zakres funkcji zamknęliśmy raz i od tamtej pory go nie ruszamy.
Dziewiątkę fabryczną kostka gra od pierwszego włączenia. Katalog liczy 222 pozycje i to z niego układasz własną listę. Kostka sięga po oficjalne, publiczne strumienie MP3 wprost od nadawców: bez retransmisji, bez nagrywania, bez pośredników. Z perspektywy stacji to po prostu kolejny słuchacz na liczniku, tyle że w ładniejszym pudełku. Linki prowadzą na oficjalne strony.
Bo to jedyna droga do 50 € bez lutowania. Ekran, dotyk, głośnik, bateria, obudowa i oba radia są w cenie, więc wyciągasz z pudełka i flashujesz.
Płaci się za to jedną walutą: Wi-Fi i Bluetooth dzielą jeden modem radiowy 2,4 GHz i muszą się nim wymieniać w czasie. Większość wpisów w dzienniku poniżej wynika wprost z tej jednej decyzji zakupowej.
Sam Core2 to fragment większego ekosystemu M5Stack: kostki Core z ekranem, mniejsze Atom i StickC oraz dziesiątki nakładanych modułów, wszystko na ESP32, z publiczną dokumentacją. Do tego projektu niczego nie dokładaliśmy: jedna kostka prosto z pudełka.
Współpraca płatna · Botland jest partnerem projektu. Link do sklepu M5Stack i do dokumentacji jest bez żadnej umowy.




Wybrane wpisy z dziennika inżynierskiego. Wszystkie liczby pochodzą z telemetrii zrzucanej z urządzenia podczas wielominutowych testów.
Wi-Fi i Bluetooth siedzą w ESP32 na wspólnym module 2,4 GHz i dzielą antenę w czasie. Gdy A2DP nadaje, okno TCP (~5,7 KB, stała kompilacji Arduino LWIP) pomnożone przez RTT rozdęte do 350–500 ms daje 12–14 KB/s. Strumień MP3 128 kb/s potrzebuje 16. Deficyt to nie bug, to arytmetyka.
Klasyczna rada z forów na przyspieszenie Wi-Fi w ESP32. Przy aktywnym Bluetoothu kontroler robi abort() i kostka boot-loopuje co 26 sekund. Bez modem-sleep koegzystencja obu radiów po prostu się sypie.
CDN oddaje pierwsze sekundy strumienia szybkim burstem, potem już dokładnie 1× realtime. Każdy próg bufora ustawiony powyżej punktu równowagi nigdy nie zostanie osiągnięty: radio w nieskończoność „czeka, aż się zbuforuje". Wszystkie progi rezerw musiały zejść poniżej.
Potrojenie pracy dekodera na przebieg pętli nie dodało ani jednej ramki audio (deficyt siedzi w sieci), za to wydłużyło przebieg do 1,6 s i zabiło dotyk. Przy deficycie sieciowym budżet dekodera decyduje wyłącznie o responsywności interfejsu. Wróciło 8192 ramek na przebieg.
Ścieżki śmierci strumienia nie czyściły aktywnego endpointu, więc „rotacja kandydatów" od zawsze otwierała w kółko ten sam martwy URL. Objaw: 81 restartów w 3 minuty. Wystarczyło wyczyścić endpoint w trzech miejscach.
Handshake TLS potrzebuje ~40 KB wolnego DRAM. Przy grającym Bluetoothu zostaje 25–30 KB, więc przełączenie na stację wymagającą discovery przez HTTPS w trakcie grania jest fizycznie niewykonalne. Rozwiązanie: przypięte fallbacki plain-HTTP per stacja plus cache ostatniego działającego źródła.
Głośnik po odłączeniu zasilania nie czeka grzecznie na skan. Sam dzwoni do kostki. A kostka odrzucała nieznajomych. Klincz. Fix: dotknięcie „skanuj" otwiera okno, w którym przychodzący zgodny głośnik zostaje adoptowany i zapamiętany.
Kostka 2 m od punktu dostępowego tnie audio falami; w drugim pokoju gra idealnie. Nadajnik Wi-Fi routera zagłusza odbiornik Bluetooth w kostce. Czasem najlepszą poprawką firmware'u jest przestawienie urządzenia o trzy metry.
Zasada projektowa: wtyczka + prąd = gra. Każdą awarię radio ma przeżyć samo, bez telefonu i bez człowieka.
System powstaje w całości w parze agentów AI pracujących na jednej maszynie, z audytami krzyżowymi między silnikami. Człowiekowi zostają decyzje i uszy.
Architektura, firmware, symulator GUI z pixel-parity (przeglądarka rysuje dokładnie te same piksele RGB565 co urządzenie), dwujęzyczna dokumentacja.
Przejęcia produkcji w kryzysie: fizyka toru audio, hotfixy rotacji i TLS, bramki QC, audyty krzyżowe raportów drugiego silnika.
Wyznacza granice produktu, słucha wyników na żywo i zatrzymuje każdy flash, który nie przeszedł protokołu. Jedyny element układu, który słyszy.
Werdykt PASS/FAIL wydaje telemetria. Każdy kandydat na firmware przechodzi wielominutowy test z zapisem: starvation Δ0 · watchdog Δ0 · wstrzyknięta cisza 0,0 s / 300 s · kolejki pełne. Dopiero potem człowiek słucha.
W repo jest ponad 100 numerowanych dokumentów inżynierskich, każdy po polsku i angielsku. Tak, do radia.
Część z nich naprawdę.
Od wydania 0.2 wybierasz dziewięć z katalogu 222 pozycji sprawdzonych realnym połączeniem. Konfigurator pyta o nie przy pierwszym uruchomieniu i zostaje w ustawieniach.
Bo router krzyczy Wi-Fi prosto w bluetoothowe ucho kostki. Zmierzyliśmy to. Trzy metry odstępu robią więcej niż niejeden firmware-fix, szczegóły w LOG-08.
Są, czasem płatne. Tylko że telefon dzwoni, powiadamia i wychodzi z tobą z kuchni. Kostka stoi i gra.
Sprzęt ~50 €. Do tego 3,45 miliarda tokenów AI, których nie przeliczamy na złotówki, bo miało być hobby.
Kolejność wydania odwróciliśmy celowo: zamiast wypuszczać surowe źródła, najpierw udostępniamy gotowy obraz do wgrania: jedna komenda esptool i kostka gra. Kod jest już na GitHubie, razem z pełnymi źródłami obok binarki.
Licencje zadeklarowane: GPL-3.0-or-later (kod) · CC BY-SA 4.0 (dokumentacja) · CC0 (katalog stacji) · bez retransmisji i nagrywania audycji · logotypy stacji tylko za zgodą nadawców
Ten system napisały dwa agenty AI pod moim nadzorem i na moją odpowiedzialność. Nazwa, narracja i kanał dystrybucji też są moje. Tak samo powstała marka zenbox, którą współtworzyłem jako CMO i doprowadziłem do pierwszej piątki hostingów w Polsce. U klientów robię jedno i drugie: pomagam podjąć decyzję, ustawiam markę i komunikację, prowadzę budowę i podpisuję się pod wynikiem. Zawodowo od 2003, 8 systemów na produkcji, 47 projektów pod NDA. Biorę zlecenia, od jednorazowej konsultacji po prowadzenie całego wdrożenia.