Update: 10.04.2015 keine Probleme mit ogg-Dateien unter 14.07 Barrier Breaker
In "OpenWrt: Alternative Routersoftware (auf TP-Link TL-WDR3600)" wurde kurz beschrieben, wie OpenWrt installiert wird. Dieser Artikelt baut darauf auf. Hier geht es darum, wie man auf dem Router den "mpd" installiert. Mit einer Android-App kann dann eine Musiksammlung von einer externen Harddisk oder einem NAS abgespielt werden.
Das Fazit: Heute, im April 2015 und mit einiger "Echtwelt-Erfahrung" mit Streaming (dlna) ziehe ich die Musiksteuerung via mpd derjenigen via dlna vor. mpd ist direkter, geht gleich nach dem Einschalten und wechselt Songs direkt wie es auch ein guter CD-Player macht. Bei dlna benötigt alles seine Zeit.
OpenWrt Dokumentation zu USB-Audio: http://wiki.openwrt.org/doc/howto/usb.audio
USB-Audio
opkg update && opkg install kmod-usb-audio kmod-sound-core alsa-utils librt
Muskiplayer-Dämon (mpd)
opkg install mpd
Schwierigkeiten macht unter Umständen, welches Device man verwenden sollte. Das kann man mit einem der beiden Kommandos
aplay -L amixer
herausfinden. Das passende Device (Gerät) wird unter mixer_control eingetragen.
Die Pfade können frei angepasst werden. In diesem Beispiel liegt das Musikverzeichnis auf der 2. Festplatte, die an den Router angeschlossen wurde. Die Wiedergabelisten und die Datenbank werden geschickterweise ebenfalls auf die Harddisk geschrieben. Möglicherweise muss das Verzeichnis .mpd per Hand erstellt werden: mkdir /mnt/sdb1/.mpd . So kann man einfach die Harddisk wechseln ohne jedesmal die Datenbank neu generieren zu müssen. (Der Router muss dafür ausgeschaltet werden).
music_directory "/mnt/sdb1/music"
playlist_directory "/mnt/sdb1/music/playlists"
db_file "/mnt/sdb1/.mpd/database"
log_file "/mnt/sdb1/.mpd/log"
pid_file "~/.mpd/pid"
state_file "/mnt/sdb1/.mpd/state"
audio_output {
type "alsa"
name "My ALSA Device"
device "hw:0,0"
mixer_control "Master"
}
Der "Mixer" (Lautstärkeregelung) wird womöglich falsch eingestellt. In der Datei /etc/init.d/mpd muss dafür eine Zeile abgeändert werden:
Von:
[ -x /usr/bin/amixer ] && /usr/bin/amixer set PCM 40
zu:
[ -x /usr/bin/amixer ] && amixer set Master,0 20%,20% unmute >/dev/null 2>&1
Der mpd soll sich auch etwas "netter" mit den anderen laufenden Programmen vertragen. Dafür ändert man die Zeile:
nice -n -10
zu:
nice="nice -n -20"
Und:
#service_start /usr/bin/mpd
zu:
$nice /usr/bin/mpd
Die nachffolgende Version sieht in /etc/mpd.conf nach, wo sich das Datenbankverzeichnis findet und erstellt es gegebenenfalls, wenn es nicht vorhanden ist. Die Datei ist diesem Artikel auch angehängt (Umbenennen von 'mpd.' zu 'mpd'). Nicht vergessen, das x-Flag zu setzen, wenn man sie benutzen will anstelle der originalen Version.
#!/bin/sh /etc/rc.common
# Copyright (C) 2007-2011 OpenWrt.org
# extended by iNetCom/jh 2012-12-14
START=93
start() {
#create mpd directories
pld=`grep ^playlist_directory /etc/mpd.conf | cut -d "\"" -f 2 | sed "s/~/\/root/g"`
mpddir=`grep ^db_file /etc/mpd.conf | cut -d "\"" -f 2 | sed "s/db_file//g" | sed "s/\/database//g"`
if [ ! -d $pld ]; then
mkdir -m 0755 -p $pld
fi
if [ ! -d $mpddir ]; then
mkdir -m 0755 -p $mpddir
echo "created $mpddir"
fi
[ -x /usr/bin/amixer ] && amixer set Master,0 10%,10% unmute >/dev/null 2>&1
if [ -x /bin/nice ]; then
nice="nice -n -20"
fi
$nice /usr/bin/mpd
}
stop() {
service_stop /usr/bin/mpd
}
ogg-Dateien können unter Barrier Breaker problemlos abgespielt werden. Es müssen keine besonderen Vorkehrungen getroffen werden.
Die von mpd für das Abspielen von ogg-Dateien verwendete Bibliothek verwendet Fliesskomma-Arithmetik (floating point). Da den meisten, wenn nicht zur Zeit allen, Routern ein Fliesskommaprozessor (FPU) fehlt, ist das sehr rechenintensiv. Die Lösung dafür liegt in der Verwendung der Bibliothek libvorbisidec statt libvorbis, die mit einer reinen Integer-Arithmetik auskommt (siehe http://www.nslu2-linux.org/wiki/HowTo/BuildMpd).
Eine Installation von
opkg install libvorbisidec
reicht leider nicht aus. Nach einer Lösung wird gesucht (ohne gleich das ganze Packet selber bauen zu müssen).
Hier finden sich zahlreiche Clients:
http://mpd.wikia.com/wiki/Clients
Sehr komfortabel, wie eine Fernbedienung zu gebrauchen sind diese für Android oder iOS (Apple):
Android
iOS
Anhang | Größe |
---|---|
mpd. | 720 Bytes |