Raspberry PI und MPD mit alsa, cifs ohne Bildschirm
Um auf dem Raspberry PI den MPD gescheit zum laufen zu bewegen sind ein paar Handgriffe von nöten. Alles wie folgt, total einfach.
1. Installation von einem Raspbian Hexxeh Image
Download von hier, dann entpacken und mit DD auf eine SD-Karte kopieren:
dd if=raspbian-r3/raspbian-r3.img of=/dev/sdX bs=1M
Für /dev/sdX nimmt man natürlich seine SD-Karte.
2. Konfiguration vom Netzwerk und Root Passwort
Die frisch gebügelte SD-Karte nun im eigenen PC mounten.
Dann in der Datei /meine/sdkarte/etc/network/interfaces die IP-Adresse einstellen. (Beispielhaft für den CTDO)
auto lo auto eth0 iface lo inet loopback iface eth0 inet static address 195.160.169.16 netmask 255.255.255.128 gateway 195.160.169.1
Dann gleich noch das Passwort vom Root Benutzer setzen, sonst kann man sich gleich nicht per SSH einloggen.
mkpasswd -m sha-512
Und das Ergebnis in die Datei /meine/sdkarte/etc/shadow in der Zeile, wo auch root steht anstelle des ersten * eintragen. In etwa so:
root:$6$IbM/a2W...OJ1oZQaVAziJ.Vo5IiQ.:15604:0:99999:7:::
Nun unmount und Karte ins Raspberry PI verstöpseln.
3. Booten, Updaten und Installieren
Sollte es widererwarten bis hier geklappt haben, stehen nun die Updates an. Ein herzhaftes
apt-get update && apt-get upgrade
verhelfen dem kleinen PI zu neuem Leben. Eine ewigkeit später (je nach SD-Karte) ist alles auf Paketseite aktuell.
Als Nächstes mal alles wichtige drauf packen:
apt-get install alsa-utils cifs-utils ntp fake-hwclock mpd vim
Nun fehlt das Firmware-Update, welches man mit dem Befehl
rpi-update
erledigen kann. Danach ist ein reboot erforderlich.
Dieses Update ist wichtig, denn ansonsten gibts Stress mit ALSA. Der Sound macht nämlich komische Klick-Geräusche bei Play/Pause/Stop.
4. Konfiguration der Pakete
Wenn das durchexerziert ist, stellen wir die zu ladenden Kernelmodule ein. Dazu in der Datei /etc/modules zwei Einträge machen:
snd-bcm2835 ipv6
Natürlich laden wir auch IPv6! ;-) Das snd- Modul ist für die Soundkarte.
Danach kommt das Netzlaufwerk dran. Wir wollen von unserem NAS eine SMB (jetzt cifs) Freigabe unter /mnt/filebase einhängen. Also erstellen wir das Verzeichnis mit mkdir und tragen den Mountpoint in die /etc/fstab ein;
//SERVER/pub /mnt/filebase cifs auto,noperm,user=anonymous,pass=bla 0 0
Die Angabe von user und pass sind erforderlich, damit beim mount keine Abfrage kommt. Die Freigabe ist bei uns per Anonymous erreichbar, somit kann man beliebige Werte nehmen. Unsere Freigabe trägt den Namen pub.
Nachdem dies erledigt ist, konfigurieren wir den MPD in der /etc/mpd.conf nach unseren wünschen. Das kann z.B. sein:
music_directory "/mnt/filebase/audio" playlist_directory "/mnt/filebase/audio" db_file "/mnt/filebase/raspberry_netfs/raum3/mpd/tag_cache" log_file "/dev/null" pid_file "/var/run/mpd/pid" state_file "/var/lib/mpd/state" sticker_file "/mnt/filebase/raspberry_netfs/raum3/mpd/sticker.sql" auto_update "no" [...]
Wie man sehen kann, liegt die MPD Datenbank auch auf dem Netzlaufwerk. Die Audio Daten kommen natürlich auch von dort.
Damit die ganzen Raspberry uns beim einschalten nicht sofort die Bude in allerfeinster Maximallautstärke beschallen ist noch ein kleiner Workaround nötig.
Beim Einschalten vom PI startet irgendwann nachdem das Netzlaufwerk da ist, der MPD und dieser spielt von selber das letzte Lied ab der gestoppten Position ab. Und das bei 100% Lautstärke. Freude!
Also passen wir die Datei /etc/rc.local einfach an, und schreiben folgendes rein:
amixer sset 'PCM' on amixer sset 'PCM' 10%
Und schon steht unser ALSA auf 10% Lautstärke nach dem booten. Wunderbar!
Zum Schluss noch die IPv6 Adresse konfigurieren und autoconf abschalten (Geschmackssache). Also in der Datei /etc/network/interfaces noch folgendes hinzufügen:
iface eth0 inet6 static address 2001:67c:275c:a9::10 netmask 64
Und zum Abschalten von autoconf kann man folgende Befehle nehmen:
sysctl -w net.ipv6.conf.all.autoconf=0 sysctl -w net.ipv6.conf.all.accept_ra=0
Wenn ich mich recht entsinne müsste es das nun auch gewesen sein. Viel Spaß damit. Fragen stellt uns im IRC oder auf unsere Mailingliste.