MP3-Player mit Raspberry Pi

Ich war schon länger auf der Suche nach einem stationären MP3-Player für meine Stereoanlage.
Meine Anforderungen sind hierbei folgende:
  • lokaler Speicher > 100 GB für eine große Musiksammlung
  • LAN oder WLAN für Internetradio
  • gut zu bedienen
  • eigene Zusammenstellung / Speicherung von Playlists
  • Sortierung nach „Album Artist“ und nicht nur nach „Artist“
  • guter analoger Audioausgang oder Digitalausgang (S/PDIF)
Eigentlich hatte ich mir eingebildet, dass meine Anforderungen nicht all zu hoch sind und es doch da etwas Günstiges geben müsste. Aber da hatte ich mich wohl gründlich getäuscht. Die meisten Geräte fangen erst jenseits der 100 € Marke an, bringen keinen eigenen Speicher mit und unterstützten an den Anschlüssen meist nur USB-Sticks oder SD-Karten bis 32GB.

Ich möchte aber große Musiksammlungen lokal auf dem MP3-Player speichern und nicht wegen etwas Musik einen Server den ganzen Tag laufen lassen.
Nachdem ein Experiment mit einem Windows 7 PC auf Basis von alten Notebook Komponenten im Zusammenspiel mit dem „Media Center Control“ nicht wirklich zufriedenstellend war (zu laut, Bedienung hakelig, ewige Bootzeiten, hoher Stromverbrauch), bin ich auf den Raspberry Pi gestoßen.
Ich war zunächst skeptisch, der Preis ist zwar mit knapp 40 € günstig, externe Festplatten lassen sich problemlos bis zu mehreren TB anschließen und Netzwerk hat er auch. Aber von Linux hab ich (oder vielmehr hatte ich bis dahin) keine Ahnung und der analoge Audioausgang ist von der Qualität ziemlich bescheiden. HDMI haben nicht alle AV-Receiver.
Nach weiteren Recherchen im Internet fand ich die Idee mit dem Raspberry Pi aber immer besser. Die Softwareunterstützung ist ziemlich gut. Der Music Player Demon war genau das richtige für meine Zwecke und die Android App MPDroid war wie für mich gemacht. Eine externe 250 GB Festplatte (IDE mit USB 2.0) lag seit Jahren unbenutzt im Schrank und zwecks Audioausgang gibt es USB Soundkarten mit optischem Ausgang. Also kaufen und ausprobieren.
Das Ergebnis nach einem (zugegeben langem) Abend ist sehr zufriedenstellend. Der Raspberry Pi spielt meine Musik problemlos ab (zu dem Zeitpunkt noch analog) und die Fernsteuerung über MPDroid funktioniert besser als ich es erhofft habe. Auch mit großen Musikdatenbanken geht die App spielend um, Ruckler gibt es nur selten (mein Desire S ist auch schon 2 Jahre alt).  In dem nächsten Schritt hab ich dann die USB Soundkarte angeschlossen, jetzt ist auch die Soundqualität einwandfrei.
Wie Ihr dahin kommt, möchte ich euch natürlich nicht vorenthalten. In dem nachfolgenden Tutorial erkläre ich Schritt für Schritt, was ihr braucht und was ihr tun müsst, sodass auch Linux-Laien zum Ziel kommen. Ich beziehe mich auf meine Konfiguration, natürlich funktionieren auch andere Soundkarten und man kann die Konfiguration auch von einem Linux PC oder Mac aus machen. Ferner gibt es auch eine iPhone App für MPD.
Außerdem erkläre ich nebenbei, was wir da eigentlich tun, damit Ihr auch was davon habt.
Ich bin selber aber wie gesagt keineswegs ein Linux Profi und habe mich selber durch diverse englische und deutsche Tutorials gearbeitet. Daher ist dies eher eine Kombination mehrerer Tutorials und Anleitungen. Vielen Dank an die jeweiligen Autoren! Die Wichtigsten habe ich hier verlinkt:

