Serie: Raspi als NAS und Musikmaschine - Teil 3
Fr, 23. April 2021, Ralf Hersel
Meine alte NAS musste einer Raspi-basierten Lösung weichen, um als Allround-Gerät verschiedene Bedürfnisse zu erfüllen. Im ersten Teil dieser Serie habe ich die Hardware beschrieben, im zweiten Teil ging es um die Konfiguration des Raspberry Pi als File-Server, und in diesem dritten Teil kümmere ich mich um die Musikmaschine.
Ziel dieser Übung ist es, eine Musikverwaltung auf dem Raspberry Pi 4 bereitzustellen, die an eine Audio-Anlage übertragen kann und von beliebigen Endgeräten gesteuert werden kann. Es geht nicht darum, Audio an Endgeräte zu streamen, sondern diese als Fernsteuerung für den Raspi zu verwenden. Zu den bisherigen Artikeln dieser Serie gab es viele Vorschläge, die Appliances für den Raspi vorgeschlagen haben (LibreELEC, Navidrom, Volumio). Das ist nicht mein Ziel; ich möchte den Raspberry Pi als vollwertigen PC behalten, anstatt ihn nur einer Aufgabe zu widmen.
Deshalb habe ich mich für den Music Player Daemon (MPD) entschieden. Dieser Musik-Server verwaltet eine Musiksammlung und Streams, z.B.: Internet-Radiosender, kann den Sound an angeschlossene Lautsprecher senden und bietet einige Remote-Clients.
Die Installation
Erstes Problem: das MPD-Paket (0.21.5) für das Raspberry Pi OS (Debian Buster) ist völlig veraltet; es hängt 27 Releases hinter der aktuellen Version (0.22.6) zurück. Daher empfiehlt es sich die neuste Version zu installieren. Das habe ich mithilfe dieser Anleitung versucht und bin dabei gescheitert; fehlende Pakete und Abhängigkeiten waren der Grund dafür. Dann habe ich es mit einem nicht offiziellen Paket in der Version 0.22.3 versucht. Das hat funktioniert und geht so:
Schlüssel hinzufügen:
wget -O /etc/apt/trusted.gpg.d/deb.kaliko.me.gpg https://media.kaliko.me/kaliko.gpg
Quelle hinzufügen:
sudo nano /etc/apt/sources.list.d/deb.kaliko.me.list
deb https://deb.kaliko.me/raspbian-backports/ stable-backports main
Package Index aktualisieren:
apt update
MPD installieren:
apt install mpd/stable-backports
Die Installation hat bei mir ohne Probleme funktioniert. Als Nächstes gilt es, MPD zu konfigurieren.
Die Konfiguration
Bevor man den Music Player Daemon konfigurieren kann, müssen ein paar Informationen eingeholt werden: wo liegt die Musik, wo liegen die Playlisten und welche Geräte sind angeschlossen. Bezüglich der Musik-Bibliothek und des Playlist-Verzeichnisses sieht das bei mir so aus (siehe auch Teil 2 der Serie):
/mnt/nas/Musik
/mnt/nas/Playlists
Die verfügbaren Audio-Devices ermittelt man so:
pi@raspi4:~ $ aplay -l
**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 0: b1 [bcm2835 HDMI 1], Gerät 0: bcm2835 HDMI 1 [bcm2835 HDMI 1]
Sub-Geräte: 4/4
Sub-Gerät #0: subdevice #0
Sub-Gerät #1: subdevice #1
Sub-Gerät #2: subdevice #2
Sub-Gerät #3: subdevice #3
Karte 1: b2 [bcm2835 HDMI 2], Gerät 0: bcm2835 HDMI 2 [bcm2835 HDMI 2]
Sub-Geräte: 2/2
Sub-Gerät #0: subdevice #0
Sub-Gerät #1: subdevice #1
Karte 2: Headphones [bcm2835 Headphones], Gerät 0: bcm2835 Headphones [bcm2835 Headphones]
Sub-Geräte: 2/2
Sub-Gerät #0: subdevice #0
Sub-Gerät #1: subdevice #1
Karte 3: DAC [USB AUDIO DAC], Gerät 0: USB Audio [USB Audio]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Wichtig ist, dass die Geräte eingeschaltet und verfügbar sind. Die Karten 0, 1 und 2 sind die Standardanschlüsse des Raspberry Pi. In meinem Beispiel ist die 'Karte 3' das gewünschte Gerät für die Audiowiedergabe. Es handelt sich um Nubert A-300 Aktivlautsprecher, die ich sehr empfehlen kann (die aktuelle Version sind die nuPro X-4000 RC). Die Lautsprecher sind direkt per USB-Kabel mit dem Raspi verbunden.
Die Konfiguration des MPD erfolgt in der Datei '/etc/mpd.conf'. Da die Datei etwas lang ist, beschreibe ich hier nur die relevanten Einträge:
sudo nano /etc/mpd.conf
music_directory "/mnt/nas/Musik"
playlist_directory "/mnt/nas/Playlists"
bind_to_address "any"
audio_output {
type "alsa"
name "Nubert"
device "hw:3,0"
...
}
Die ersten beiden Einträge sollten klar sein. 'bind_to_address "any" ' sorgt dafür, dass MPD von jedem Client im Netzwerk erreichbar ist. Beim ALSA-Audio-Output ist der 'device' Eintrag wichtig. Die '3' verweist auf die 'Karte 3', die wir vorhin mit 'aplay -l' ermittelt haben.
Nachdem die Änderungen in der 'mpd.conf' mit 'Ctrl+o' und 'Ctrl+x' in Nano gespeichert wurden, kann MPD neu gestartet werden. Dies geschieht mit dem Befehl:
sudo systemctl restart mpd
Ob der Music Player Daemon wirklich läuft, kann man so ermitteln:
systemctl status mpd
mpd.service - Music Player Daemon
Loaded: loaded (/lib/systemd/system/mpd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-04-22 19:11:48 CEST; 2h 50min ago
Um die Musik-Datenbank zu aktualisieren, verwendet man diesen Befehl des MPD-CLI Players namens 'mpc':
mpc update
Bei hunderttausend Titeln in der Musiksammlung braucht MPD eine Weile bis die Datenbank aufgebaut, bzw. aktualisiert ist, es geht aber auf jeden Fall schneller als bei Rhythmbox. Verliert hier auf keinen Fall die Geduld.
Die Clients
Nun geht es um die Wurst; spielt das Ding auch wirklich? Mit 'mpc' gibt es einen CLI-Player für MPD, den ich noch nicht richtig verstanden habe (ich werde später darüber berichten). Client-Apps für den MPD gibt es für alle Plattformen. Ich habe Clients für den Linux Desktop und Android getestet. Als Desktop-Player empfehle ich die Anwendung Ymuse und M.A.L.P für Android. Bei den Clients gibt man ganz einfach die IP-Adresse des Raspis ein, um eine Verbindung herzustellen. Ohne die Clients hier im Detail vorstellen zu wollen, möchte ich trotzdem ein paar grafische Eindrücke hinterlassen:
Ymuse - ein MPD-Player für den Linux Desktop
M.A.L.P - ein MPD-Player für Android
Fazit
Veraltete (bzw. gut abgehangene) Software gehört zum Konzept von Debian und damit auch zum Raspberry Pi OS. Falls die alten Versionen nicht mehr genügen, kann man sich nach neueren Quellen umschauen. Der Music Player Daemon ist eine tolle Musikverwaltung für den spezifischen Anwendungsfall: Musik zentral verwalten und über Remote-Clients steuern (nicht streamen). Das ist nicht jedermanns Use Case, funktioniert aber für meine Zwecke sehr gut.
Im vierten Teil der Serie gehe ich auf die Besonderheiten ein:
- Internet-Radio mit MPD abspielen
- Playlisten erstellen und für MPD verfügbar machen
- MPC verwenden
Quellen:
https://bobrathbone.com/raspberrypi/documents/Compiling%20and%20installing%20MPD.pdf