A modern take on the Rockbox open source high quality audio player with enhancements in Zig and Rust. This project offers:
- gRPC & GraphQL APIs for seamless interaction and control
- Chromecast support for streaming to your TV
- MPD server for compatibility with existing clients
- MPRIS support for desktop integration
- TypeScript support for building powerful extensions
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.01.18_x86_64-linux.tar.gz arm64: rockbox_2025.01.18_aarch64-linux.tar.gz
Rockbox 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 libusb-dev libsdl2-dev libfreetype6-dev libunwind-dev zip protobuf-compiler cmake
sudo dnf install libusb1-devel SDL2-devel freetype-devel libunwind-devel zip protobuf-compiler cmake
sudo ln -s /lib64/libusb-1.0.so /usr/lib64/libusb.so
- Clone the repository
git clone https://github.com/tsirysndr/rockbox-zig.git
git submodule update --init --recursive
- Navigate to the project directory
cd rockbox-zig
- Build the webui
cd webui/rockbox
deno install
deno run build
- Run the following command to build the project
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.