Zunächst die dauerhaft benötigte Hardware:

  • Raspberry Pi Version B,
  • Gehäuse für den Raspberry Pi (kann man auch selber basteln),
  • schnelle SD-Karte min. 4 GB  (am besten 8 GB Class 10),
  • USB Netzteil 5 V / 1 A mit Micro USB Kabel (kein ganz billiges, die machen u.U. Probleme),
  • externe USB-Festplatte mit eigenem Netzteil (Größe nach Wunsch),
  • Kabelzugang zum Heimnetzwerk mit DHCP Server und Internet,
  • Netzwerkkabel,
  • Androidgerät zum Fernsteuern (Smartphone, Tablet),
  • Terratec Aureon Dual USB Soundkarte,
  • kurze USB Verlängerung für die Soundkarte (passt mechanisch nicht),
  • Toslink auf 3,5 mm optische Klinke Kabel oder normales Toslink Kabel (bei der Soundkarte ist ein Adapter dabei),
  • Soundanlage mit Toslink Eingang.

Zum Einrichten brauchen wir außerdem:

  • Windows Computer mit SD-Kartenleser, Internet und Heimnetzzugriff,
  • USB Tastatur,
  • TV mit Videoeingang und Videokabel (gelber Chinchstecker), oder Bildschirm mit HDMI Eingang und HDMI Kabel.

Habt Ihr die Hardware zusammen, ladet ihr euch Folgendes auf euren Windows PC:

Putty ist ein Programm für den Fernzugriff per SSH auf den Raspberry Pi. Also einfach gesagt, es holt lediglich die Konsole vom Pi auf euren Windows PC, sodass man auf einen Bildschirm und Tastatur am Raspberry Pi verzichten kann.

Jetzt kann es los gehen!


Schritt 1, die SD Karte vorbereiten:

Steckt die SD-Karte in den Windows PC und startet Win32DiskImager.exe (UAC bestätigen).
Kontrolliert, dass oben rechts bei Device die SD-Karte ausgewählt ist und wählt links daneben das Raspbian Image aus.
Mit einem Klick auf „Write“ landet das Betriebssystem auf der SD-Karte. Achtung alle Daten auf der Karte sind dann natürlich weg!
Trennt die SD-Karte sicher vom PC und steckt sie in den Raspberry Pi.

Schritt 2, erster Startvorgang:

Jetzt verkabeln wir den Raspberry Pi. Lasst die USB-Soundkarte und externe Festplatte erst einmal weg und steckt stattdessen die USB-Tastatur an. Außerdem brauchen wir Bild und Netzwerk.Schaltet den Raspberry Pi ein, in dem Ihr das Netzteil einsteckt und anschließt.
Nachdem der Raspberry sich etwas Zeit gelassen hat, startet er das Konfigurationsmenü Raspi-config.
Generell gilt bei dem Menü: Es ist nicht das schnellste, aber es funktioniert. Lasst euch also Zeit und wartet ab, bis es auf eure Eingabe reagiert hat!
Eine Dokumentation zu den Einstellungen findet ihr hier: http://elinux.org/RPi_raspi-config
Als erstes mit configure-keyboard einmal Tastatur und deutsches Layout auswählen.
Mit change_pass ändern wir das Standardpasswort raspberry für den Benutzer pi auf ein eigenes.
Unter change_timezone wählen wir die richtige Zeitzone aus.
Bei ssh bitte kontrollieren ob SSH aktiviert ist!
Das Startverhalten boot_behaviour sollte Command Line sein. Da wir keine grafische Oberfläche benötigen. Diese würde später unsere Bootzeit nur in die Länge ziehen.
Zum Schluss machen wir expand_rootfs, damit der Raspberry Pi auch die gesamte SD-Karte nutzt.
Die Abfrage zum Reboot mit Yes bestätigen.
Jetzt ist die erste Konfiguration abgeschlossen und der Raspberry Pi grundlegend betriebsbereit.

Schritt 3, Login per SSH:

Der Raspberry Pi startet neu und begrüßt uns mit einer Login-Abfrage auf der Kommandozeile.
Da wir aber nicht dauerhaft mit einer Tastatur und einem Monitor am Raspberry Pi arbeiten wollen, loggen wir uns hier nicht ein, sondern starten auf unserem Windows PC Putty.
Bei Host Name (or IP address) gebt ihr raspberrypi ein. Anschließend klickt ihr unten auf Open.
Achtung, der Windows PC muss im gleichen Netzwerk sein, damit er sich verbinden kann!
Jetzt sollte auf eurem Windows PC ein Fenster mit einer Konsole aufgehen, die ebenfalls einen Login verlangt.
Gebt pi ein und das Passwort, welches ihr in Schritt 2 gewählt habt. Für den Raspberry Pi macht es keinerlei Unterschied, ob ihr euch direkt an dem Raspberry Pi einloggt oder über Putty per SSH.
Jetzt geben wir sudo shutdown -h now ein, damit fährt der Raspberry Pi herunter.
sudo bedeutet, dass der nachfolgende Befehl als root ausgeführt wird. Root ist quasi der Administrator bei Linux, man kann sudo mit „Rechter Mausklick -> Als Administrator ausführen“ unter Windows vergleichen. shutdown ist herunterfahren -h sagt einfach herunterfahren (-r wäre z.B. neustarten) und now ist eine notwendige Zeitangabe.
Zum Schluss Putty einfach schließen und den Raspberry Pi herausziehen.

