ESP32 AirPlay 2 Receiver¶
Stream music from your Apple devices — or from any phone over Bluetooth — to any speaker, for about $10.
This firmware turns a cheap ESP32 board into a wireless AirPlay 2 speaker. Plug it into an amplifier or powered speakers and it shows up on your iPhone, iPad or Mac just like a HomePod or an AirPlay TV.
No cloud. No app. Just tap and play.
Already have a board? Install it right now
Plug it in over USB and click Install. No toolchain, no downloads, no command line — your browser talks to the board directly.
That button is for a generic ESP32-S3. For SqueezeAMP, Esparagus, Waveshare and the rest, see all boards on the flashing page. Requires Chrome, Edge or Opera on desktop.
-
New here?
Buy two boards, plug them together, flash from your browser.
-
Already have a board?
SqueezeAMP, Esparagus Audio Brick, XIAO ESP32-C5 and more.
-
Something not working?
No setup WiFi, no sound, missing web pages, build errors.
-
Want to hack on it?
Build environments, audio pipeline, protocol stack.
What you are building¶
How it works in 30 seconds¶
flowchart LR
P["iPhone / Mac"]
W(("WiFi"))
E["ESP32<br/><small>this firmware</small>"]
D["DAC"]
S["Your speakers"]
P -->|AirPlay| W --> E -->|I2S| D -->|analog| S
classDef hi stroke:#26a69a,stroke-width:3px
class E hi
Your phone sees an AirPlay speaker on the network. The ESP32 receives the encrypted stream, decodes it, keeps it clock-synced to the sender, and pushes the audio out over I2S to a DAC. The DAC drives your amplifier. Full detail in architecture.
Supported hardware¶
Works with ESP32, ESP32-S2, ESP32-S3 and ESP32-C5 chips. That includes plain dev boards paired with an external I2S DAC, and several integrated amplifier boards:
- SqueezeAMP — ESP32 + TAS5756 DAC and Class-D amplifier
- Esparagus Audio Brick — ESP32 or ESP32-S3 + TAS58xx DAC/amp, on-chip DSP, Ethernet
- Esparagus Audio Brick Dual — ESP32-S3 + two amplifiers, active crossover, USB audio
- ESP32-S3 + PCM5102A — the cheapest route, no soldering required
ESP32-based boards additionally support Bluetooth A2DP, so anything that can pair with a Bluetooth speaker can play to them when AirPlay is idle.
Features¶
- AirPlay 2 — appears natively in Control Center and every AirPlay-capable app
- ALAC and AAC decoding — handles both live streaming (Siri, calls) and music playback
- Multi-room — PTP-based timing for synchronised playback across devices
- Bluetooth A2DP — receive audio from phones and tablets (ESP32 boards only)
- W5500 Ethernet — wired networking with automatic WiFi failover
- Web configuration — set WiFi and device name from a browser
- OTA updates — update over WiFi; USB is only needed for the first flash
- 48 kHz output — optional 44.1 → 48 kHz conversion for DACs and S/PDIF receivers that need it
- Displays — optional OLED or 320×170 colour TFT showing track metadata and progress
- Hardware buttons — optional physical play/pause, volume and track-skip buttons
Limitations¶
- Audio only — no AirPlay video or photos
- One speaker per ESP32 board
- Needs a decent WiFi signal for stable streaming
Acknowledgements¶
- Shairport Sync — the reference AirPlay implementation
- openairplay/airplay2-receiver — Python AirPlay 2 implementation
- Espressif — ESP-IDF framework and codec libraries
Legal¶
Non-commercial use only. Commercial use requires explicit permission — see LICENSE.
This is an independent project based on protocol analysis. It is not affiliated with Apple Inc., is not guaranteed to work with future iOS or macOS versions, and is provided as-is without warranty.