Introduction: Raspberry Pi Multi-Room Audio (Mobile/Tablet/PC Controlled)

Picture of 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
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
• Micro USB cable
• 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

Picture of 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
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.

Step 2: Raspberry Pi Setup

Picture of 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

I'm using windows so I unzipped the file and used win32diskimager ( to write the Raspbian image to the SD card. 

If you are still not sure there is a tutorial here

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:

    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:  Bcast:  Mask:
          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

Picture of 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

Picture of 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:


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
sudo mv /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:
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
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
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.


dweezildove (author)2017-09-04

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/ 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!

LukeH109 (author)2017-05-23

For anyone unable to find the download link for the squeezelite binary it has moved too

mschell1 (author)2017-01-25

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?

1endell (author)2017-01-09

Man, i just finished. I'm so proud. Thank you

Max2Play (author)2016-09-15

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.

DadBoiler (author)2014-11-13

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.

Max2Play (author)DadBoiler2016-09-15

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).

AliV15 made it! (author)2016-07-14

Thanks, it is working very good for me!

hristo.jelev (author)2016-06-05

I made it. Also included a windows player and all players were automatically detected by software

Monobear (author)2016-02-27

nice project.,!!!!!.,but can we LIVE BROADCAST using raspberry Pi.,???.,PAGING SYSTEM??

TezWingfield (author)2015-12-23

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.

edwinkort (author)2015-11-16

Unfortunately, the next day I can't even start this anymore. Back to step 1 :(

edwinkort (author)2015-11-14

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.

DeJayJoeyG (author)2015-04-23

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?

mclemmer (author)DeJayJoeyG2015-08-14

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

kinggordz (author)2015-05-12

Thanks for all the above info, I am excited to give this a go. I have a couple of questions if you don't mind.

in theory I need an AMP and PI for each room. i will make up 4 units, can they be housed together in a cabinet and wired to each room. then controlled by android app that is connected to WIFI ?

other issue I foresee, is how can I switch between playing sound from server to say a secondary device like putting the sound from the TV through to the speakers, or is that extremely difficult.

many thanks !

MikelR (author)2015-02-23

Can you add a link to the DAC you used?

Piney (author)MikelR2015-02-23

TomP10 (author)2015-01-20

This is a great set of instructions - got me up and running easily.

I'm using the 3.5mm headphone output until I get a DAC, so I had a bit f trouble at first. No sound was coming from the Pi. Found the following on stackexchange:

sudo apt-get install alsa-utils 
sudo modprobe snd_bcm2835
sudo aplay /usr/share/sounds/alsa/Front_Center.wav

By default output will be automatic (hdmi if hdmi supports audio, otherwise analogue). You can force it with:

sudo amixer -c 0 cset numid=3 <n> 

where n is 0=auto, 1=headphones, 2=hdmi. (source)

So I set <n> to 1 and works great!

Looking forward to getting a DAC :-)

jrzeznik (author)2013-11-27

Very interesting tutorial.As a beginner, I'm wondering about 2 things.
Why do you have to use a DAC + amplifier (and not the audio output from the Raspberry Pi itself)?
What DAC and amplifier did you use?

dcerts (author)jrzeznik2013-11-27

I tried with the onboard audio/DAC. There was a constant crackling/popping that was easily resolved by using the "-a 100" option starting squeezelite. Just uncomment the line in the /etc/init.d/squeezelite file, it's default at 80 or 85, I changed to 100 just because that's what was working when I tested.

Change this in the squeezelite startup script:
To this:

I also read something about enabling the PlayWMA 3rd arty plugin if you want to use Sirius on squeezelite. Haven't tried it yet, but I plan to later today.

I'm using wired, but plan to switch to Wifi, the 1T1R is $8, uses a Realtek chipset so it should work just fine. 

BradS3 (author)dcerts2014-12-08

Thanks so much for this tip! I had the issue of the crackling but adjusting to 100 solved it. Any idea what that setting does?

Piney (author)dcerts2013-12-06

I tried this "-a 100" option on my lounge player but the audio quality was still very poor. Back to my DAC :)

PS. on board audio works fine on my other pi straight out of the box so maybe it's just a dud audio chip.

jrzeznik (author)dcerts2013-11-27

Cool, thanks!

Piney (author)jrzeznik2013-11-28

Hi Jrzeznik,

I use a DAC because of increased sound quality and I want to setup multiple players on a single Pi down the track.

Piney (author)Piney2013-11-28

I used this DAC for my outdoor speakers

BradS3 (author)2014-12-08

This was so easy and it's fantastic. This is going to give Sonos a run for it's money! I just ran this straight up wired and using the audio out of the Pi for now.

Christopher SSR (author)2014-11-21

I followed your instructions and have 2 zones setup with more in the future Im hoping. It the original post you had indicated you were planning on chaining DACs with multiple outs (i think) from a single pi.