Schritt 4, externe Festplatte formatieren und mounten:

Jetzt ist der Moment gekommen, an dem ihr die USB-Tastatur und den Monitor von eurem Raspberry Pi abstöpseln könnt und ihn so anschließt und verbaut (z.B. hinter die Stereoanlage schubst) wie endgültig vorgesehen, also die Terratec USB-Soundkarte und die externe Festplatte anschließen.
Wenn ihr soweit seid, steckt ihr den Raspberry Pi wieder an den Strom und loggt euch von eurem Windows PC aus über Putty ein.
Um unsere externe Festplatte zu benutzen, müssen wir sie zuerst für Linux partitionieren, formatieren und in das Linux Dateisystem einbinden (mounten).
Mit dem Befehl sudo cfdisk starten wir eine Art Datenträgerverwaltung. Jetzt seht ihr untereinander alle Partitionen der angeschlossenen Festplatten aufgelistet. Eine physikalische Festplatte hört unter Linux auf den Namen sd?, wobei ? für einen Buchstaben von a bis steht, der die Festplatten durchnummeriert. In unserm Fall sollte die einzige angeschlossene Festplatte sda heißen (die 2. wäre dann sdb, dann sdc, usw.). Die Partitionen auf einer Festplatte werden zahlenmäßig durchnummeriert. Die erste Partition auf der ersten Festplatte heißt also sda1 (in Windows wäre das Laufwerk C), die zweite sda2 und die 3. Partition auf der 2. Festplatte müsste theoretisch sdb3 heißen.
Je nachdem ob, oder wie eure externe Festplatte vorher in mehrere Partitionen unterteilt war, müsstet ihr jetzt eine oder mehrere Partitionen mit sda am Anfang haben.
Benutzt die Pfeiltasten um alle Partitionen eurer Festplatte auszuwählen und mit Delete zu löschen. Die Daten auf eurer externen Festplatte werden hierbei natürlich gelöscht!
In dem jetzt entstandenen Free Space erstellen wir mit New und Primary eine neue Partition mit maximaler Größe.
Verlasst mit Quit anschließend das Programm.
Jetzt müssen wir die neue Partition formatieren. Das erledigt der Befehl sudo mkfs.ext3 /dev/sda1 schnell und unkompliziert.
Nun müssen wir uns noch mit einer (nicht ganz unpraktischen) Eigenart von Linux rumschalgen, dem mounten.
Von der Windows-Welt sind wir ja gewohnt, dass uns unter Computer (früher Arbeitsplatz) alle Laufwerke angezeigt werden und dass in den Laufwerken dann eine Ordnerstruktur herrscht. Das Laufwerk ist somit die oberste Ebene. Bei Linux ist das nicht so. Dort steht die Ordnerstruktur oben und einem Laufwerk weist man einem Ordner zu. Das Laufwerk wird also in diesem Ordner gemountet. Alles was man jetzt in diesem Ordner speichert, landet auf dem Laufwerk.
Mit sudo mkdir /media/music erstellen wir einen neuen Ordner unter /media.
Anschließend mounten wir mit  sudo mount /dev/sda1 /media/music unsere externe Festplatte unter/media/music.
Jetzt könnten wir also auf unsere Festplatte zugreifen, Dateien lesen und schreiben. Aber ein kleines Problem bleibt, nach einem Neustart müssten wir unsere Festplatte jedes Mal neu mounten. Weil das Quatsch ist, gibt es bei Linux eine Konfigurationsdatei, in die man alle Partitionen eintragen kann, die automatisch beim Start gemountet werden sollen. In dieser müssen wir deshalb eine Zeile ergänzen.
Mit dem Befehl sudo nano /etc/fstab öffnen wir die Konfigurationsdatei fstab mit dem  Texteditor nano. Dort sehen wir schon 2 Zeilen, die für das Mounten der SD-Karte verantwortlich sind. Darunter fügt ihr einfach die Zeile:
/dev/sda1     /media/music     ext3    rw        0       0 ein.
 Mit der Leertaste richtet ihr am besten die Angaben so aus, dass sie schön unter den Originalen stehen.
