Multiroom audio experiment

Multiroom audio experiment

Today I have setup my second squeezebox emulator (squeezelite) on the new Raspberry Pi B+. The objective is to setup synchronization between the two players and second create a energy en cost efficient player. This player will mainly be used for streaming internet radio, that’s why I went for the low sound quality USB powered speakers. The recent release of the revised B+ model has received two modifications which are needed for this project. The audio circuit now incorporates a dedicated low-noise power supply, resulting in better audio output. Secondly the USB output power has increased to 1.2A, so the powered USB hub is probably not needed anymore.

  • Raspberry Pi Model B+ including Multicomp casing 42,95 euro (kiwi electronics)
  • Transcend 4GB Class 10 MicroSDHC 5,70 euro (kiwi electronics)
  • MicroUSB Power Adapter 5.2V/2.0A – 10 Watt 10,95 euro (kiwi electronics)
  • Philips SPA2201 2.0 Speaker – USB powered 20,90 euro (bol.com)

Goods

Download Raspberry Pi operating system image Raspbian from raspberry.org. I used ‘2014-06-20-wheezy-raspbian.img’. Follow the installation instructions to install the image on the MicroSD card.

I installed the Raspbian image using Macosx:

$ diskutil list /dev/disk0 #:                       TYPE NAME                    SIZE       IDENTIFIER 0:      GUID_partition_scheme                        *500.1 GB   disk0 1:                        EFI EFI                     209.7 MB   disk0s1 2:                  Apple_HFS Macintosh HD            499.2 GB   disk0s2 3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3 /dev/disk1 #:                       TYPE NAME                    SIZE       IDENTIFIER 0:     FDisk_partition_scheme                        *4.0 GB     disk1 1:                 DOS_FAT_32 NO NAME                 4.0 GB     disk1s1 $ diskutil unmountDisk /dev/disk1 Unmount of all volumes on disk1 was successful $ sudo dd bs=1m if=2014-06-20-wheezy-raspbian.img of=/dev/disk1 Password: 2825+0 records in 2825+0 records out 2962227200 bytes transferred in 1621.960044 secs (1826326 bytes/sec) $

Now assemble your Raspberry Pi and hook it up to the network and power. After a minute I saw the new Raspberry Pi appear in the arp list of my router. Connect to it using SSH (username: pi / password: raspberry) and follow the next steps.

Start the config tool:

$ sudo raspi-config

I configured:

  • Expand filesystem
  • The timezone
  • The hostname (I prefix all my raspberry’s with ‘rpi-‘)

Finish and reboot

Remove the wolfram-engine package because we’re not going to use it (it’s a large package so updating is time consuming).

$ sudo apt-get remove wolfram-engine

Check for updated packages:

$ sudo apt-get update

Install the latest patches and get some coffee (this step took 8 minutes):

$ sudo apt-get upgrade

Install squeezelite dependencies:

$ sudo apt-get install -y libflac-dev libfaad-dev

Download the squeezelite program and libsoxr dependency provided by Ralph Irving:

$ sudo wget GHOST_URL/pub/squeezelite-1.6.4-439-debian7-armhf.tar.gz $ sudo wget GHOST_URL/pub/libsoxr-0.1.1-1.1-debian-wheezy-armhf.tar.gz

Extract the squeezelite program to ‘/usr/bin’:

$ sudo tar -C /usr/bin/ -zxvf squeezelite-1.6.4-439-debian7-armhf.tar.gz

Create a symlink (needed for the startup script):

$ sudo ln -s /usr/bin/squeezelite-1.6.4.439-static /usr/bin/squeezelite-armv6hf

Extract the libxoxro package and install the package:

$ tar -xvzf libsoxr-0.1.1-1.1-debian-wheezy-armhf.tar.gz libsoxr0_0.1.1-1.1_armhf.deb libsoxr-dev_0.1.1-1.1_armhf.deb libsoxr-lsr0_0.1.1-1.1_armhf.deb $ sudo dpkg -i libsoxr0_0.1.1-1.1_armhf.deb libsoxr-dev_0.1.1-1.1_armhf.deb libsoxr-lsr0_0.1.1-1.1_armhf.deb

Update the firmware to the latest release:

$ sudo rpi-update

Reboot to effect the changes.

$ sudo /usr/bin/squeezelite-armv6hf -l 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 $

Start the player manually:

$ sudo /usr/bin/squeezelite-armv6hf -o sysdefault:CARD=ALSA -n Bedroom -s

If you got it to work follow these last steps to make the player startup after a reboot:

$ sudo wget http://www.gerrelt.nl/RaspberryPi/squeezelitehf.sh -P /etc/init.d/ $ sudo mv /etc/init.d/squeezelitehf.sh /etc/init.d/squeezelite $ sudo chmod 755 /etc/init.d/squeezelite $ sudo update-rc.d squeezelite defaults

Make the necessary changes to the script:

$ sudo vi /etc/init.d/squeezelite

Start the service:

$ sudo /etc/init.d/squeezelite start

Because I already had the Squeezebox server (97_SB_SERVER.pm) and player (98_SB_PLAYER.pm) module setup in FHEM the new player was automatically  detected.

fhem-squeezebox-view

From here I’ll start using the Squeezebox sync function, so more to come!