AirPlay + Sonos
How I got my Sonos system to support Apple’s AirPlay streaming, without buying a pricey Sonos One speaker.
This past Christmas, I bought a Sonos Play:1 speaker, since it was on sale for a super cheap price through Amazon Australia, and I’ve been keen to get a solid wireless speaker system.
It’s been great so far. I love the seamless Spotify integration, and the sound quality is better than other speakers I’ve owned (I’m not an audiophile). Unfortunately, integration with the Sonos ecosystem relies on official support from application developers. My podcast app of choice (Overcast) doesn’t and will likely never get support, and only Apple Music is supported from the iTunes ecosystem, where I still rely on an iTunes Match subscription.
Additionally, Sonos have confirmed they have no plans to support the Play:1 as a singular device when AirPlay 2 support is released - you need the big expensive main speakers for AirPlay. Boo 👺
I’ve been able to survive for the past few months using this developer workaround for Overcast support, but it’s not really sustainable as you can only have one such service on your Sonos account at any one point in time, and the integration has always been flaky at best.
AirConnect to the rescue!
I’d been reading about a few apps that act as a bridge between the UPnP functionality of the Sonos speaker and AirPlay-compliant devices (I really like Airplay). The first one I read about, AirSonos, seems to be no longer maintained. But after a bit of digging, I found a more recently-updated tool called AirConnect. Both of these rely on another device on the network to bridge your Sonos, and I don’t own a desktop computer at present, so I left it as a to-do-on-a-rainy-weekend-when-you-have-nothing-planned task.
I had a bit of time to spare this weekend, and finally bit the bullet and bought a Raspberry Pi to host AirConnect on. It’s crazy easy to get a Raspberry Pi set up these days, and AirConnect itself requires little configuration.
You run the app, it automatically scans the network for Sonos devices, and then starts broadcasting them as AirPlay devices. Running it in the background every time you start up your Raspberry Pi requires a little bit more Unix-fu, but the author of the project has provided an example service spec in the repository.
If you’re not familiar with systemd, this article is a great primer.
Once you’ve got it all set up, enable SSH and hide the thing somewhere! I love the future.
Next steps
There’s a few things I want to do next.
Getting a better case for the Pi
As the image above illustrated, my casing for the Raspberry Pi so far is pretty unimaginative and crude. I’ll eventually want to get it out of the tissuebox and into a proper little portable case. Having said that, I’m probably going to just end up using a smaller cardboard box.
Sonos + vinyl = ❤️
I want to somehow get my turntable connected to the Raspberry Pi so I can stream my (admittedly small) vinyl collection to a good speaker - this is the guide I’ll probably follow, but it doesn’t feel as seamless as the AirConnect integration.
Find other usages for the Pi
I want to find other usages for the Raspberry Pi - as a start, one of my friends wrote Pushtart, a little PaaS that I’m considering running for anything that I wouldn’t push to one of my Dokku cloud instances.
If you have other examples - hit me up on Twitter!