Skip to content

v1.0.0 — First working release

Choose a tag to compare

@ry-ops ry-ops released this 29 Aug 13:35
· 13 commits to main since this release

The first fully working release of Liner — verified end-to-end on real M5Stack PaperColor hardware against a live Volumio instance.

Features

  • Connects to Wi-Fi and polls Volumio's local REST API for playback state
  • Now-playing card: album art + title/artist/album, rendered to the 400×600 Spectra 6 e-paper panel
  • Idle screen when nothing is playing
  • Event-driven refresh — only redraws on track change, since a full e-paper refresh takes 15–30s
  • Up/down buttons skip to next/previous track
  • Top button cycles through a configurable list of known Wi-Fi networks
  • Service-aware album art resolution, with Tidal verified working and local/Spotify paths stubbed in for future testing

Key fix: album art

Tidal (and many CDNs) serve album art as progressive JPEG, which M5GFX's embedded decoder can't handle — drawJpg() was silently failing on every image. Fixed by routing external art URLs through the wsrv.nl image proxy, which re-encodes as baseline JPEG and pre-scales to the display's art box in the same request (also shrinking the download significantly).

Key fix: button responsiveness

The main loop used to block on a 5-second delay() between Volumio polls. Button edge-detection only runs inside M5.update(), so a quick tap that started and ended within that blocked window was never observed. Polling is now non-blocking and time-gated instead, so buttons stay responsive.

Known limitations

  • Only the Tidal album art path is verified; local file (mpd) and Spotify (spop/volspotconnect2) branches exist as stubs, untested
  • Network switching is a compile-time list, not an interactive on-screen picker (deliberate, given e-paper's refresh time)
  • Flashing and booting the board both currently require manual button presses — see the README's Setup section

⚠️ Before flashing this prebuilt binary

Liner-v1.0.0-merged.bin is a single flashable image built with the maintainer's own Wi-Fi network and Volumio host baked in (from a personal config.h, not committed to the repo). It will not connect to your network as-is.

For your own setup, build from source instead: copy include/config.h.example to include/config.h, fill in your own Wi-Fi/Volumio details, then build and flash per the README. This prebuilt binary is provided mainly as a working reference/checksum for M5Burner-style distribution, not a drop-in flash-and-go image.

Flash at offset 0x0 — this is a merged image (bootloader + partition table + app), not just the app partition.