GNARLYR.

Open firmware / Full-size SNOWSKY ECHO

Your ECHO.Remixed.

A fresh spin on your Snowsky ECHO. Cassette soul, a queue you control, and mixtapes worth keeping.

Free & open source. Built for listening, offline.

Your collection. No connection.FLAC / MP3 / WAV / AAC-LC / ALACGPL-3.0-or-later

01 / The good stuff

Small player. Bigger personality.

Your own music, with more ways to make it yours.

[ 01 ]

A cassette state of mind

Album art, cassette-inspired menus, moving tape reels, and a playback counter. A little analog character for your digital collection.

[ 02 ]

Make an actual mixtape

Save, name, load, and edit up to 32 mixes. Keep your song order and duplicates, even after a library rescan.

[ 03 ]

Take over Up Next

Reorder, remove, add, or play a song next. Edit album and shuffle queues, then pick up your saved session after a restart.

[ 04 ]

Buttons, your way

Choose eight tap-and-hold assignments across Volume ±, Play, and Menu. Playback shortcuts work with the screen off.

[ 05 ]

Bring your whole library

Browse albums and Cover Flow, use M3U/M3U8 playlists, and split album images with CUE sheets. Build artwork and the library on the player.

[ 06 ]

Keep it personal

Album favorites, audiobook and podcast bookmarks, and saved settings. Use a FAT32 or exFAT microSD card, or internal storage without a card.

Made for the full-size ECHO.4 GB / 8 GB family · 480 × 222 display

02 / Press play on something new

Build from source

A new side
to your ECHO.

Build Gnarlyr from the SnowskyEcho source with the project tools.

The release build produces ECHOV455.IMG. Calculate its SHA-256, then follow the install steps below.

Read the install steps first
GNARLYR / BUILD THE FIRMWARE

# From the SnowskyEcho project root, on macOS

python3 tools/firmware.py setup
python3 tools/firmware.py build --preset release
shasum -a 256 /Volumes/Scratch/SnowskyEcho/\
build/custom-firmware/release/ECHOV455.IMG

OUTPUT ↳ ECHOV455.IMG
/Volumes/Scratch/SnowskyEcho/build/
custom-firmware/release/

Requires the source checkout, mounted Scratch volume, Python 3.14, CMake, Clang/clang-format, SDL2, FFmpeg, an Arm cross-compiler, and the firmware’s Python dependencies. See build setup for the project’s environment details.

03 / Flip the tape

Build. Copy. Eject. Enjoy.

Install over USB in three steps.

Before you install: back up your files, charge the battery, turn the volume down, and keep the stock recovery image handy.

  1. Get the right image

    Build ECHOV455.IMG above. Record its SHA-256, then verify the copied file has the same hash.

  2. Copy to internal storage

    Connect the ECHO over USB. Copy the image to the top level of its internal drive, outside any folder. Remove other ECHOVnnn.IMG and ECHOECHO.IMG update files first.

  3. Eject and let it update

    Safely eject both drives, then unplug for the first install from stock. Leave the player powered while it updates. Let the first library and artwork scan finish before listening.

Already running custom firmware? Eject both drives and wait for “Update installed” before unplugging and restarting with Power.

Which music files and artwork can I use?

Play FLAC, MP3, WAV, AAC-LC, and ALAC in .m4a files. Browse your collection with album art, playlists, and CUE tracks.

Use embedded album art or a JPEG/PNG named cover, folder, front, or albumart. M3U/M3U8 playlists work alongside saved mixtapes. CUE sheets split single-file FLAC, WAV, and MP3 album images into individual tracks. Accented Latin and Cyrillic titles are supported.

How do I set up a source build?

Start with the SnowskyEcho checkout and docs/building-firmware.md. Install Python 3.14 and the dependencies in firmware/tools/requirements.txt into a Scratch-backed virtual environment. Set ECHO_VENV to that environment and ECHO_ARM_BIN to your Arm GNU toolchain’s bin directory.

Install CMake, Clang/clang-format, SDL2, and FFmpeg, mount Scratch, then run the setup and release commands above. Find the finished image under /Volumes/Scratch/SnowskyEcho/build/custom-firmware/release/.

How do I return to stock or recover a player?

Keep the official full-size ECHO ECHOV200.IMG, a data USB cable, and the project’s recovery guide, firmware/docs/device-recovery.md.

To return to stock, copy the official image to internal storage. Keep it as the only update file at the drive root. Eject both drives, wait for the updater to finish, then unplug and restart.

For maskrom recovery, follow the guide using its patched rkdeveloptool. The guide covers the full-size ECHO’s 2207:262d USB identity, connection checks, and stock restore.

Stay offline. Get a little gnarly.

Made for the music you already love.