...::: HELLMERS-ONLINE :::...
 
 
  Bastelecke » DIY Multiroom System

DIY Multiroom System

"Multiroom bezeichnet eine mehrere Rume bergreifende Musikbeschallung oder Bildverteilung in Wohnungen, Husern oder Partyrumen. Multiroomanlagen knnen entweder selbst alle bentigten Verstrker etc. beinhalten, oder mit vorhandenen Beschallungsanlagen und Bildschirmen kombiniert werden."
Zitat: Wikipedia


Bei meinen Projekt handelt es sich um eine (D)o (I)t (Y)ourself Lsung fr ein Multiroom System. Es entstand aus dem Wunsch heraus in unserem gerade erworbenen Eigenheim in jeden Raum Musik hren zu knnen und dieses auch noch Synchron. Da mir die Markenprodukte zu teuer waren und ich sowieso OpenSource bevorzuge kam mir der Gedanke ein DIY Multiroom System mithilfe eines Raspberry Pi aufzubauen.
Hier findet Ihr eine Anleitung wie Ihr ebenfalls ein DIY Multiroom System aufbauen knnt:

Inhaltsverzeichnis

1. Das wird bentigt
2. Einen Logitech Media Server unter Debian aufsetzen
3. Einen NAS als Logitech Media Server verwenden
4. Den Client installieren
5. Das Multiroom System steuern


1. Das wird bentigt

Hardware fr den Client
Raspberry Pi Model B oder neuer
4 GB Micro SD Karte
USB Soundkarte
USB W-Lan Adapter (optional)
Powered USB-Hub (optional)
PC Lautsprecher (optional)

Hardware fr den Server
PC oder NAS (z.B. NETGEAR ReadyNAS 104)

Zum Steuern
Android Smartphone oder Tablet

Software fr den Client
Raspbian oder Tiny Core
Squeezelite

Software fr den Server
Debian
Logitech Media Server

Software zum Steuern
Android App: Squeezer

Zum Einrichten
Ein PC oder Laptop mit SSH Client (z.B. PuTTY)

2. Einen Logitech Media Server unter Debian aufsetzen

Ich beschreibe hier die Installation des Logitech Media Server unter Debian / Ubunbtu. Fr Windows, MacOS und diverse NAS Systeme kann der Logitech Media Server hier heruntergeladen werden. Es gibt zwar auch hier ein DEB-Paket, dieses funktioniert jedoch nicht.

Um das letzte stabile Release zu installieren muss folgende Zeile in die Datei /etc/apt/sources.list hinzugefgt werden:
deb http://debian.slimdevices.com stable main

Jetzt fhren wir folgende Zeilen in der Kommandozeile aus:
apt-get remove --purge squeezecenter
apt-get update
apt-get install squeezeboxserver


Whrend der Installation kann es vorkommen das man nach diversen Abhngigkeiten des SqueezeCenter gefragt wird. Dies sind weitere Software Pakete die SqueezeCenter bentigt um zu funktionieren. Manche dieser Abhngigkeiten knnen weitere Abhngigkeiten haben!

Sobald der Logitech Media Server installiert ist kann seine Web Oberflche von jeden Browser durch folgende URL aufgerufen werden:
http://IP meines Servers:9000/

3. Einen NAS als Logitech Media Server verwenden

Auf dem Markt gibt es schon seit geraumer Zeit Netzwerkspeicher zu kaufen die bereits den Logitech Media Server bei der Auslieferung installiert haben oder bei denen er sich ganz einfach ber die Weboberflche nach installieren lsst. Ich persnlich nutze inzwischen den NETGEAR ReadyNAS 104, bei dem sich der Logitech Media Server einfach nach installieren lsst.

Sollte jemand andere Netzwerkspeicher kennen bei den der Logitech Media Server installiert ist oder sich einfach nach installieren lsst, mchte ich euch bitten mir mitzuteilen um welche Gerte es sich handelt, um hier eine mglichst komplette bersicht zu erhalten.

4. Den Client installieren

Zunchst installieren wir Raspbian auf der Micro SD Karte (Anleitungen hierfr gibt es im Internet genug so das ich nicht weiter darauf eingehe) und stecken danach die Micro SD Karte in den Raspberry Pi und verbinden diesen mit einen Netzwerk Kabel und den AC-Adapter. Nach erfolgreicher Konfiguration von Raspbian loggen wir uns via SSH auf dem Raspberry Pi ein.

