A few weeks back it was discovered in an iOS beta that AirPort Express devices were showing up as speakers in the Home app, implying Apple might be updating these devices to support AirPlay 2. This disappeared in the latest beta, but it has since sparked some interest in using AirPort Expresses for AirPlay speakers, so I thought I’d take some time to write about how I use these devices.
Apple has offered some method of audio streaming to AirPort Expresses for years now, updating the AirPlay protocol along the way. The concept is great, you have a puck that both acts as a wireless router (or extender) and can stream music over a 3.5mm audio jack. Because it uses this universal standard, you can plug any of your own speakers into it and “magically” have wireless audio anywhere in your house.
Don’t need the wireless router part? No problem! You can disable wireless altogether if you want to just play music using an ethernet cable, or you can even just let the device work in client mode, where it connects to your wireless router like any other device. Either configuration works great from my experience, I’ve played with a mixture of both.
I have multiple AirPort Expresses throughout my house used solely for wireless audio, which works out great as I have a bunch of existing amps and speakers to attach them to. One big reason people (myself included) hope to see these devices get updated to AirPlay 2 is because AirPlay 1.x has some very specific limitations. The most noticeable is how there is always a 2-second delay between play/pause for audio while it buffers. When AirPlay first came out, it was so revolutionary that it was easy to overlook this delay, but in recent years competition in this space has grown, making this delay quite annoying. Another limitation is that you can only play music from an iOS device to one AirPlay source at a time. Note I said iOS device, the exceptions here are that iTunes on macOS can play to multiple simultaneously (and even seems to handle the delay issue a bit better) as well as third party apps like Airfoil by Rogue Amoeba.
To give my house the effect of whole-home audio from any device, I’ve had to get a bit creative. While I could just always play music from iTunes on my Mac using the Remote app, it’s outdated and fairly clunky these days. Instead, I want to be able to use any app on any device to stream to every AirPlay speaker at the same time. Thankfully, Rogue Amoeba also makes an app called Airfoil Satellite for macOS which allows you to stream to your Mac as though it were an AirPlay source. Configuring Airfoil to take the system audio as the source, now I can AirPlay from any device that supports AirPlay and it will transmit that audio to the AirPlay speakers.
Using Airfoil I can solve at least one issue with AirPlay 1, playing to multiple sources, but in the default state this is even a bit clunky. Unless you leave the speakers connected to Airfoil all the time (I often want to just play directly to one speaker), you have to open the Airfoil app and select which speakers to play to. This is where software like Homebridge comes in handy. I have a write-up over on my GitHub project explaining all of the settings I used, but essentially I have scripts tied to a fake lightbulb so HomeKit lets me toggle on/off as well as volume (using the brightness slider). This gives me way more control and flexibility without having to go into an app to turn on the speakers.
At the bottom of the page I also mention another project I’ve been working on, a Flash Briefing of sorts. There is a fairly deep explanation on that page, but suffice it to say I use this same AirPlay speaker and Airfoil combination to broadcast a flash briefing throughout the entire house each morning. This includes things like weather, calendar events, birthdays, news, etc.
With the right effort, I suspect you could fully extend this functionality to really do a lot over the speakers, including using it as a quasi-doorbell (but the 2-second delay may be a problem) or other automation triggers like telling you when the mail has arrived, or announcing when dinner is ready. If I ever get around to hard-wiring all of my speakers to talk to one central amp, one could just pipe audio directly out of the Mac instead of over AirPlay, saving that just for times when you wish to stream from a device like your phone, but one thing at a time :)