Skip to content

v3.0.0 — The station directory moves onto the device

Choose a tag to compare

@halbeshuhn halbeshuhn released this 08 Aug 18:22
· 14 commits to main since this release

The station directory now lives on the device.

Until now, adding a station to a Cardputer radio meant powering it down, pulling
the microSD card, finding a card reader, searching the web for a stream URL that
actually works, and editing a text file. This release removes that entirely.

Press BtnG0 → Online stations and you are browsing
radio-browser.info: 42 countries, with Germany
and the United States broken down by region. ENTER plays a station right away.
Save station writes it into your own list on the SD card — written by the
device, no cable involved.

The same goes for Wi-Fi: scan, pick, type the password. Up to five networks are
remembered and can be replaced or deleted from the menu. No recompiling to move
to a different network.

What else is new in this version

  • Local station list fully editable on the device — play, add, delete
  • Real visualizations: VU meters from the decoder's own level data, and a
    spectrum analyzer running a 512-point radix-2 FFT with a Hann window over the
    actual PCM samples. The code this grew from filled the display with random()
  • German and English, switchable at runtime, remembered across restarts
  • Nokia pixel font in two sizes, generated from the original TTF
  • Stream monitoring — a stream that connects but delivers nothing says so
    instead of failing silently
  • Paging with ← / → on every level of the browser

Flashing

File Use with
Cardputer-WebRadio_v3.0.0.bin SD card / M5Launcher — application only
Cardputer-WebRadio_v3.0.0_merged.bin M5Burner or a web flasher — complete image, write to address 0x0

On first start the device scans for Wi-Fi and asks for a password. The interface
comes up in English; switch under BtnG0 → Language.

Building from source: the library patch is required

ESP32-audioI2S must be patched before you compile, or the device can crash and
lose its stored Wi-Fi credentials. Some stations are listed as http but
redirect to https when you press play; the library then brings up mbedTLS,
which without PSRAM wants about 32 KB on a device that has 13 to 25 KB free.
Measured on hardware, free heap dropped to 996 bytes.

Four lines, in library-patch/ with the full reasoning and the measurements.
Devices with PSRAM are unaffected.

Known limitations

The Cardputer Adv has no PSRAM, and that shapes everything:

  • https streams do not play. The station directory is filtered accordingly
  • AAC does not play — the AAC decoder needs more memory than exists here.
    The directory is filtered to MP3. Note that a station's name is no guide:
    "ABC News Radio MP3" is served as AAC+
  • 128 kbit/s or lower is the sweet spot. The input buffer holds 0.87 s at
    128 kbit/s but only 0.44 s at 256 kbit/s — not enough to ride out network
    jitter

All three are explained with measurements in the README.

Credits

Built on WuSiU/WebRadio_WuSiU_Cardputer_Adv,
which is based on cyberwisk/M5Cardputer_WebRadio.
Audio by schreibfaul1/ESP32-audioI2S.
Station data from radio-browser.info, free and
without registration.