Mit strg + o speichern wir die Datei und mit strg + x beenden wir den Texteditor.
Jetzt haben wir unsere externe Festplatte dauerhaft in das Linux Dateisystem integriert.

Schritt 5, externe Festplatte freigeben:

Jetzt haben wir noch das Problem, dass wir eine leere Festplatte haben, die ext3 formatiert ist und noch keine Musik enthält. Am besten wäre dazu eine einfache Windowsfreigabe. Damit kann man bequem von jedem PC aus über das Netzwerk Musik hinzufügen.
Windows benutzt einen Dienst namens SMB um Dateien freizugeben. Also benötigen wir einen Samba Server für Linux.
Mit sudo apt-get update aktualisieren wir zunächst die Paketliste, also die Liste aus der wir zu installierende Programme wählen.
Dann installieren wir mit sudo apt-get install samba samba-common-bin Samba.
Die Downloadanfrage ggf. bestätigen.
Auch Samba hat eine Konfigurationsdatei, welche wir bearbeiten. Also sudo nano /etc/samba/smb.conf
Im Texteditor könnt ihr unter Global Settings eure Arbeitsgruppe ändern (workgroup = XXX). Dann  gehen wir runter bis Authentication und entfernen die # vor security = user, damit wir später mit Benutzernamen und Passwort auf eine Freigabe zugreifen können.
Am Ende der Datei fügen wir noch folgendes ein:
[Musik]
comment = hier spielt die Musik
path = /media/music
writeable = yes
guest ok  = no
Musik ist der Freigabename, bei comment könnt ihr einen Kommentar angeben (hab ihn aber unter Windows noch nicht zu Gesicht bekommen). Der Rest erklärt sich von selber.
Die Textdatei mit strg + o speichern und den Editor mit strg + x verlassen.
Jetzt ist zwar der Ordner music unter dem Namen Musik freigegeben, aber es gibt noch keinen Samba Benutzer, der darauf zugreifen darf. Außerdem fehlt uns noch ein Ordner, in den die Playlists kommen.
Also erzeugen wir mit sudo mkdir /media/music/playlists einen Unterordner für die Playlisten.
Anschließend legen wir mit sudo smbpasswd -a pi den Benutzer pi für Samba fest.
Mit sudo chown -R pi:pi /media/music und sudo chown -R pi:pi /media/music/playlists ändern wir den Besitzer der Ordner nach pi“, damit wir später auch Zugriff auf die jeweiligen Ordner haben.
Jetzt noch Samba mit sudo /etc/init.d/samba restart neustarten und schon sollte man von Windows aus auf die externe Festplatte zugreifen können.
Benutzername und Passwort sind selbstverständlich pi und euer selbst gewähltes Passwort.
Ab jetzt können wir Musik auf den Raspberry Pi schaufeln.

Schritt 6, externe USB Soundkarte installieren:

Das ist einfach, zumindest wenn eure Soundkarte, wie die Terratec Dual USB, direkt von Linux unterstützt wird. Gebt den Befehl lsusb ein und wir bekommen eine Liste aller angeschlossenen USB Geräte. Einer der letzten Einträge sollte TerraTec Electronic GmbH Aureon Dual USB sein.

Das war es schon.

Schritt 7, den Music Player Demon erwecken:

Der Music Player Demon (kurz MPD) ist sowas wie ein Hintergrunddienst der eine Musikbibliothek anbietet und Musik abspielt.
Er lässt sich ausschließlich mit einem Music Player Client (kurz MPC) bedienen. Dieser Client kann sowohl auf dem gleichen Gerät laufen, als auch auf einem anderem Gerät im gleichen Netzwerk. MPCs gibt es für fast alle Systeme, also auch für Windows, Android und iOS. Ich verwende hier MPDroid, weil es einfach praktisch ist, den Player vom Handy aus zu bedienen.
Als erstes installieren wir MPD mit sudo apt-get install mpd mpc alsa-utils
Jetzt machen wir noch ein paar Soundeinstellungen:
sudo modprobe snd_bcm2835
sudo amixer cset numid=3 1
Auch der MPD hat wieder eine Konfigurationsdatei, diese öffnen wir mit sudo nano /etc/mpd.conf
Hier haben wir viel zu tun. Als erstes passen wir die Pfade für die Musik und die Playlisten an:
music_directory         „/media/music“
playlist_directory       „/media/music/playlists“
Dann machen wir vor die Zeile bind_to_address    „localhost“ eine #, damit wir später auch über das Netzwerk auf den MPD zugreifen können.
Bei den Audio Outputs müsst ihr den Text so ändern und ergänzen:
audio_output {
        type            „alsa“
        name            „HDMI und 3,5mm“
        device          „hw:0,0“        # optional
        format          „44100:16:2“    # optional
        mixer_device    „default“       # optional
        mixer_control   „PCM“           # optional
        mixer_index     „0“             # optional
}
 
audio_output {
    type            „alsa“
    name            „Terratec Aureon“
    device          „hw:1,0“        # use the external USB sound card
    format          „44100:16:2“
    mixer_device    „hw:1“          # same here
    mixer_control   „Speaker“      
    mixer_index     „0“
    mixer_type „software“
}
Der obere Teil stellt die interne Soundkarte ein und der untere Teil die externe Terratec Karte. Beide Ausgänge lassen sich später über MPDroid an- und abwählen. Ihr könnt auch einen von beiden Blöcken komplett löschen oder mit # auskommentieren, wenn ihr im MPDroid keine Auswahl haben möchtet.
Die Textdatei mit strg + o speichern und den Editor mit strg + x verlassen.
Jetzt einmal sudo nano /etc/modules eingeben und verifizieren ob snd-bcm2835 in der untersten Zeile steht. Den Texteditor mit strg + x verlassen.
Jetzt braucht der MPD auch noch ein paar Rechte:
sudo chmod g+w /media/music/ /media/music/playlists/
sudo chgrp audio /media/music/ /media/music/playlists/
Mit sudo /etc/init.d/mpd restart starten wir den MPD neu, damit er die Änderungen an seiner Konfigurationsdatei lädt.
Mit exit verlassen wir die Putty Konsole.

Schritt 8, MPDroid konfigurieren:

Spätestens jetzt solltet ihr zumindest ein Album über die Windowsfreigabe auf den Raspberry Pi kopieren.
Ladet MPDroid aus dem Play Store.
Beim ersten Start fragt er euch nach den Verbindungseinstellungen. Wählt am besten die WLAN basierte Verbindung, da er dann nur im richtigen WLAN versucht eine Verbindung aufzubauen.
Gebt bei Host raspberrypi ein, den Rest lassen wir in Ruhe. Jetzt unter Einstellungen einmal Datenbank aktualisieren anstupsen und bei „Ausgänge“ den richtigen Ausgang auswählen. Jetzt sollten wir in der Bibliothek bereits unsere Musik sehen und abspielen können.
Zusätzlich sollte man durch die restlichen Einstellungen schauen, zwecks Coverbildern und Sortierung. Dort steckt unter anderem die Funktion zur Sortierung nach Album-Artist.

Schritt 9, abschließender Kleinkram:

Jetzt haben wir einen schönen MP3-Player für die Stereoanlage. Was aber noch fehlt ist eine Möglichkeit, Internetradio wiederzugeben und den Raspberry Pi herunterzufahren, ohne jedes Mal Putty zu starten.
Gegen letzteres Problem hilft die App RaspberryPi Controller von „MWMBB“. Herunterladen, Hostname raspberrypi, RPi-Nutzername pi und euer Passwort hinterlegen. Schon können wir abfragen ob unser Raspberry Pi online ist und könnt ihn mit Anhalten schlafen legen.
Internetradio spielt der MPD von Haus aus ab. Nur müssen wir ihm sagen, wo er danach suchen soll. Legt dazu eine .m3u Playlist im playlists Ordner ab, die eine gültige Streaming URL des gewünschten Onlineradios enthält. Die URLs rücken entweder die Webseiten der Anbieter selber heraus, oder aber man verwendet z.B. vTuner um sich ein paar URLs zusammenzusuchen.
Ich hoffe, die kleine Anleitung hat euch gefallen und ihr seid zurecht gekommen! Wenn ihr Probleme habt, schaut am besten ins Raspberry Pi Forum oder hinterlasst einen Kommentar, wenn Ihr einen Fehler in meiner Anleitung gefunden habt!

Schreibe einen Kommentar