Rockbox includes a pure-Rust RAOP (AirPlay 1) implementation. ALAC frames go out over RTP/UDP; RTSP handles session setup. RTCP NTP sync packets are sent roughly every 44 frames so receivers stay in lockstep.Documentation Index
Fetch the complete documentation index at: https://rockboxzig.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Single receiver
Multi-room
Fan-out to N receivers simultaneously:initial_rtptime, so RTP-level synchronisation
is within one frame (~8 ms) across the LAN.
Compatible receivers
- Apple TV (any generation supporting AirPlay 1)
- HomePod / HomePod mini
- AirPort Express
- shairport-sync — software AirPlay receiver for Linux, macOS, FreeBSD, OpenWrt
- Most third-party AirPlay-1 speakers
Auto-discovery
Discovered receivers appear in the web UI device picker — click to connect without editing the config. The mDNS service type is_raop._tcp.local..
Debugging
Limitations
- No password / pairing. AirPlay 1 receivers that require a PIN are not supported.
- No volume sync. Volume changes apply only at the rockboxd side; the receiver’s hardware volume is not adjusted.
- No AirPlay 2. The pairing/encryption stack required for AirPlay 2 is not implemented.
Architecture
The RAOP stack lives incrates/airplay/:
| File | Responsibility |
|---|---|
alac.rs | ALAC escape/verbatim encoder — 352 stereo S16LE → 1411 bytes |
rtp.rs | RTP/UDP packet sender + RTCP NTP sync |
rtsp.rs | Synchronous RTSP client: ANNOUNCE → SETUP → RECORD |
firmware/target/hosted/pcm-airplay.c.