tsirysndr/rockbox-zig
Rockbox open source high quality audio player as a Music Player Daemon. This project brings modern enhancements to the classic Rockbox firmware, using...
A modern take on the Rockbox open source high quality audio player with enhancements in Zig and Rust. This project offers:
Take advantage of modern tooling while preserving the core functionality of Rockbox.
NOTE 🐲 It is a work in progress and is not yet ready for use. 🏗️🚧
Zig Build System
Rockbox API FFI for Rust
gRPC API
GraphQL API
HTTP API
Web Client (React)
Fast search engine, built with
Tantivy
Desktop Client (Electron/Gtk)
Rockbox REPL
Terminal Client (TUI)
Systemd service
Gapless playback and crossfading
Navigate music by folders or tag database
Supports over 20 sound codecs: MP3, OGG, WAV, FLAC and many more
Android Library
Mobile version (React Native)
Stream from Youtube (audio only)
Stream from Spotify
Stream from Tidal
Stream to Chromecast
Stream to Kodi
TuneIn Radio
MPD Server
MPRIS
UPnP/DLNA
Airplay
TypeScript (Deno) API (for writing plugins)
Wasm extensions
To quickly get started, you can run the following docker command:
docker run \
--device /dev/snd \
--privileged \
-p 6061:6061 \
-p 6062:6062 \
-p 6063:6063 \
-p 6600:6600 \
-v $HOME/Music:/root/Music \
tsiry/rockbox:latest
echo "deb [trusted=yes] https://apt.fury.io/tsiry/ /" | sudo tee /etc/apt/sources.list.d/fury.list
sudo apt-get update
sudo apt-get install rockbox
Add the following to /etc/yum.repos.d/fury.repo
:
[fury]
name=Gemfury Private Repo
baseurl=https://yum.fury.io/tsiry/
enabled=1
gpgcheck=0
Then run:
dnf install rockbox
paru -S rockbox-zig-bin
curl -fsSL https://raw.githubusercontent.com/tsirysndr/rockbox-zig/HEAD/install.sh | bash
Linux
: intel:
rockbox_2025.02.16_x86_64-linux.tar.gz
arm64:
rockbox_2025.02.16_aarch64-linux.tar.gzRockbox daemon can be started as a systemd service. To enable and start the service, run the following command:
rockbox service install
To disable and stop the service, run the following command:
rockbox service uninstall
To check the status of the service, run the following command:
rockbox service status
Run the following commands to build the project:
Before building the project, you need to install the necessary dependencies for your operating system.
sudo apt-get install libsdl2-dev libfreetype6-dev libunwind-dev zip protobuf-compiler cmake
sudo dnf install SDL2-devel freetype-devel libunwind-devel zip protobuf-compiler cmake
git clone https://github.com/tsirysndr/rockbox-zig.git
git submodule update --init --recursive
cd rockbox-zig
cd webui/rockbox
deno install
deno run build
mkdir -p build && cd build
../tools/configure --target=sdlapp --type=N --lcdwidth=320 --lcdheight=240 --prefix=$HOME/.local
make zig
sudo apt-get install flatpak
flatpak remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak install --user flathub org.flatpak.Builder
flatpak install --user flathub org.gnome.Sdk/x86_64/47
flatpak install --user flathub org.gnome.Platform/x86_64/47
flatpak install --user org.freedesktop.Sdk.Extension.rust-stable
flatpak install --user org.freedesktop.Sdk.Extension.llvm18
cd gtk
flatpak run org.flatpak.Builder --user --disable-rofiles-fuse --repo=repo flatpak_app build-aux/io.github.tsirysndr.Rockbox.json --force-clean
flatpak run org.flatpak.Builder --run flatpak_app build-aux/io.github.tsirysndr.Rockbox.json rockbox-gtk
Open http://localhost:6062/graphiql in your browser.
Open http://localhost:6063 in your browser.
https://buf.build/tsiry/rockboxapis/docs/main:rockbox.v1alpha1
Try Rockbox gRPC API using Buf Studio.