Repurposing old devices to a useful role brings me joy. I have a fairly old Sony speaker system lying around that has stood the test of time. It still works and sounds well, but only accepts AUX cable output, so I use my other Tribit speaker to play audio wirelessly. I use an old phone to play music on the Sony speaker, but getting up and changing tracks has become a chore. I have been exploring self-hosted services and Raspberry Pi operating systems for quite some time, but I hadn't considered updating my Hi-Fi speaker system to modern standards.
By modern standards, I mean exploring wireless options to access and use the speaker for playback. But it doesn't have a Bluetooth chip, and soldering isn't my cup of tea, let alone tinkering with device chips. I thought of hooking a Pi to the speaker set and then playing the audio via Bluetooth. I accomplished my needs using moOde Audio OS, a dedicated audio streaming OS for Raspberry Pi, and now the speaker works via the web interface and Bluetooth. Let's discuss how this project shaped up.
Bluetooth speaker conversion requirements
You need a few elements
When I first thought of the idea, the biggest challenge was adding Bluetooth connectivity to my speaker. I decided to leverage the Bluetooth capabilities of the Raspberry Pi Zero 2W, a cheap, versatile, single-board computer. It's been part of so many projects and continues to surprise me with its price-to-performance ratio.
After I had figured out the device, I still needed something to connect the speaker to the Raspberry Pi. Since it doesn't have an aux port (which would have been super convenient), I needed an AUX adapter with a built-in DAC to connect the AUX cable.
Since the Pi has a micro USB port, I used a micro USB to USB-C adapter and plugged in an audio DAC that I use in my Samsung Galaxy S21 FE smartphone. I also have an old USB to 3.5 mm splitter, but its audio quality is bad, so I avoided it for this build.
These two components ensure that I don't have to pry open the speaker or do any kind of soldering to attach a USB chip. The next thing was figuring out an OS.
MoOde audio OS worked wonders
It's a fabulous media player
The Pi has ample audio-focused operating systems, and Volumio is popular. I picked moOde Audio to try something different and flashed it on an SD card using the Pi Imager tool. It's built on Raspberry Pi OS Lite and hosts a music streaming server.
Just install the latest version of Pi Imager, select the moOde Audio OS from the list of other operating systems, and select the SD card. I preconfigured the OS to enable Wi-Fi and SSH and set up country and user details to ensure a headless setup. Then I inserted the SD card into the Pi, waited for it to boot up for a few minutes, and initiated an SSH connection.
While it wasn't necessary to do so because moOde Audio's web UI automatically starts at boot and continues running, I did a quick htop and port check and then opened a browser. You can access the web UI by typing the Pi's IP address in the URL bar, and the track page loads up. I immediately hit play on a track, but there was no audio. Where did I go wrong?
Picking the correct output source
Adding Bluetooth connectivity and a lot more
The OS selects HDMI as the default audio output source. So, attaching the speaker has no effect unless you change the source to the USB DAC you plugged in. To do that, head to Configure -> Audio -> Output device option. Hit the Scan button and then pick the USB DAC from the list.
Now, exit the settings and try playing a built-in track. The audio was very low, so I used the on-screen controls to raise the volume to acceptable levels. I was ecstatic that the audio playback was working on the speaker perfectly.
Next, I formatted a USB drive with the FAT32 file system and copied a bunch of tracks to it. The software can automatically identify available USB devices and play audio without manual tuning. I rebooted the Pi once, and the USB drive showed up. Open the library interface and pick the USB drive from the list. After that, you can play tracks available on the Pi.
While the web UI is appealing, it's not my original goal. It's an additional benefit of using moOde Audio OS, but the core task was to enable Bluetooth connectivity. Firstly, I tried manually installing Bluetooth packages and updated everything using the following command:
sudo apt install bluetooth bluez blueman
sudo systemctl enable bluetooth
sudo systemctl start bluetooth
After that, I switched to the Configure section once again. I opened the Renderer option, which enables Bluetooth connectivity, and enabled the Controller toggle. Next, I clicked the Restart button to restart the controller and opened the Bluetooth control.
My phone immediately recognized the Pi and then paired with it. A quick YouTube video playback confirmed the audio connection, and now I could play audio wirelessly without any problem. I gave it a good test run for a couple of hours for music and podcast playback, and didn't encounter any drops.
Wireless is a blessing
That's one of the easiest Raspberry Pi projects I have completed in a few hours, and my Hi-Fi speaker can now play anything, without connecting my phone or PC with a direct AUX cable connection. The OS solved my wireless connectivity problem, but I continue to use its web interface as well for local playback.
Both work exceptionally well, and the audio quality doesn't deteriorate to a noticeable level in my experience. If you've got a spare, AUX connectivity speaker lying around that doesn't support Bluetooth or Wi-Fi, try fixing it with a cheap Pi Zero 2W and moOde Audio OS.
