I thought some might find interest in this recent project of mine.
I have two of Apple's long-discontinued Airport Express (v1) devices that I've used over the years to stream music from my Mac or iOS devices to two different bookshelf systems in the house via WiFi and the AE's analog audio out jack. (Long-discontinued, but longer unsupported; Apple removed Airport Utility's ability to see these devices on a network many years ago, inexplicably, making configuration quite a drill involving modified, older versions of Airport Utility.) The last of these devices has finally died sometime this year (capacitor failure is a common cause here, it seems). I like to listen to Christmas music around the holidays on our Tivoli Model 2 on the bookshelf in our living room by the fire, etc. So, I started looking for an alternative device to allow me to feed analog audio (via a simple 1/8-inch headphone in jack) to my "old" but nice bookshelf systems that lack WiFi or Bluetooth input.
Asking around on Twitter, I discovered a solution involving a Raspberry Pi Zero W (smallest, cheapest Pi featuring integrated WiFi (and Bluetooth)) and a little USB "sound card".
I went with the Vilros Raspberry Pi Zero W Basic Starter Kit and the Sabrent USB External Stereo Sound Adapter for Windows and Mac (Amazon links, $35 total at time of this post). The Pi starter kit come with a case, heat-sink, adapter cables for USB and HDMI, etc. Very nice.
The software glue that binds all this together is the open source Shairport Sync from Mike Brady. It is a set of programs you can run on various flavors of Linux (including the standard Raspbian Linux distribution targeting the Pi), macOS, or as a Docker image, which emulates AirPlay v1. It allows simple playback achieving precisely what I was after, as well as grander usage scenarios including passing and displaying meta-data, audio effect processors, triggering of apps at certain events (volume up / down, pause, etc.).
Getting the hardware together and wired to a display for configuration was a simple matter. Installing Shairport Sync was, as well, in the end. When I installed the setup as a package using "apt install..." from Debian's package archive, I had issues getting the software to run automatically on boot (via systemd). I posted a question to the developer and was advised to compiled the source code locally and install it that way. This was completely straightforward and was an exercise in simply following instructions, so even if you're not a developer you can do this without issue. Once that drill was complete, the system worked perfectly -- it has solved my problem, and cheaply.
As an interesting anecdote about the flexibility of the setup, I am presently sitting by the fire, listing to my Christmas mix on the bookshelf system behind me as I type this post. In the configuration file that I edited as part of the setup process, I told the system to play its audio to the bookshelf input at maximum volume always, disregarding the source device's volume setting (for whatever reason). After having to stand up and walk over to adjust the volume of a song that was a bit too loud, I thought for a moment...and then SSHed from this laptop into the RPi Zero hiding behind some books on the shelf just four feet behind me and edited the config file to obey the source device's volume level. I told the Pi to reboot itself, and in a few seconds I was back listening to my music on the speakers, but with full volume control. That was pretty slick, I must say!
I intend to put two more of these devices together (just copying the already-configured microSD card volume to two new cards), one for our bedroom and one for our daughter's. I've been using this setup for a few days now and have run into zero issues.
I hope this little account helps others who may find themselves in the same situation. And, thanks to Anthony / @adx for pointing me in the right direction.
bp
I have two of Apple's long-discontinued Airport Express (v1) devices that I've used over the years to stream music from my Mac or iOS devices to two different bookshelf systems in the house via WiFi and the AE's analog audio out jack. (Long-discontinued, but longer unsupported; Apple removed Airport Utility's ability to see these devices on a network many years ago, inexplicably, making configuration quite a drill involving modified, older versions of Airport Utility.) The last of these devices has finally died sometime this year (capacitor failure is a common cause here, it seems). I like to listen to Christmas music around the holidays on our Tivoli Model 2 on the bookshelf in our living room by the fire, etc. So, I started looking for an alternative device to allow me to feed analog audio (via a simple 1/8-inch headphone in jack) to my "old" but nice bookshelf systems that lack WiFi or Bluetooth input.
Asking around on Twitter, I discovered a solution involving a Raspberry Pi Zero W (smallest, cheapest Pi featuring integrated WiFi (and Bluetooth)) and a little USB "sound card".
I went with the Vilros Raspberry Pi Zero W Basic Starter Kit and the Sabrent USB External Stereo Sound Adapter for Windows and Mac (Amazon links, $35 total at time of this post). The Pi starter kit come with a case, heat-sink, adapter cables for USB and HDMI, etc. Very nice.
The software glue that binds all this together is the open source Shairport Sync from Mike Brady. It is a set of programs you can run on various flavors of Linux (including the standard Raspbian Linux distribution targeting the Pi), macOS, or as a Docker image, which emulates AirPlay v1. It allows simple playback achieving precisely what I was after, as well as grander usage scenarios including passing and displaying meta-data, audio effect processors, triggering of apps at certain events (volume up / down, pause, etc.).
Getting the hardware together and wired to a display for configuration was a simple matter. Installing Shairport Sync was, as well, in the end. When I installed the setup as a package using "apt install..." from Debian's package archive, I had issues getting the software to run automatically on boot (via systemd). I posted a question to the developer and was advised to compiled the source code locally and install it that way. This was completely straightforward and was an exercise in simply following instructions, so even if you're not a developer you can do this without issue. Once that drill was complete, the system worked perfectly -- it has solved my problem, and cheaply.
As an interesting anecdote about the flexibility of the setup, I am presently sitting by the fire, listing to my Christmas mix on the bookshelf system behind me as I type this post. In the configuration file that I edited as part of the setup process, I told the system to play its audio to the bookshelf input at maximum volume always, disregarding the source device's volume setting (for whatever reason). After having to stand up and walk over to adjust the volume of a song that was a bit too loud, I thought for a moment...and then SSHed from this laptop into the RPi Zero hiding behind some books on the shelf just four feet behind me and edited the config file to obey the source device's volume level. I told the Pi to reboot itself, and in a few seconds I was back listening to my music on the speakers, but with full volume control. That was pretty slick, I must say!
I intend to put two more of these devices together (just copying the already-configured microSD card volume to two new cards), one for our bedroom and one for our daughter's. I've been using this setup for a few days now and have run into zero issues.
I hope this little account helps others who may find themselves in the same situation. And, thanks to Anthony / @adx for pointing me in the right direction.
bp