Introduction: Sonos-like Wireless Multiroom Sound System
Since I was a kid, I have always loved homes that have built in speaker systems where the whole house is synchronized with one song. I always thought that was something only those that could shell out thousands of dollars could accomplish.
Then came SONOS. I thought the SONOS systems were the answer to not having my home torn down just to have a sound system that would play my music in harmony... Then I saw the pricetag, to do what I want with SONOS is an impossibility for me, I cannot justify that amount just for a bit of comfort... Ok, so my hope of finaly doing this in my house was crushed just as fast as it was raised.
Recently, we had some upgrades done to the house and I thought it an opportune time to see what could be done about my sound-deprivation. By no means am I an audiophile so I was not looking for something that would blow your pants off, but I did want something functional, something that sounded nice and of course, didn't kill my bank account.
I found information about the Squeeze box players, and how they do not make them anymore, then found that you could use your Raspberry Pi with many different distributions to create different types of music players, but none really fit my needs as they required much programing and I did not have the time to "make it work" as I should. Then, out of the many searches trying to find the Logitech Media Server installation, I came across Max2Play. It promised to do everything I needed and wanted along with a few extras as well.
I know some of you reading are PRO's at working with the Raspberry Pi or at making things. Others are complete beginners and may not have even the slightest idea where to begin.
I wanted to do a FULL INSTRUCTABLES for this system,
the intent being of course, that anyone can pick it up and make it with little effort.
The hardest thing is finding out exactly what to do, I intend to make this a one-stop-shop so you can be encouraged to make it yourself.
I have broken down the steps below in case you want to skip to a certain section...
SOFTWARE SETUP, SERVER, PLAYER. STEPS 1 - 10
Basic Tools and Image for the Pi.
Step 1 - Max2Play Image
Step 2 - SD Formatting
Step 3 -Image Burning
Booting and Initial Setup.
Step 4 - Boot up and Config
Step 5 - Filesystem Mount
Step 6 - Wifi/LAN
Step 7 - Squeezebox Server Install
Step 8 - Squeezebox Server Setup
Step 9 - Testing and Sync'ing
Step 10 - Adding Services
BUILD YOUR SETUP. STEPS 11-15
Step 11 - Power Supply
Step 12 - Internal Components
Step 13 - Cable management
Step 14 - Sound cards
Step 15 - Implementation
Step 16 - MAKE MORE
Step 17 - Controls anyone? Use your old device as a controller
Step 18 - BONUS! Fire Stick as sound device... Or other ANDROID device!
Raspi 3 kit (pi, case, charger) - $45
Logitech speakers with sub - $30 - Optional
Refurbished microSD - $5
I added a cheap soundcard 3x$7 so that's $2.33 per card - Optional
AND OF COURSE:
VOTE FOR THIS IF YOU THINK ITS WORTH IT.
Step 1: Max2Play Image
Visit this link: https://www.max2play.com/max2play-image/ to download the image for the device you will be using, I am using the Raspberry Pi 3 for this example.
If you have a HiFiBerry card, download the version with that support already built in.
Have a touch screen? Guess what? There is an image for you as well.
Once the file has been downloaded, make sure to unzip the file by going to the download folder and right click and select the "extract all..." option. Click extract all.. Then click extract on the next window.
You should have a folder pop up with a .img file, this is the file we need.
Step 2: SD Formatting
While the above file is downloading, click here: SDCard Formatter and agree to the EULA to download the SD formatting tool.
Run the downloaded file and install on your PC.
Once installed, run the program (you will need to click OK if you receive a warning from your PC).
Click on Drive and ensure it is the correct drive for your SD card
(you don't want to format the wrong drive, trust me).
Under format option: click the OPTION button.
Under FORMAT SIZE ADJUSTMENT select ON. This allows the whole card to be formatted in case there are partitions created.
then click FORMAT.
Click ok to the next 2 statements only if you are sure you have the correct drive selected.
If the format went correctly, it will give you a Completed message.
We are now ready for the next step.
Step 3: Disk Imager
Now, download this tool to burn the image to your memory card.
Follow this link: https://sourceforge.net/projects/win32diskimager/... and download the file.
Run the file and install Win32DiskImager on your PC.
Once this is done, run the program Win32DiskImager and select OK if you receive a warning from your PC. Under the Image File, we will need to select the file we downloaded from max2play.
Click on the folder icon and select the image file then click OPEN. Make sure you have the right drive letter for your SD card and click on the "write" button.
Once the file has been completely written to disk, you will receive a "Write Successful" message. We can now, move to the next step.
Step 4: Boot Up and Config
Grab your newly formatted memory card, raspberry pi, an Ethernet cable and a power source for the pi and head to your nearest router. We will be plugging in the Pi to the router for connection prior to going wireless.
Once the Pi is connected and booted up, go back to your computer and open a page in your favorite internet browser and type: //max2play/ on the address bar. You will be greeted with the Max2Play home page for your device.
Before doing anything here, we want to ensure to Expand the File system and Update Max2Play. Click on the Settings/Reboot tab and scroll down. Click on the Expand Filesystem button. Once this is done, it will ask you to reboot. Click reboot, it will be quick to do so.
Once the page is back, click on Update Max2Play button and wait. Once the update has completed, you will get a notice that Max2Play has restarted.
Lets change the Playername to whatever you find most suitable such as Hall, Kitchen, Bedroom and select your language/region and click on the "save settings". Remember this name as this will be the name you will need to access the player again. Click on reboot once more for the settings to take effect.
Step 5: Filesystem Mount
Click on the Filesystem Mount tab and add the network drive where your music is located, if it is located in a USB drive, this is the place to add that directory.
You can click on the "Show Network Devices" button to auto-discover your networked devices.
Click on the "set path" button once you have found your music drive, this will pre-fill your mount address.
The next piece asks you where you want this information to be accessible, I use /mnt/share/Music on all of mine because it makes it easy to find when you do multiple of these devices.
On the box with cifs, just type: cifs.
The next box was a pain as I do not have my password protect enabled for my network drive, I found the configuration so here is what you need to type: user=null,password=null,sec=ntlm,iocharset=utf8 If you have a password, replace the "null" with the information necessary.
Then click "Save" if all went correctly, you will receive a "Mountpoint successfully added" message.
For users of a Synology NAS you might use the following (this are my settings, so you might have another ipo-adress and/or volume. I just decided to have music and video on a Volume of it's one)
Type: same as path
Per a comment from: edwinkort - thank you for the information.
Step 6: WiFi / LAN
So far so good. Now lets set up WiFi for your player,
Your WiFi plug should already be connected, if it is not, shut down the PI from the Settings/Reboot and plug it in, then re-connect the Pi, we will wait for you. (The Pi3 has this built in)
Now that you are back, click on the WiFi/LAN tab and click on the START SCAN blue letters on the middle of the page. On the left of those letters, you will find a drop down box with the list of the networks found.
THIS LIST WILL NOT POPULATE UNTIL YOU CLICK START SCAN
Once you have found your network and click on it, it will automatically pre-fill the Network SSID portion of the credentials. Please add the password for your network and ensure to tick the Load WiFi Interface box. Click on Save all settings to save your WiFi configuration.
Step 7: Squeezebox Server Install
IF YOU ALREADY HAVE A SQUEEZEBOX SERVER
RUNNING ON ANOTHER DEVICE, SKIP TO STEP 9
If this is your first (or only) device, you might not have the LMS server yet, we will need to click on the "Squeezebox Server" tab.
Once in the page, click on "show available versions" button and select the 7.9 nightly version as this is what is requested on the RED WRITTING.
Click on the "Squeezebox Server start installation" and wait.
The top of the screen will give you a notification which will refresh every three seconds or so. If the page stops refreshing, just click on the "Squeezebox Server start installation" button again and it will give you the updated status.
Once you are displayed with a big blue button that says "Open Squeezebox Server Webadministration" you know you are ready to move forward.
YOU ONLY HAVE TO INSTALL THIS ON ONE OF YOUR DEVICES. IF YOU HAVE THIS RUNNING ON A PC, OR IF THIS IS YOUR SECOND DEVICE AND YOU HAVE ALREADY DONE THIS FOR YOUR FIRST ONE, YOU DO NOT NEED TO FOLLOW THIS OR THE NEXT STEPS ABOUT THE SERVER.
Step 8: Squeezebox Server Setup
IF YOU ALREADY HAVE A SQUEEZEBOX SERVER
RUNNING ON ANOTHER DEVICE, SKIP TO STEP 9
Once you have installed the server correctly, you will be presented with a button that says "Open Squeezebox Server Webadministration" go ahead and click it.
If you have a Logitech Media Server account, go ahead and add one or create one but it is not necessary to do so, you can click on the skip button.
The next page will ask you where the music is mounted, go ahead and select the archive we designated for the music by clicking the following folders: mnt > share > Music and click the Next button.
If you have a playlist folder you can select it on the next screen or just hit the Next button as it is not necessary.
Click finish to the next screen as it is a confirmation you have completed the setup and will give you any information you have submitted as confirmation.
You will now be presented with your player and server.
Step 9: Testing Server and Sync'ing
Once you have installed everything, its time to return to the Setup/Reboot and click on the shutdown button.
Unplug your raspberry pi from the Ethernet cable and take it to your testing area.
I have some old speakers for computers so I used those as they are more than adequate for use. I plugged in the Pi to the power, the speakers to the power, and then the speakers to the pi.
I accessed the server from my PC by going to: //instructaplayer:9000 (change instructaplayer to the name of your device), to test that it was capable of connecting to my music drive and able to play the content, I clicked on the My Music then Music Folder option on the left and selected one of the songs.
Voila! it works.
If you have multiple devices and would like them to sync the music, this is the place to do it, go to the top right where you see the name of the player and click it. A drop down list of all your currently connected players will show up. At the very bottom of this list is a button that says synchronize, click it. A pop up will come up, click the player or group of players you want the current device to sync with.
Step 10: OPTIONAL - Adding Services
To add services to your devices you must add a Logitech account to your device. If you did not add this account when you first set it up, its no problem.
Click on the Settings option at the bottom right of the server page (use //Instructaplayer:9000 to access this page) Once you are in the settings, click on the mysqueezebox.com tab. You can now add your account or create a new one here.
If you created a new account, log in through your browser at www.mysqueezebox.com and click on the:
App Gallery tab, this will give you a list of apps on the left side of your screen. Select the service you want and click the Install App button. Voila! That service will show up as a way to play music.
Want YOUTUBE? How about AIRPLAY? from the settings menu for the server, click on the plugins tab and click on the services you want to use.
There are LOTS!!!
Click on Apply at the bottom right when you have selected what you want to use.
You may need to reboot just to be on the safe side.
Step 11: Power Supply
please make sure to unplug from outlet prior to proceeding
Now that the server is running and you have tested the system, its time to do what you came here to do.
I got a set of inexpensive Logitech speakers from Amazon as the sacrificial set. These speakers will be outside on the deck for the remainder of their life, they will not be exposed to direct water but the heat and the cold will still play a roll.
I flipped the Sub over and took off the speaker to see what room I had to work with, as expected, there was plenty of real state for all my components! YAY!
I found where the power cables were coming in and took off the caps, I then used 3 wire connectors to have an extra space for my power supply.
I bought an simple female end plug I could use that would not take too much space, I opened it up and connected both terminals with wires and tightened each prior to closing.
The two wires from the plug can now be slid in to the remaining slot of the connectors with ease then use hot glue to secure the wires in place. I feel easier knowing the wires wont just jump out when they want to.
If you do not have the connectors, you can twist the wires and use a cap as regular.
Just please, please make sure secure the wires and to not have anything connected to the outlet while working on this device.
Step 12: Internal Components
Now that the Power Supply is out of the way, how are you going to connect the other devices...
The raspberry pi will be enclosed in this box for a very long time, always on, always ready, always warming up. My decision was to go with a case that had a fan because this would at least keep my pi cooler than usual. Lucky that my case also came with heat-sinks to help with the heat.
I added a sound card to my raspberry pi's because they DO make a difference, the static noise is almost completely gone (you cant even tell its there anymore) and I am certain that with a HiFiBerry card it would be even more surprising. The DAC's I bought were super cheap, 3 for $7 on Amazon, the more expensive ones I used were around 6 each and even come with optical output.
Both of these components fit to the other side of the enclosure and with a little bit of hot glue, they will remain in place to ensure nothing can interfere with each other.
Step 13: Cable Management
Now that you know where everything goes, and you see the amount of cables involved... DONT PANIC!!! We have a solution.
You should have a cable for the power supply, if you are like me, its a long one. If you opted for an audio card you will have a USB cable for that device as well. There is also the sound cable which will have to be plugged in to the Pi or the DAC. The amount of cables made it look like a forest inside this once neat space. I found that I could wrap the wire to the sound tube and put Hot Glue on it to keep it in place. IT WORKS! I know have a neat internal bay on my system!
I also needed the sound cable to go back in to the raspberry pi, since I did not want it coming out through the sound tube, I took off the rear plate and drilled a small hole at the very top ensuring to only make it wide enough for the wire. To slide the wire in I had to cut the hole all the way to the top. At the end, the wire fit perfectly inside and I was able to secure the back plate to the enclosure again.
Step 14: Sound Cards
This is optional but in my opinion, this is one of those things that will
make you appreciate your system that much more.
Soundcards that work with the raspberry pi are very inexpensive, you can get 3 for $7 dollars on Amazon, just look for the USB 5.1 Surround Sound Card and you will find TONS!!! I bought 6 of them!
I also bought a couple of a bit pricier ones. I have to say that they are a little better than the cheap ones clearing static from the sound but since I am not using them with the optical output, I am not hearing much of a difference. I am more than certain that a HiFiBerry Card would make this an awesome sounding setup but I don't have one to confirm this.
When you have chosen the DAC of your choice, connect it to your Pi and turn the Pi on. Go to your computer and access your player with //yourdevicename/ in the address bar and click on the Audioplayer tab.
The first section has 3 options for Squeezelite Mediaplayer, (this is whats running in the background that lets you play music) Click on Edit Advanced Options.
This will open up a menu, the top is a drop down for "soundcard", click it and select the bottom option then click save.
THE OPTION YOU ARE LOOKING FOR READS:
plugw - USB AUDIO DAC, USB Audio - Hardware device with all software conversions, CARD=DAC, DEV=0
If your card can be matched from the options, please do so, otherwise, this option has always worked for me.
A concern from the comments: Sound Lower with Sound Card
This is due to the sound card receiving the sound, then it "processes it" to clean up the background noise. Since some of the sound is eliminated to rid of static/background noise and therefore your output is "lower" to the actual sound, however, it is also cleaner and crisper.
This will also affect your SYNC if you have some zones with soundcards and others without as the sound will come out a split second slower out of the sound cards due to processing the sound.
Step 15: Implementation
My device was always made with the purpose of being an outdoor unit, as such, once I had it all ready, I took it to the deck.
I ran a brown power extension that matched the stain on the deck to minimize the visibility of it and plugged the unit into it. I positioned the speakers more or less to where I thought would send the sound throughout the room. I then positioned a chair on top of the speakers which concealed them perfectly.
Since my set of speakers has a manual volume and power buttons, I leave the controller at he edge of the cushion. There are times you don't want to get up just to turn it down, this is the best solution.
Step 16: Make More!!!
My wife and I loved the way everything worked so much, I was able to convince her to letting me do this for other parts of the house, namely: the rest of the house!
IF THERE IS EVER A TESTAMENT TO SOMETHING BEING GOOD,
IS SHE AGREEING THAT YOU SHOULD DO IT
Before buying more stuff, I had another 2 Raspberry Pi's just floating around, I decided to use them with the current stereos around the house. Everything worked so good that I had to do more... So I did.
I built another unit just as above for the kitchen since we spend a lot of time in there. Another to bring a good mood to the living room and dining room.
In total, we've added:
4 existing stereos (including my garage!!!)
4 of the system shown here (one is always outside!)
2 existing surround sound systems
And you can only keep adding!!! That is what is so great about this system, it is so easy to implement there is no reason not to do it!!!
If you want to make more, its as easy as following steps 1-6, you don't even need to do the server portion!!!
Step 17: Controls Anyone?
We have the system throughout the house and its awesome to be able to control it through your devices from the web browser to the applications that are available for our phones to control squeezebox.
In our case, we have many old phones and tablets that I've just collected because "one day I will use them" and for once, I was right and the day came.
I garnished the house with a phone or tablet here and there as "always on" controllers for the sound system. Each of them are set to their zones but can control all zones you want.
I found an application I like and bought it to support the developer, its called SOUNDICITY and it has a beautiful interface which makes the setup just seem that much nicer. The app is available for windows devices, I have not found it for Android or iOS but I use Squeezer for those and it is great as well.
Step 18: BONUS! Use Your Fire Stick TOO!!! (Or Android)
Do you have an Amazon Fire stick? Is it connected to your TV and surround? GREAT!
Lets use it for sound too!!!
In order to do this, we will need to download SB Player from the Amazon store, you may have to use the search function to find it.
Open the app and have it auto scan for the server, on the left side you will see the drop down, click it. Once you have your server selected (Instructaplayer), click on connect and voila! Now you can use your surround sound as part of your system!!! I recommend going to Settings then General to change the name of the device when connecting so you don't get confused with the names.
The only issue with the fire stick is that it goes to sleep... But there is a work around!
But to do this we will need to enable unknown sources by going to Settings -> System -> Developer Options -> Unknown Sources and ticking the box there/select on. You can undo this after installing the app.
You will need to go online and find the Wake_Lock .apk file. It is a free app but it is not available in the Amazon Store so you will need to download it and put it in the network drive, then, with a file explorer, access the network drive and install the Wake Lock application on your Fire Stick. I used ESFile Explorer (or any explorer with networking ability) as we will need to access your network drive.
Open the Wake Lock app and select any option you prefer, I use the bottom option, this stops your fire stick from going to standby and stopping your music from playing.
What about screen burn in? You've gotten this far, get a screensaver app or use Kodi and let its screen saver with the clock and weather bounce around the screen. To install Kodi, do the same as above.
No firestick but have an otherwise Android enabled device?? Android TV Box? Android Tablet or phone?
YOU CAN ADD THESE DEVICES AS MUSIC PLAYERS TOO!!! Using the same SB application from above
Second Prize in the
IoT Builders Contest
Runner Up in the
Amps and Speakers Contest 2016
Participated in the
Dorm Hacks Contest 2016