I used USB soundblasters vs the DAC in your instructions to keep costs down with mixed results. I am sure I would get a cleaner sounds with the DAC but it is better then the onboard audio out,

Have you or anyone else experimented with other software etc as I like the basics of Logitech media server it is far from ideal. It is slow to respond, it's a little awkward but its great for the cost. :)

I would like to have some sort of amp that turns off when not in use and turns on when activated (by the pi)

I currently use 2 sets of computer speakers tucked away in two rooms with this that works well but I dislike the fact they are left on all the time and I am too lazy to turn them off and on :p

I had looked also for some sort of ceiling speaker setup but couldn't find anything reasonably priced that felt like it was with cutting holes in my ceilings.

But your project has help change my life honestly. I use it synced I use them independently and I use it as a white noise sleep machine. I like it a lot

Thanks for everything

JasonC12 (author)2014-11-03

Great easy to follow inst! I have never used logitech media server, once this is connected to your pi's will it stream the same content to all zones in sync? or just one zone at a time?

Piney (author)JasonC122014-11-10

It can do both, that's why I chose it.

S-Cript (author)2014-02-04

HI all,

since we also have the possibility to run squeezeboxserver on raspberry.
basicly 3 pi's ( 2 for the room-audio,1 for the server) kicks some real ....

Dj-q (author)2013-12-17

Thank you so much for this instructable, I have just followed all the steps to create a 4 zone audio system for our offices in work, teamed with a spotify premium account it works like a dream.

Piney (author)Dj-q2013-12-17

Great news :D, glad I could help you.

mrubenb (author)2013-12-13

Nice Project! I would love to see a demo video of it.

Piney (author)mrubenb2013-12-13 Here's a link to someone elses video demo

mrubenb (author)Piney2013-12-16

Thanks! This is very nifty. I may try this myself.

cedyathome (author)2013-12-11

Does it matter if I use a Raspberry A or B ? This will be my first raspberry project. Thank you!

Piney (author)cedyathome2013-12-11

You need network connectivity so as long as you use a USB wireless adaptor you should be able to use the model A

cedyathome (author)Piney2013-12-14

I bought the model B. I'm using wired ethernet and the audio on the raspberry right now and it works!! thank you.

djsainty (author)2013-11-29

Was wondering why you didn't use rasbmc on the Pi, built in media server and the air play functionally is easy to remotely control in the rooms you have them in, using browser or remote app on ios/android device. I have 2, running 24/7, the ability to output audio via hdmi and analog jack simultaneously since last update is good for multi-room use plus you get video too with 7.1 in my set up.

djsainty (author)djsainty2013-12-14

Hi, I didn't do a tutorial on this as I thought it would be a bit overkill, as the all the easy to follow instructions of the use, and installation of RASPBMC (rasbian/XBMC) are on
Your 'ible has inspired me to have a go once I have learned the best way to access the gpio port on the pi over my lan. I am looking into ways to use the gpio pins on the pi to automatically power up a little diy Stereo 15amp Amplifier I bought for £5 (and or switching from one to the other) so could mount some ceiling speakers and move from room to room. I was thinking about using Nfc tags on the light sockets and tap with my mobile phone to turn on. When I figure this out I will do an ible on the subject as I still have to manually power up the cinema system or TV's that the Pi's are connected to, so only have 3 rooms from 2 pi's at the moment, and am hoping for 5 from 1 pi.

ukumar11 (author)2013-12-04

Really Good Invention

jhansen10 (author)2013-12-03

EXCELLENT guide. Just got my setup up and running in a few hours. Now I just need to find some speakers where I can hide the PI inside. :-)

One question though. I used the onboard audio and connected it to my BOSE Media. But I think the sound is quite low, I have to turn up the volume quite a lot.

Will it help with the USB Sound card or is the same?

Piney (author)jhansen102013-12-03

Hi Jhansen10,

Well done getting it all up and running. In my experience the non-amplified DAC still had to be turned up quite loud at the amplifier end even with the volume turned right up in alsamixer.

Hope that helps :D

etrombly (author)2013-11-28

if you are using ubuntu (on another arm device, I use a cubieboard) you can use this upstart script:
description "SqueezeSlave"

start on (local-filesystems and net-device-up IFACE!=lo)
stop on [!12345]

# Start job via the daemon control script. Replace "gert" with your username.
exec su -l -c '/usr/bin/squeezelite -m 00:00:00:00:00:04'

# Restart the process if it dies with a signal
# or exit code not given by the 'normal exit' stanza. respawn
# Give up if restart occurs 10 times in 90 seconds.
respawn limit 10 90

you'll need to change the mac address for each player (the -m option)

jogendrasingh (author)2013-11-27

thank for
Raspberry pi explained in basic steps.
all posts are very informative.

About This Instructable




Add instructable to: