Skip to content

About

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.

Topics

Resources

Contributing

Stars

594 stars

Watchers

4 watching

Forks

Repository files navigation

AirPlay ESP32

ESP32 AirPlay 2 Receiver

Stream music from your Apple devices — or from any phone over Bluetooth — to any speaker for about $10

GitHub stars GitHub forks License ESP-IDF Platform


What is this?

This turns a cheap ESP32 board into a wireless AirPlay 2 speaker. Plug it into any amplifier or powered speakers and it shows up on your iPhone, iPad or Mac just like a HomePod or an AirPlay TV.

Works with ESP32, ESP32-S2, ESP32-S3 and ESP32-C5 chips, including the SqueezeAMP (ESP32 + TAS5756) and Esparagus Audio Brick (ESP32 + TAS5825M) boards, which have amplifiers built in.

ESP32-based boards also support Bluetooth A2DP, so anything that can pair with a Bluetooth speaker can play to them when AirPlay is idle. The Esparagus Audio Brick additionally supports wired Ethernet through an optional W5500 module.

No cloud. No app. Just tap and play.

Quick start

The fastest route is the browser installer — no toolchain, no command line:

→ Install from your browser

Building from parts instead? You need an ESP32-S3 dev board, a PCM5102A DAC and a female pin header, roughly $10 total, and no soldering. See the getting started guide.

Building from source:

git clone --recursive https://github.com/rbouteiller/airplay-esp32
cd airplay-esp32
pio run -e esp32s3 -t upload
pio run -e esp32s3 -t uploadfs   # required — writes the web UI to SPIFFS

Features

  • AirPlay 2 — appears natively in Control Center and every AirPlay-capable app
  • ALAC and AAC decoding — live streaming (Siri, calls) and music playback
  • Multi-room — PTP-based timing for synchronised playback
  • Bluetooth A2DP — receive audio from phones and tablets (ESP32 boards only)
  • W5500 Ethernet — wired networking with automatic WiFi failover
  • Web configuration and OTA updates — USB is only needed for the first flash
  • 48 kHz output — optional 44.1 → 48 kHz conversion via a sinc resampler
  • Displays — optional OLED or 320×170 colour TFT with track metadata
  • Hardware buttons — optional play/pause, volume and track skip

Audio only, one speaker per board, and a decent WiFi signal is required.

Documentation

Getting started Shopping list, assembly, flashing, first boot
Supported boards SqueezeAMP, Esparagus Audio Brick, XIAO ESP32-C5, custom boards
Features Bluetooth, Ethernet, displays, buttons, AirPlay tuning
Reference Build environments, SPIFFS, OTA, architecture
Troubleshooting No sound, no setup WiFi, dropouts, build errors

Contributing

See CONTRIBUTING.md and the contributing guide. Documentation lives in docs/ and is built with Zensical — every page on the site has an edit link that takes you straight to the GitHub editor.

Acknowledgements

Legal

Non-commercial use only. Commercial use requires explicit permission — see LICENSE.

This is an independent project based on protocol analysis. Not affiliated with Apple Inc. Not guaranteed to work with future iOS or macOS versions. Provided as-is without warranty.

About

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.

Topics

Resources

Contributing

Stars

594 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages