GNARLYR.

Open firmware / SNOWSKY ECHO

Your ECHO.Remixed.

A fresh spin on your full-size 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

The good stuff

Small player. Bigger personality.

A cassette state of mind

Album art, cassette menus, animated reels, and a playback counter bring analog character to your collection.

Make a mixtape

Save, name, and edit up to 32 mixes. Keep your song order and duplicates through library rescans.

Take over Up Next

Add, move, or remove songs in album and shuffle queues. Choose Play Next, then resume your saved session after a restart.

Buttons, your way

Set separate tap and hold actions for Volume ±, Play, and Menu. Use playback shortcuts with the screen off.

Bring your whole library

Browse albums and Cover Flow, import M3U/M3U8 playlists, and split CUE album images into tracks. Build covers on the player.

Keep it personal

Keep album favorites, audiobook and podcast bookmarks, and your settings. Play from a FAT32 or exFAT microSD card, or internal storage.

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

Build from source

Make it Gnarlyr.

Build the image in your SnowskyEcho checkout, then record its SHA-256 for the install check.

You’ll need

  • Python 3.14 and the packages in firmware/tools/requirements.txt
  • CMake, Clang/clang-format, SDL2, FFmpeg, and an Arm GNU cross-compiler
  • Scratch mounted at /Volumes/Scratch for build output
Set up your build environment

Create your Python environment on Scratch, then set:

ECHO_VENV
Your Python virtual environment folder on Scratch
ECHO_ARM_BIN
The toolchain folder containing arm-none-eabi-gcc

Full setup: docs/building-firmware.md in your checkout.

GNARLYR / BUILDmacOS

Run from the SnowskyEcho project root.

Build the image

python3 tools/firmware.py setuppython3 tools/firmware.py build --preset release

Record its SHA-256

shasum -a 256 /Volumes/Scratch/SnowskyEcho/build/custom-firmware/release/ECHOV455.IMG

Image ECHOV455.IMG
Folder /Volumes/Scratch/SnowskyEcho/build/custom-firmware/release/

Continue to install

Installation

Build. Copy. Eject. Enjoy.

Before you start: back up your files, charge the ECHO, and turn the volume down. Keep the stock recovery instructions handy.

  1. Build the image

    Run the commands above to create ECHOV455.IMG and record its SHA-256.

  2. Copy and verify

    USB shows internal storage, plus a microSD drive when a card is inserted. Copy the image to the top level of internal storage as its only update file, then check the copy.

  3. Eject the drives

    Use Eject or Safely Remove on every mounted ECHO drive, then finish below for your install type.

Check the copy · macOS

Use your internal drive’s name for YOUR_ECHO. The result should match your build’s SHA-256.

shasum -a 256 "/Volumes/YOUR_ECHO/ECHOV455.IMG"

First install from stock

  1. Unplug USB after ejecting.
  2. The player installs the image and restarts.
  3. Let its first music and artwork scan finish before listening.

Updating Gnarlyr

  1. After ejecting, wait for “Update installed.”
  2. Unplug USB.
  3. Hold Power to switch off, then turn the player back on.
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.

Recovery

Back to stock.

Back to installation

Restore the official firmware

Copy your saved official full-size ECHO ECHOV200.IMG to the top level of internal storage as its only update file. Eject every ECHO drive, wait for “Update installed,” then unplug and restart.

Recover through maskrom

Follow firmware/docs/device-recovery.md in your SnowskyEcho checkout. It covers the full-size ECHO’s 2207:262d USB identity, connection checks, and stock restore with the patched rkdeveloptool. Keep it with your stock image and a data USB cable.

Stay offline. Get a little gnarly.

Made for the music you already love.