Multi-room audio systems can cost a pretty penny, with Sono’s two-speaker system starting at $379. But who needs to buy an expensive set of wireless speakers when you can use some Raspberry Pis and any 3.5mm wired speakers you have handy to achieve the same effect?
In this tutorial, we will use our Raspberry Pi 4s and speakers / receivers (with 3.5mm audio inputs) to play music from our favorite streaming service perfectly in sync via Bluetooth from our phone, tablet, or computer. We’ll show you how to do this with a single speaker and Raspberry Pi and then explain how to replicate it in additional rooms.
Instead of Raspberry Pi OS, we will use BalenaSoundOS to make the bluetooth connection visible (to our other devices) and eliminate the need for a monitor, keyboard, and mouse for our Raspberry Pi.
What You’ll Need
- Raspberry Pi 4, or Raspberry Pi 400:one unit per room..
- 8 GB (or larger) microSD card, U3 cards recommended (see best Raspberry Pi microSD cards). One per room.
- 3.5 mm audio cables (opens in new tab)
- Speakers with 3.5mm audio input and/or receivers with 3.5mm audio input.
- Power Supplies for your Raspberry Pis
- Windows, Mac or Chromebook
- Optional: Smartphone or tablet
- During the writing of this article, we found the Raspberry Pi 4 with a 3.5 mm audio input to be the best hardware setup. The Pi 400 requires a USB speaker since it does not have an audio jack output.
- We tested with multiple Raspberry Pi 3B+ devices, but were unable to find the bluetooth signal during testing for this project.
- You do NOT need a monitor, mouse, or keyboard for your Raspberry Pi in this project.
- Timing: Please plan for an hour to complete this project.
- This is an excellent project for repurposing old receivers. If you have a non-bluetooth receiver with a 3.5mm jack input, you can connect your speakers to your receiver and your receiver to your Raspberry Pi.
Set Up Balena Sound
Instead of the standard Raspberry Pi OS, we will flash BalenaSoundOS to our microSD card. BalenaSound is pre-built with a lite client for music streaming via the Pi’s Bluetooth and eliminates the need for attaching a monitor, mouse, and keyboard to our Raspberry Pi.
1. Create a free BalenaCloud account here. If you already have a BalenaCloud account, login to BalenaCloud.
2. Deploy a balena-sound application. Note: You must already be logged into your Balena account for this to automatically direct you to creating a balena-sound application.
3. Click “Deploy to Application.”
4. Select "Devices" from the left column menu in your Balena-Sound Dashboard, and click "Add device."
5. Select your Device type, (Raspberry Pi 4, Raspberry Pi 400, or Raspberry Pi 3).
6. Select the radio button for Development.
7. If using Wifi, select the radio button for "Wifi + Ethernet" and enter your Wifi credentials.
8. Click "Download balenaOS" and a zip file will start downloading.
9. Download, install, and open the Balena Etcher app to your desktop (if you don’t already have it installed). Raspberry Pi Imager also works, but Balena Etcher is preferred since we are flashing the BalenaOS.
10. Insert your microSD card into your computer.
11. Select your recently-downloaded BalenaOS image and flash it to your microSD card. Please note that all data will be erased from your microSD card.
Connect the Hardware and Update BalenaOS
12. Remove the microSD card from your computer and insert into your Raspberry Pi.
13. Connect the speaker to your Pi via 3.5 mm audio cable.
14. Power up your Pi. Allow 15 minutes for your Pi to boot up and BalenaOS to update. Only the initial boot requires the long update. You can check the status of your Pi Balena Sound OS in your BalenaCloud dashboard.
If you are using a Raspberry Pi 400, connect a USB speaker instead of the 3.5mm audio jack. (I did not have a USB speaker handy; instead I tested with USB headphones.)
15. Wait for your Raspberry Pi BalenaOS update and confirm all systems are running.
16. From your smartphone, tablet, or computer, navigate to your Bluetooth settings and look for BalenaOS XXXX and pair it to your device.
17. Connect the device as the sound output for your smartphone, tablet or computer.
18. Go to your streaming service and play a song. The music should stream via Bluetooth to your Raspberry Pi and play from the attached speaker.
We tested on Amazon Music and Spotify and all worked flawlessly.
Multi-Device / Multi-Room Sync
19. For multi-device sync, repeat steps 4-15 to set up more Raspberry Pi devices with speakers (or your receiver). You can flash the same image from step 9 if you are using the same model Raspberry Pi. For example, if you set up a Pi 4, and you have a 2nd Pi 4, flash the same image. If you have a Pi 400, then repeat steps 4-8 to create a new device image.
20. With the same bluetooth device connected as in step 17, music can now stream to all Raspberry Pis and their connected speakers. You will only need to connect one Raspberry Pi via bluetooth to your phone, tablet, or computer to stream to all Raspberry Pi Balena Sound speakers.
That’s it! You can now create multi-room / multi-device sound experiences in your home with your Raspberry Pi devices while DJing from your smartphone, tablet, or computer.