Skip to main content
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.

Single receiver

Multi-room

Fan-out to N receivers simultaneously:
All receivers share the same 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
AirPlay 2 is not implemented.

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

Common log lines:

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 in crates/airplay/: The C-side sink is firmware/target/hosted/pcm-airplay.c.