odio·love Revive any Raspberry Pi as an open-source audio streamer
That Pi in your drawer?
It's already a €400 streamer.
Flash an SD card. Your Pi wakes up as a full streamer, ready for Home Assistant.
What is odio?
Got an amp or speaker with no smart features — either it never had any, or the manufacturer dropped support? Plug a Raspberry Pi running odio into its input. It now speaks AirPlay, Spotify Connect, Bluetooth, DLNA, MPD, web radios — every modern source, on your network. Even a Pi B from 2012. Free, self-hosted, no account, no cloud.
You’ll want a DAC for a proper listening experience.
- Built for makers.
- Minimal Debian, user session, near-zero system changes. Nothing locked — underneath it’s still your Debian, yours to extend, break, fix, repurpose.
- Open for developers.
- Every node exposes a REST API. Playback, volume, sources, Bluetooth, services — all programmable over HTTP.
- Any player, automatically.
- The API talks to audio apps through a standard protocol. odio ships a curated stack; add or remove players — the API just sees what’s running.
- UI replaces your remote.
- Power, volume, play/pause, next, source. Browsing catalogs stays with Spotify, BubbleUPnP, myMPD — pick your tool.
Custom clients, automations, voice control (Piper, Whisper), parental controls your kid will learn to bypass. The API is the product. Your setup, your rules.
Everything. No paywall.
Every protocol. Every source. Every room. Free.
Bluetooth Audio
Works like any commercial speaker. Control power and pairing from the UI, PWA or Home Assistant.
AirPlay 2
Stream from any Apple device directly to your Pi with zero configuration.
Multi-room
Snapcast integration for perfectly synchronized audio across every room.
UPnP / DLNA
Full UPnP renderer and server via upmpdcli — works with every media client.
CD & USB Auto-play
Insert a disc or USB drive — playback starts automatically with full metadata and cover art via GnuDB and MusicBrainz.
Network Streaming
PulseAudio TCP sink — any Linux machine running PulseAudio or PipeWire streams to the Pi natively, no extra client needed.
Home Assistant
Not just a media player card. Services, outputs, Bluetooth, power: complete odio stack as native HA entities.
PWA Interface
Install the web app on any device for a native-feeling control experience.
Streaming services
Your music sources, on your Pi. No extra cost.
What freedom costs elsewhere
The same features. Very different terms.
| Feature | odio | Volumio (free) | Commercial |
|---|---|---|---|
| License | 100% open source | Partially closed source | Proprietary |
| Price | Free | Freemium — Premium at €60/year | €200–€2000+ device |
| Account required | No | Yes | Yes |
| Cloud dependency | None | Yes (account, Premium, plugins) | Yes |
| Minimum hardware | Raspberry Pi B (armv6l, 2012) | Raspberry Pi 3 | Dedicated hardware only |
| Music library management | Streamer first; optional myMPD library browser | Built-in library browser | Built-in (locked ecosystem) |
| Bluetooth A2DP | ✅ Included | 💰 Premium only | ✅ Included |
| AirPlay | ✅ Included | ✅ Free plugin | Varies |
| Spotify Connect | ✅ Included | ✅ Free plugin | Varies |
| Qobuz | ✅ Included (via upmpdcli) | 💰 Premium only | Varies |
| Tidal / Tidal Connect | ✅ Included (via upmpdcli) | 💰 Premium only | Varies |
| Web radios | ✅ Included (myMPD / upmpdcli) | ✅ Free plugin | Varies |
| UPnP / DLNA | ✅ Included | ✅ Included | Varies |
| Multi-room | ✅ Included (Snapcast) | 💰 Premium only | Varies |
| CD playback | ✅ Included with metadata | 💰 Premium only | Varies |
| Source switching | Not needed: all sources mix simultaneously | Required: one source at a time | Required: one source at a time |
| Network audio sink | ✅ PulseAudio / PipeWire TCP | ❌ | ❌ |
| Home Assistant | ✅ Native integration | Unofficial community plugin | Varies |
| Voice assistant / AI | ✅ Via Home Assistant (Piper, Whisper) | 💰 CORRD (Premium) | 💰 or locked ecosystem |
| Installation | Image flash or one command (curl | bash) | Image flash | Plug and play |
| Upgrade | In-place via odio-upgrade; OTA UI/HA upcoming | OTA / reflash between major versions | Vendor-controlled OTA |
| Security updates | ✅ Continuous (unattended-upgrades on SD images) | Latest kernel at release | Vendor-controlled |
| Long-term stability | No reinstall from Buster to Trixie | Reflash between major versions | EOL decided by vendor |
Get started
Two paths. Same destination.
Flash an image
Use Raspberry Pi Imager with a custom repository URL. Configure hostname, SSH & WiFi, then flash.
- Imager → Options App → Content Repository → Use custom URL
- Available in armhf (32-bit) and arm64 (64-bit)
Install on Debian / Pi OS
Debian 13 (trixie) and Ubuntu compatible. The installer handles all dependencies and services.
- ~800 MB - ~5 min on x86, <15 min on Pi 3B+, up to 1h20 on a Pi B+ at 800 MHz
Tip: set up DAC and overclocking (armhf) in /boot/firmware/config.txt beforehand to save a reboot.
Need help? Check the documentation for detailed guides and API reference.
Compatible hardware
- Raspberry Pi B, B+, Zero W - armv6l (800 MHz recommended)
- Raspberry Pi 2 - armv7
- Raspberry Pi 3, 4, 5, Zero 2 W - arm64
- Desktop, NAS - x86-64
- Debian 13 (Trixie)
odio is in beta — daily use is solid. Install and upgrade paths can still hit edge cases across the long tail of hardware. Try it on yours, report bugs and help grow the list.
Verified on - add yours ↗
Common questions
Things people keep asking on Reddit, GitHub, and DMs.
How does odio differ from Volumio, moOde, or other Pi audio distros?
odio is not a custom distro: it’s a stack of services that installs on top of your existing Raspberry Pi OS Lite. It runs on every Pi from the original B (700 MHz single core, 32-bit) to the Pi 5, exposes power and Bluetooth as Home Assistant entities, plays inserted CDs and USB drives automatically with metadata, and ships a documented HTTP API you can build your own UIs on. See how it stacks up against commercial alternatives.
Which Raspberry Pi models are supported?
All of them. Pi B / B+ / Zero W (armv6l), Pi 2 (armv7), Pi 3 / 4 / 5 / Zero 2 W (arm64). x86-64 desktops and NAS running Debian 13 are also supported. The full hardware matrix is in the install section above.
Do I need to flash a new SD card?
No. odio installs on top of an existing Raspberry Pi OS Lite (Trixie) with a single curl install command. You keep your SSH keys, your hostname, and anything else you already run on the Pi. Pre-built Raspberry Pi Imager images are available if you prefer to start fresh.
Where does my music library live?
Mount it at /media/USB/<music> via NFS, SMB, or local storage. MPD picks it up automatically. If the library lives on a NAS, you can also stream straight to odio via AirPlay, Snapcast, UPnP, or PulseAudio TCP without copying anything: see the features section for the full protocol list. The MPD guide walks through library mount details.
Can odio run in Docker?
No, not as a real install target. Docker is used in CI to test the install playbook on x86_64, arm64, and armhf (via qemu), but the supported install path stays bare-metal Pi OS. The core API (go-odio-api) ships its own docker-compose if you want to embed just the brain into your setup. Containerizing the full audio stack is open territory, contributions welcome.
Does it work with Plex, Jellyfin, Music Assistant, or Navidrome?
Yes, in different ways. Music Assistant connects via the AirPlay, Snapcast, UPnP, or Spotify Connect endpoints odio exposes. Navidrome works through MPD’s library scan. Plexamp can run as a third-party extension in odio’s user session. Per-stack guides cover each integration.
Is odio free? What's the license?
Yes, free and open source under BSD-2-Clause. No accounts, no telemetry, no paid tier: see the comparison with commercial streamers for what that means in practice. Every component (API, installer, Home Assistant integration, web app, CD player, docs) is public on GitHub.
odio·love
In 2016, I almost bought a smart amp. The ones with the inputs I needed — phono included — were expensive, and one thought kept nagging me: the day the manufacturer decided my hardware wasn’t worth supporting anymore, that money would be gone. So I bought a dumb amp instead. A €35 Raspberry Pi B+, a HiFiBerry DAC, a wooden box. I’d do the smart part myself — a free machine between the amp and the rest of the world, where no one else held the lease.
Over the years I tried everything: Volumio, RuneAudio, Mopidy, Pi MusicBox. Three times Volumio. Each time the same story: Locked appliances, Bluetooth that barely worked, audio cracks, half-broken setups. Never quite right. Never quite mine.
During the first COVID lockdown, I finally stopped tweaking other people’s system and built what I actually wanted. The Pi B+ is still running. It’s 2026.
Hardware doesn’t become obsolete. Someone decides it is.
In 2022, Sonos pushed a software update that permanently degraded its older speakers, hardware that worked perfectly the day before. Not a technical necessity. A choice. Pay for new hardware or accept a worse product you already bought.
Two years later, a mandatory app rewrite silently removed dozens of features overnight. Same hardware. Same network. Alarms gone. Local library, gone. The product you bought runs on software you don’t control, updated on a schedule you didn’t choose.
And it’s not always a software update. A Marantz A/V receiver from 2012 still plays, still amplifies, still has its web radio menu — but the directory service behind it now charges a yearly fee to add a single station. A PURE Evoke radio became a dumb radio overnight when its directory was shut down. The hardware never broke. The backend did, on purpose.
Every mandatory account to stream audio inside your own home is a lock you didn’t choose. Every €60/year subscription for Bluetooth, a 25-year-old protocol, is a rent on something you already own. Every dropped Pi model is a device that becomes e-waste not because it stopped working, but because a roadmap said so.
Every streaming session has become data, to be collected, profiled, monetized. It’s not a side effect, it’s their model. For the entire lifetime of your device.
odio is a refusal. Not of progress, but of the model where someone else holds the keys to what you own and use that to steal and sell your data. A DAC plugged into a thirty-year-old amp, a Pi bought last decade, still running in 2026 because every layer is replaceable, every protocol is open, and nothing in the stack depends on a company staying alive or benevolent. That same hardware now speaks AirPlay, Spotify Connect, Tidal, and talks to Home Assistant through an API that didn’t exist in January 2026. Free software is not just a philosophy here. It is the engineering condition for durability and sustainable hardware, and the only foundation on which you can keep building without starting over.
Keeping a 10+ yo board alive in 2026 is not nostalgia. The most sustainable device is the one already manufactured.
Built in the open
odio exists because the tools it depends on — MPD, PulseAudio, Shairport Sync, Snapcast, upmpdcli — were built by people who chose openness. The same deal applies here.
Every line is readable. Every binary is reproducible. Bug reports, patches, and opinionated configuration choices are all welcome.
Latest releases