docs odios
odio logo

odio·love

That Pi in your drawer?
It's already a €400 streamer.

curl -fsSL https://beta.odio.love/install | bash

Flash an SD card. Your Pi wakes up as a full streamer, ready for Home Assistant.

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 existing subscriptions, on your Pi. No extra cost.

Spotify Connect

Your Pi appears as a Spotify Connect device. Control from any Spotify client.

Qobuz

Full catalog via upmpdcli. Hi-res included.

Tidal

Full catalog via via upmpdcli. MQA and lossless.

What is odio?

An open-source audio streamer for Raspberry Pi. Not a locked appliance: a platform to build on top of.

Every protocol, every source, every room. Free, self-hosted, no account, no cloud.

Your Pi becomes an AirPlay receiver, a Spotify Connect device, a Bluetooth speaker you can turn on from a Home Assistant automation. Try finding a commercial speaker that lets you do that.

Built for makers first. Every node exposes a REST API. Every service, every player, every audio client is an entity you can observe, control, and automate. Wire Piper and Whisper to MPD and your Pi becomes a voice-controlled player. Set up parental controls your kid will have to learn to bypass. Shut down the workstation you forgot running from your phone, halfway to the store. The surface is there. What you build on it is yours.

Custom clients, custom automations, integrations no one has thought of yet. The API is the product. Your setup, your rules.

Embedded web UI — full dashboard
< 50ms
p95 response time
0 %
CPU at idle
< 20 MB
RAM
10
years on the same Pi B+

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: use your favorite app 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
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 apt upgrade OTA / reflash between major versions Vendor-controlled OTA
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.

https://beta.odio.love/odio.rpi-imager-manifest
  • 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.

curl -fsSL https://beta.odio.love/install | bash
  • ~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 still in beta - stable for daily use, but expect rough edges on existing installs. Try it on your hardware, report bugs and help grow the list.

Verified on - add yours ↗

armv6l Raspberry Pi B+ - Raspberry Pi OS Lite (Trixie)
armv7 Raspberry Pi 3B+ - Raspberry Pi OS Lite (Trixie 13.4)
arm64 Raspberry Pi 3B+ - Raspberry Pi OS Lite (Trixie)
x86-64 Desktop - Debian 13 Gnome, NAS - OpenMediaVault 8
other Fedora 43 x86-64 (API only/manual)

odio·love

In 2016, I bought a €35 Raspberry Pi B+, a HiFiBerry DAC, and put them in a wooden box. I wanted a complete streamer, open to any source, any client. A dumb amp, and between it and the rest of the world, a free machine where no one else held the lease. No vendor who could decide, one day, that it had become obsolete.

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.

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 two months ago. 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.