Als ersten Schritt entfernen wir das Paket "wolfram-engine". Dieses Paket bereitet Probleme beim hinzufgen des Daemon Scriptes fr das starten von Squeezelite nach dem hochfahren. Fr Squeezelite wird es nicht bentigt und durch das entfernen werden zustzliche 430 MB Festplattenspeicher frei und das Update geht wesentlich schneller. Zum entfernen der "wolfram-engine:"
sudo apt-get remove -y wolfram-engine

Als nchsten Schritt ndern wir den Hostnamen. Dies lsst sich ber das Config Tool erledigen. Das Tool wird aufgerufen mit:
sudo raspi-config
  1. Whle "8 Advanced Options"
  2. Whle "A2 Hostname"
  3. Whle "OK"
  4. Jetzt den Hostnamen ndern
Achtung: Es drfen nur Buchstaben, Zahlen und das Minus Zeichen fr den Hostnamen verwendet werden.

Als nchstes stellen wir den sound level ein. Hierzu starten wir den alsamixer:
sudo alsamixer

Mit F6 kann man hier den Soundkarte auswhlen (ich benutze eine USB Soundkarte) und stellt dann mit den Cursor Tasten die Lautstrke ein. Mann sollte auerdem das Mikrofon auf 0 stellen, um sicher zu gehen das er keine Interferenzen verursacht.

Im nchsten Schritt mssen wir einige Libraries installieren:
sudo apt-get install -y libflac-dev libfaad2 libmad0

Bevor wir Squeezelite installieren mssen wir ein Arbeitsverzeichnis erstellen und herunterladen:
mkdir squeezelite
cd squeezelite
wget http://squeezelite.googlecode.com/files/squeezelite-armv6


Wir kopieren Squeezelite jetzt in das "usr" Verzeichnis und machen es Ausfhrbar.
sudo mv squeezelite-armv6 /usr/bin
cd /usr/bin
sudo chmod a+x squeezelite-armv6


Da ich eine USB Soundkarte nutze muss man Squeezelite sagen welche Soundkarte es nutzen soll. Daher lassen wir uns erst einmal alle Soundkarten auflisten.
sudo /usr/bin/squeezelite-armv6 -l

Das Ergebniss:
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=Set - C-Media USB Headphone Set, USB Audio - Default Audio Device
  sysdefault:CARD=Set - C-Media USB Headphone Set, USB Audio - Default Audio Device
  front:CARD=Set,DEV=0 - C-Media USB Headphone Set, USB Audio - Front speakers
  surround40:CARD=Set,DEV=0 - C-Media USB Headphone Set, USB Audio - 4.0 Surround output to Front and Rear speakers
  surround41:CARD=Set,DEV=0 - C-Media USB Headphone Set, USB Audio - 4.1 Surround output to Front, Rear and Subwoofer speakers
  surround50:CARD=Set,DEV=0 - C-Media USB Headphone Set, USB Audio - 5.0 Surround output to Front, Center and Rear speakers
  surround51:CARD=Set,DEV=0 - C-Media USB Headphone Set, USB Audio - 5.1 Surround output to Front, Center, Rear and Subwoofer speakers
  surround71:CARD=Set,DEV=0 - C-Media USB Headphone Set, USB Audio - 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
  iec958:CARD=Set,DEV=0 - C-Media USB Headphone Set, USB Audio - IEC958 (S/PDIF) Digital Audio Output


Das zweite und dritte Device leitet den Ton an den Standard Audio Ausgang des Raspberry. Da die Qualitt dieses Audio Ausgangs nicht sonderlich gut ist nutze ich eine USB Soundkarte. Die USB Soundkarte sind die restlichen Gerte in der Liste, erkennbar am "C-Media" aufgrund des "C-Media" Chips. Wenn man nur die Frontlautsprecher nutzen will, muss man Squeezelite mitteilen das Device mit der Kennung "front:CARD=Set,DEV=0" zu nutzen
Nun knnen wir Squeezlite das erstemal starten (IP ist die IP Adresse des LMS Server):
./squeezelite-armv6 -o front:CARD=Set,DEV=0 -s IP

Jetzt sollte es funktionieren!

Man kann Squeezelite auch ohne Angabe der IP Adresse starten:
./squeezelite-armv6 -o front:CARD=Set,DEV=0

Ohne Angabe der IP Adresse versucht Squeezelite die Adresse des LMS Server selber zu ermitteln.


Squeezelite beim Systemstart starten

Alles hat funktioniert, doch jetzt wollen wir Squeezelite beim hochfahren gleich mit starten. Fr diesen Zweck habe ich auf http://www.gerrelt.nl/RaspberryPi/wordpress/tutorial-installing-squeezelite-player-on-raspbian/ habe ich ein kleines Daemon Start Script gefunden welches Squeezelite startet. Das Script findet Ihr auch auf meiner Website.

Das Daemon Script nutzt dabei ein separates Script mit dem Namen squeezelite_settings.sh für die Einstellungen. Beide Scripte sind über meine Website erhältlich. Folgender Code lädt die Scripte herunter, verschiebt Sie in das korrekte Verzeichnis und veranlasst das automatische starten von Squeezelite:

cd /home/pi/squeezelite
sudo wget http://www.hellmers-online.info/multiroom/squeezelite_settings.sh
sudo mv squeezelite_settings.sh /usr/local/bin
sudo chmod a+x /usr/local/bin/squeezelite_settings.sh

sudo wget http://www.hellmers-online.info/multiroom/squeezelitehf.sh
sudo mv squeezelitehf.sh /etc/init.d/squeezelite

cd /etc/init.d
sudo chmod a+x squeezelite
sudo update-rc.d squeezelite defaults


Im Script squeelite_settings.sh muss jetzt noch die Soundkarte eingestellt werden. Öffnen Sie dafür das Script mit Nano:

sudo nano /usr/local/bin/squeezelite_settings.sh

Sucht hier nach folgender Zeile:

SL_SOUNDCARD=“sysdefault:CARD=ALSA”

Ändert “sysdefault:CARD=ALSA” auf die Soundkarte die Ihr vorher ausgewählt hat (in meinem Fall habe ich es auf “front:CARD=Set,DEV=0” geändert). Wenn du den Standard Audio Ausgang des Raspberry Pi nutzen möchtest, brauchst du hier nichts zu ändern.

Das Daemon Script übernimmt als Namen für den Squeezelite Client den Hostnamen des Raspberry Pi. Wenn Sie den Namen ändern wollen, kannst du diesen ebenfalls in diesem Script setzen. Suche hierfür nach der Zeile “SL_NAME”. Du findest diese Zeile:

#SL_NAME=“Framboos”

Entferne die Raute und ändere das Wort “Framboos” auf etwas deiner Wahl.

Wenn Du die Anleitung bis hierher abgeschlossen habt, aber Du dennoch eine schlechte Musik Qualität oder Störungen hast suche nach folgender Zeile:

#SL-ALSA-PARAMS=“80”

Entferne auch hier die Raute. Dies erhöht die Ausgabe Buffer Größe.


Ein letzter Test

Mit folgenden Befehlen kannst Du testen ob alles korrekt funktioniert:

sudo ./squeezelite start

Der Command Prompt sollte sofort wieder erscheinen. Jetzt wird überprüft ob squeezelite luft:

ps -A | grep squeeze

Jetzt sollte eine ähnliche Zeile wie die folgende auftauchen (die Nummer zu Beginn wird dabei anders sein):

2324 ? 00:00:01 squeezeite-arm

Zu letzt stoppen wir Squeezelite wieder:

sudo ./squeezelite stop

Ein letzter nü:tzlicher Befehl der hier aufjedenfall erwähnt werden soll ist:

sudo ./squeezelite update

Hiermit wird Squeezelite gestoppt, eine neuere Version herunter geladen, upgedated und wieder gestartet.

5. Das Multiroom System steuern

Für die Steuerung kannst Du Dein Smartphone oder Tablet nutzen. Da ich nur über Android Smartphones oder Tablets verfüge, kann ich auch nur diesen Weg hier beschreiben. Ich bin mir aber sicher das man bei www.gidf.de sehr schnell für Apple und Windows fündig wird.

Zunächst installierst Du die App “Squeezer” auf Deinen Smartphone. Starte die App und wähle im Menü den Punkt “Einstellungen”. Wähle jetzt “Server Address” aus und drücke den “Scan” Knopf. Dein Server sollte jetzt erkannt werden. wähle OK und gehe zurück zu Squeezer. Nun wähle im Menü “Abspielgeräte” aus. Es sollten jetzt alle Deine Player angezeigt werden. Wähle einen Player aus und drücke Squeezer's “Home” Button in der linken oberen Ecke und wähle etwas unter “Meine Musik” aus. Diw Wiedergabe sollte sofort starten.

Solltest Du trotzdem noch Probleme haben, kannst Du mir gerne eine Email senden.

back top
.:   Andre Hellmers - Ottweilerstr. 1 - 28309 Bremen   :.
  www.hellmers-online.info  -   andre@hellmers-online.info