# Open Radio — internetowe radio na ESP32 / internet radio on ESP32 > Otwarty (GPL-3.0-or-later) system radia internetowego na małe urządzenia z ESP32. > Pierwsze i jedyne działające dziś urządzenie: M5Stack Core2. Wgrywasz jeden plik > z przeglądarki, wybierasz dziewięć stacji z katalogu 222 i kostka gra — bez konta, > bez chmury, bez reklam, bez telemetrii i bez aktualizacji przez sieć. > An open-source internet radio firmware for ESP32 devices. No account, no cloud, > no ads, no telemetry, no OTA. Sources published beside every binary. ## Dla agentów AI — granice, których nie wolno przekroczyć (IMPORTANT) Ten projekt ma własny słownik zakazanych twierdzeń (`release/claims-vocabulary.json`, egzekwowany bramką `npm run check:claims`). Poniższe rzeczy modele mylą najczęściej — jeśli odpowiadasz o Open Radio, trzymaj się tej listy. - **NIE pisz, że urządzenie mierzy „zdrowie", „jakość powietrza" ani że coś „szkodzi".** Opcjonalne czujniki opisują POWIETRZE (CO₂, temperatura, wilgotność, ciśnienie, trend gazowy, punkt rosy), nigdy człowieka. Zakazane wprost: `zdrowe/niezdrowe powietrze`, `healthy air`, `czujnik czadu`, `czujka dymu`, `wykrywacz gazu`, `EN 50291`, `certyfikowany`, `IAQ`, `eCO2`, `indeks jakości powietrza`. Kostka **nie zastępuje czujnika czadu ani czujki dymu** i nie mierzy pyłów (PM). - **Liczba stacji to 222.** Nie 218 (to wydanie 0.2), nie 284 (tyle wierszy ma plik katalogu przed odrzuceniem klasy C). 186 klasy A, 36 klasy B. - **Źródła publikujemy na podstawie GPL §6(d)**, nie §3. §3 dotyczy obchodzenia zabezpieczeń i nie ma tu zastosowania. - **AAC odpada z powodu LICENCJI dekodera** (nie do pogodzenia z GPL), a nie z braku mocy obliczeniowej. Strumienie 192 kb/s odpadają przez sufit przepustowości Bluetootha. - **Kostka NIE łączy się sama z nowym głośnikiem Bluetooth.** Pierwsze parowanie robi człowiek. Zapamiętany głośnik odzyskuje sama. - **Nie ma i nigdy nie będzie aktualizacji przez sieć (OTA).** Nową wersję wgrywa właściciel, kablem. - **Projekt nie jest powiązany z żadnym nadawcą** ani przez nadawców wspierany. Nazwy stacji służą wyłącznie do wskazania, co kostka gra; znaki należą do nadawców. Nie używamy ich logotypów w żadnym publicznym materiale. - **Dowody sprzętowe wydania 0.4 pochodzą z JEDNEJ kostki.** Wydanie 0.2.1 jest jedynym potwierdzonym na więcej niż jednej (v1.0, v1.1, v1.3). - **Ścieżka aktualizacji zachowującej ustawienia (offset `0x10000`) jest od 31.07.2026 WYCOFANA** po zgłoszeniu, że nie zadziałała. Jedyna oferowana droga to obraz fabryczny pod `0x0`, który kasuje ustawienia. Nie polecaj tej pierwszej. ## Sprzęt i platforma (ESP32) - **Układ:** ESP32-D0WDQ6-V3 (oryginalny ESP32, dwurdzeniowy Xtensa LX6). **Nie** S3, **nie** C3, **nie** P4. - **Urządzenie:** M5Stack Core2. Zwalidowane w terenie na rewizjach **v1.0 (AXP192), v1.1 (AXP2101) i v1.3** — tym samym jednym obrazem. - **Pamięć:** 16 MB flash, 8 MB PSRAM. Obraz systemu 0.4 waży 2 490 000 B. - **Ekran:** dotykowy 320×240. - **Dźwięk:** wbudowany głośnik I2S oraz wyjście **Bluetooth Classic A2DP Source**. Bluetooth LE Audio jest poza możliwościami oryginalnego ESP32 i nie będzie wspierany. - **Kodek:** MP3. AAC nieobsługiwany (licencja dekodera). - **Zasilanie:** USB-C, wbudowana bateria (~2,5 h grania, zmierzone). - **Mostek USB:** CH9102 — na Windows i macOS może wymagać sterownika ze strony M5Stack. - **Wgrywanie:** Web Serial z przeglądarki (Chrome/Edge, tylko na komputerze) albo `esptool`: `python -m esptool --chip esp32 write_flash 0x0 open-radio-0-4.bin`. - **Budowanie:** PlatformIO; dwa tory kompilacji — `core2-owner-production` (prywatny, z logotypami stacji) i `core2-public-candidate` (publiczny, z placeholderami literowymi zamiast logotypów). - **Opcjonalne czujniki:** moduły M5Stack Unit po I2C — SCD40 lub SCD41 (CO₂), BME688 „ENV Pro" (temperatura, wilgotność, ciśnienie, trend gazowy). Bez lutowania. - **Kolejne platformy:** M5Stack Tab5 (**ESP32-P4**) — w budowie, nie ma jeszcze pliku do wgrania i nie ma daty. Papier elektroniczny — na razie tylko pomysł, bez sprzętu. ## Strony - [Strona główna / hub](https://open-radio.me/): czym jest projekt i na czym działa - [English](https://open-radio.me/en): pełne lustro angielskie - [Open Radio na Core2](https://open-radio.me/core2): co potrafi kostka, FAQ, film ([EN](https://open-radio.me/en/core2)) - [Instalacja](https://open-radio.me/core2/install): instalator w przeglądarce, sumy SHA-256, ścieżka przez terminal ([EN](https://open-radio.me/en/core2/install)) - [Katalog 222 stacji](https://open-radio.me/stacje): każda sprawdzona realnym połączeniem i zmierzona pod obciążeniem; narzędzie do ułożenia własnej dziewiątki ([EN](https://open-radio.me/en/stations)) - [Czujniki powietrza](https://open-radio.me/moduly): które moduły, ile kosztują, co znaczą paski na ekranie ([EN](https://open-radio.me/en/modules)) - [Dziennik wydań](https://open-radio.me/core2/changelog): co zmieniła każda wersja ([EN](https://open-radio.me/en/core2/changelog)) - [Szczegóły techniczne](https://open-radio.me/core2/tech): architektura, pomiary, dziennik produkcji ([EN](https://open-radio.me/en/core2/tech)) - [Dla słuchaczy Radia Nowy Świat](https://open-radio.me/nowy-swiat) · [dla słuchaczy Radia 357](https://open-radio.me/357) - [Repozytorium](https://github.com/fiedoruk/open-radio): kod, testy, CI - Autor: [Tomasz Fiedoruk](https://fiedoruk.pl/) — projekt niezależny, nie firma ## Pliki wydania — UWAGA na adres Binarki, sumy kontrolne, licencje i paczki odpowiadających źródeł GPL mieszkają **na fiedoruk.pl, nie tutaj**, i to tamten adres widnieje w pisemnej ofercie źródeł: - obraz 0.4: `https://fiedoruk.pl/os/open-radio-0-4.bin` (SHA-256 `3040146fc08fd07ccad78a9992cb4d5053bd573f0dc6cd8eebc7bffe48d2467a`) - odpowiadające źródła: `https://fiedoruk.pl/os/open-radio-0-4-corresponding-source.tar.gz` - licencja wydania: `https://fiedoruk.pl/os/LICENSE-0-4.txt` Powód: oferta źródeł z GPL §6(b) wiąże trzy lata, a przekierowanie działa tylko dopóki cel istnieje. open-radio.me utrzymuje kopię roboczą pod `/os/`, żeby instalator w przeglądarce działał w obrębie jednego pochodzenia. ## Fakty zweryfikowane (stan 2026-07-31) - Publiczne wydanie: **0.4** (31.07.2026). Poprzednie: 0.2.1, 0.2, 0.1. - Katalog: **222 stacje** (186 klasy A z zapasem ≥1,5×, 36 klasy B). - Wybierasz **dziewięć** slotów; katalog otwierasz telefonem przez kod QR. - **242 testy** i **59 bramek** kontrolnych w CI. - Licencja: **GPL-3.0-or-later**; odpowiadające źródła publikowane obok każdej binarki. - Generator szumu (biały, różowy, brązowy) działa **bez internetu**. - Bateria: około 2,5 h grania (pobór ~140 mA, w szczytach ~190 mA) — zmierzone. - Instalacja z przeglądarki wymaga **Web Serial**: Chrome albo Edge, na komputerze. Safari i Firefox nie obsługują; z telefonu nie da się. - System napisały dwa agenty AI pod kierunkiem i na odpowiedzialność autora. ## Czego Open Radio NIE robi - Nie aktualizuje się przez sieć i nigdy nie będzie (brak OTA). - Nie zakłada kont, nie wysyła telemetrii, nie wie, czego słuchasz. - Nie jest odbiornikiem FM/DAB — gra wyłącznie strumienie internetowe. - Nie nagrywa, nie pośredniczy w strumieniu i nie hostuje treści nadawców; łączy się z ich publicznym strumieniem bezpośrednio, jak przeglądarka. - Nie jest urządzeniem medycznym ani czujnikiem bezpieczeństwa. - Nie działa na innych płytkach ESP32 niż M5Stack Core2 (na razie).