Introduction: Raspberry Pi Multi-Room Audio (Mobile/Tablet/PC Controlled)
I have been lurking on Instructables for a few years but have never posted one myself. Now I have bought a home of my own it's time to undergo some projects and share them with the community.
In my first project I'm going to show you how I setup multi-room audio that can be controlled by any device with a web browser or an app on your Android and/or iOS device.
I apologise for the lack of/poor quality photos.
I have borrowed some of this information and thrown in some things from my own experience. Some credit goes to the author of this tutorial http://www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=25778
To tackle this instructable you should have an understanding of networking, intermediate to expert computer skills and maybe some linux experience too. If you run into something you don't understand just remember google is your friend.
Equipment you will need
• Computer (mac/win/linux to act as your Logitech Media Server)
• Home network (wireless if you can't run a cable to the Pi)
• Raspberry Pi (I've used 1 per room however I will add a multi-DAC tutorial once I complete it myself)
• SD card 2GB or larger
• AC Adaptor (I used a USB wall charger for mobile phones check here http://elinux.org/RPi_VerifiedPeripherals#Power_adapters)
• Micro USB cable
• USB wireless adaptor (MAKE SURE IT IS COMPATIBLE OUT OF THE BOX! http://elinux.org/RPi_USB_Wi-Fi_Adapters)
• Powered USB Hub (for extra usb devices or multi DAC at a later date)
• HDMI cable or HDMI to DVI cable (depending on your monitor)
• DAC (digital to analogue converter, 1 per room)
• Amplifier (unless your DAC is also amplified)
• Speakers
Step 1: Logitech Media Server
First of all we need to setup your Logitech account and install the Logitech Media Server on the computer contains your music collection. This computer should always be on when you want to play music. The LMS and instructions can be found at http://www.mysqueezebox.com/download
Once installed setup your library
Also login to your squeezebox account otherwise you cannot see your music on the player.
You can also download the Squeezebox app for your iOS or Android device also remember to login to your Logitech account inside the app.
https://play.google.com/store/apps/details?id=com.logitech.squeezeboxremote&hl=en
https://itunes.apple.com/au/app/logitech-squeezebox-controller/id431302899?mt=8
Step 2: Raspberry Pi Setup
Now we'll setup the Raspberry Pi, to do this you'll need to have Raspbian installed. You can buy a Pi with Raspbian pre-installed or you can use a 2GB or larger SD card that you already have.
I am using an SD card I already have. Plug the SD card into your computer and download the latest Raspbian http://downloads.raspberrypi.org/raspbian_latest
I'm using windows so I unzipped the file and used win32diskimager (http://sourceforge.net/projects/win32diskimager) to write the Raspbian image to the SD card.
If you are still not sure there is a tutorial here http://elinux.org/RPi_Easy_SD_Card_Setup
Ok now we have Raspbian installed it's time to get our Pi up and running, plug in your SD card, Wi-Fi dongle, USB keyboard, Ethernet cable to your router, HDMI to your monitor and lastly the micro USB cable to the power socket. The first time you boot up you'll end up with the configuration tool on the screen.
Things you need to change are:
• Expand the filesystem so Raspbian utilises the entire SD card
• Change your password
• Set your language, region and time zone
Now the advanced options:
• Change your hostname so you can recognise your Pi on the network.
• Enable SSH so you can access your PI from a computer on your network.
• Select finish which might restart your Pi.
If you are in the US or Australia like me you will want to change the keyboard layout to US.
To do this you’ll need to change a file entering the command:
sudo nano /etc/default/keyboard
Use the arrow keys to move the cursor and change the gb to us.
Now save the file by pressing ctrl + X and Y to save changes
Now to update your Pi, type the following commands:
sudo apt-get update
sudo apt-get upgrade
Press y to download larger updates.
Step 3: Wi-Fi
If you just want to use Ethernet you can skip this step.
To get your Wi-Fi dongle working you may need to edit the wpa_supplicant.conf file by typing
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Then make it look like this:
ctrl_interface=/var/run/wpa_supplicant
network={
proto=RSN
scan_ssid=1
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
ssid="your network ID in quote marks"
psk="your network password in quote marks"
}
To save the file press ctrl + x and Y to save
Restart the Pi by entering:
Sudo reboot
You should be able to see if your Wi-Fi dongle has an IP address with the command
Sudo ifconfig
You should get something like this
wlan0 Link encap:Ethernet HWaddr 64:66:b3:06:43:1b
inet addr:10.0.0.75 Bcast:10.0.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:912384 errors:0 dropped:121692 overruns:0 frame:0
TX packets:706463 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:694114055 (661.9 MiB) TX bytes:71017681 (67.7 MiB)
Step 4: Static IP and SSH
Next I usually give my Pi a static IP by adjusting the LAN settings on my router.
Giving your Pi a static IP address makes it easier to remember the address when we connect via SSH.
I am not going into this because every router is different.
I suggest using google to search for “your routers model number” static IP.
Now the network is up and running either wired or wireless I like to use a SSH client like PuTTY to control the Pi.
That way I can copy and paste code if I’m feeling too lazy to type it out.
To copy use ctrl + c as usual but to paste into PuTTY click the right mouse button.
This will also free up a USB port for your DAC if you are using a USB Wi-Fi adaptor.
Download and run PuTTY then type in the IP address of your Pi and press open.
Login as pi and the password is whatever you changed it to in the initial setup.
Step 5: Audio Setup
Now we can check if the DAC is recognised and set the volume. Enter the command
sudo alsamixer
Now press F6 to select your DAC and use the up arrow to set the volume to maximum.
Now press Esc to exit and use the following command to save your changes
sudo alsactl store
We’ll need to install some extra sound libraries to play different music formats
sudo apt-get install libfaad2
sudo apt-get install libflac-dev
Step 6: Installing Squeezelite
The next step is to install Squeezelite on the Pi so we’ll create a squeezelite "work" directory
mkdir squeezelite
cd squeezelite
Now get squeezelite:
wget http://squeezelite.googlecode.com/files/squeezelite-armv6hf
Move it to the usr directory, and make it executable:
sudo mv squeezelite-armv6hf /usr/bin
cd /usr/bin
sudo chmod u+x squeezelite-armv6hf
Because I am using a USB DAC, I had to tell squeezelite which sound device to use.
First list all the devices:
squeezelite-armv6hf -l
The result:
Output devices:
null - Discard all samples (playback) or generate zero samples (capture)
default:CARD=ALSA - bcm2835 ALSA, bcm2835 ALSA - Default Audio Device
sysdefault:CARD=ALSA - bcm2835 ALSA, bcm2835 ALSA - Default Audio Device
default:CARD=DAC - USB Audio DAC, USB Audio - Default Audio Device
sysdefault:CARD=DAC - USB Audio DAC, USB Audio - Default Audio Device
front:CARD=DAC,DEV=0 - USB Audio DAC, USB Audio - Front speakers
surround40:CARD=DAC,DEV=0 - USB Audio DAC, USB Audio - 4.0 Surround output to Front and Rear speakers
surround41:CARD=DAC,DEV=0 - USB Audio DAC, USB Audio - 4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=DAC,DEV=0 - USB Audio DAC, USB Audio - 5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=DAC,DEV=0 - USB Audio DAC, USB Audio - 5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=DAC,DEV=0 - USB Audio DAC, USB Audio - 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=DAC,DEV=0 - USB Audio DAC, USB Audio - IEC958 (S/PDIF) Digital Audio Output
I wanted to use only the front speakers, so I have to tell squeezelite to use "front:CARD=DAC,DEV=0".
Now to start Squeezelite enter
./squeezelite-armv6hf -o front:CARD=DAC,DEV=0
At this point you should be able to see the player on your Logitech Media Server or Squeezebox App, woo hoo you did it!!!
Step 7: Run on Startup
Next we need to make sure Squeezelite runs on startup
I have borrowed the daemon start script to start Squeezelite from another tutorial, so use at your own risk!
Follow these commands to automate startup:
cd /home/pi/squeezelite
sudo wget http://www.gerrelt.nl/RaspberryPi/squeezelitehf.sh
sudo mv squeezelitehf.sh /etc/init.d/squeezelite
cd /etc/init.d
sudo chmod u+x squeezelite
sudo update-rc.d squeezelite defaults
You will need to change a few lines to make sure it works properly and you know what room it’s in.
sudo nano squeezelite
Search for "SL_NAME", you will find this line:
SL_NAME="Framboos"
Change the word "Framboos" to whatever you like, I’ve used Lounge on one and Outdoor on the other.
You need set the soundcard here too.
Search for this line
SL_SOUNDCARD="sysdefault:CARD=Set"
Change "sysdefault:CARD=Set" to the one you selected earlier (in my case I changed it to " front:CARD=DAC,DEV=0").
If you are using multiple players you will need to make sure the MAC address is different on each player. To do this uncomment (remove hash/pound sign) the line
#SL_MAC_ADDRESS="00:00:00:00:00:01"
I have used
SL_MAC_ADDRESS="01:01:01:01:01:01” for my lounge player
SL_MAC_ADDRESS="02:02:02:02:02:02” for my outdoor player
Save and close the script file by pressing ctrl + x and then Y to save.
This is how you test the script:
sudo ./squeezelite start
The command prompt should return immediately. Now check if the squeezelite process is up:
ps -A |grep squeeze
It should return something like this (the number will be different):
2324 ? 00:00:01 squeezelite-arm
To stop squeezelite:
sudo ./squeezelite stop
And that's it, if you reboot the pi
sudo reboot
squeezelite should be started automatically.
Repeat steps 1 through 7 for any additional players.

Participated in the
Raspberry Pi Contest
1 Person Made This Project!
- AliV15 made it!
51 Comments
1 year ago
I made a whole-house music system from these very components in 2021, and it was MUCH easier and less complicated than outlined here. The key is to use piCorePlayer and its slick web configuration and skip RASPBIAN. 1) Get latest PiCorePlayer system image (which includes SqueezeLite), burn it to your SD card using software like Etcher. 2) With the power off, connect an ethernet cable to the raspberry pi and the other end into your home network. Slip your SD card from step one into it's slot on the raspberry pi. Apply the power to the raspberry pi and wait 30 seconds for it to boot up. 3) Get the IP address of the raspberry pi from your home router (it will show as piCorePlayer). From any browser on your network, enter the IP Address in the address bar and the configuration page for your piCorePlayer will appear. You can now configure the player from the browser. 4) Get wifi running, if desired, as described on the piCorePlayer website. 5) Set your audio output in the web browser. Connect your DAC to your amplifier. If LMS was previously installed on another computer, piCorePlayer will have already found it and and you are good to go. If you are trying to run LMS and SqueezeLite on the same raspberry pi, you should follow the steps on the piCorePlayer website for installing LMS.
Question 2 years ago
I already have Sonos set up throughout my house. Instead of buying a NAS for my music library (on my Mac), can I use Raspberry Pi as my wifi music library? Currently I am using my Mac iTunes/music library on my Sonos. I would like to stream my library from Raspberry Pi. I have a very large music library. Probably between 20,000-25,000 songs. Thank you.
2 years ago
Nice project. Is there any schematic to connect various components?
Thanks.
Question 4 years ago on Step 5
Do you have to get a wireless adapter if your rpi has on board wifi?
Answer 4 years ago
No, since the newer raspberry pi models have a wifi adapter already built into them, you do not need to purchase an adapter or the pi itself
5 years ago
Thumbs up to the author for an easy to follow, excellent instructable. Very nice!
I have a question about source selection. Instead of pointing to a constant on computer, is it possible to point to a constant on NAS (Network Attached Storage) device?
Thanks...
5 years ago
Great tutorial. It has been clear to follow.
I have a problem with part of step 7. After saving the script I try to test the script with:
sudo ./squeezelite start
it returns:
Error: script /usr/local/bin/squeezelite_settings.sh not found.
As I think I have just added this from the commands above this in the tutorial, I can't see why this will not run.
Any ideas as to why this is caused and how to rectify this? Thanks!
5 years ago
For anyone unable to find the download link for the squeezelite binary it has moved too https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/squeezelite/squeezelite-armv6hf
6 years ago
i cant wait to do this set up in my own home! but i was wondering if you knew of a way to be ble to connect a amazon alexa to the system? or a microphone to have it function an an intercom system as well?
6 years ago
Man, i just finished. I'm so proud. Thank you
6 years ago
Hey, nice instructable, Piney!
We actually liked the Squeezebox system a whole lot, too. That's why we built a one-click installer for the Squeezebox Server to run simultaneously on the Pi, making another computer running the server obsolete! We also have one instance of squeezelite preinstalled and a program called MultiSqueeze to create as many additional players as you want.
We would love it if you took a look at our images, they might be right up your alley. The image is free and the server installer and squeezelite as well.
8 years ago on Introduction
Can someone recommend a DAC and amplifier that would work well with this? I'm completely ignorant in this space. I saw some USB DACs on Amazon that are expensive enough that this project would cost as much as just buying a Sonos.
Reply 6 years ago
Hi DadBoiler,
We'd recommend the I2S sound cards for RPi by IQaudIO or HiFiBerry. They both have multiple options for DAC and Amp's under 100 bucks. Are also supported natively by most music OS like Volumio, Rune Audio or us (Max2Play).
6 years ago
I made it. Also included a windows player and all players were automatically detected by home-assistan.io software
7 years ago
nice project.,!!!!!.,but can we LIVE BROADCAST using raspberry Pi.,???.,PAGING SYSTEM??
.,APOLOGIES BEGINNER HERE.,
7 years ago
If you don't mind me asking, where is the guide to help me through the process? Apologies, completely new to the site and Pi.
7 years ago
Unfortunately, the next day I can't even start this anymore. Back to step 1 :(
7 years ago
I have made it till step 6, where I'm having trouble with selecting the output. For trying out I just want to use the default
default:CARD=ALSA - bcm2835 ALSA, bcm2835 ALSA - Default Audio Device
sysdefault:CARD=ALSA - bcm2835 ALSA, bcm2835 ALSA - Default Audio Device
but from there PI nothing happens and I neet to disconnect the SSH connection.
7 years ago on Introduction
Can this be controlled with an iPad? I'd like to mount an iPad into the wall of my home to control the unit. is this possible?
Reply 7 years ago on Introduction
yes you can, but if I am not mistaken Im most positive that you need a special software, A friend of mine has one in her kitchen that controls ALOT. I don't know the price but i would like to know to, i have been thinking about that to as well