Himbeerradio
Der Raspberry Pi hat einen Kopfhörerausgang für einen 3,5mm Klinkenstecker. Wer den eigenen MP3-Player an die Musikanlage anschließt, um die Musik ohne Kopfhörer zu hören, besitzt das richtige Adapterkabel, um den RPi mit der Musikanlage zu koppeln. Was soll der RPi dort wiedergeben?
Wie wäre es mit einem Internetradio?
Ich wollte immer schon mal DRadio Wissen hören, ohne meinen Hauptrechner einschalten zu müssen. Unabhängig vom diesem speziellen Sender gibt es im großen, weiten Netz die eine oder andere hörenswerte Sendung, die der Kabelnetzanbieter nicht anliefert. Ein halbwegs vernünftiges Internetradio kostet um die 100 Euro. Was liegt näher, als sich selbst eines zu bauen?
Die Hardware ist vorhanden, fehlt nur noch die Software. Meine Wahl fällt auf den Music Player Daemon (MPD). Dieser gibt Musik (und andere Geräusche) aus diversen Quellen wieder und verwaltet Wiedergabelisten. Für MPD gibt es eine Reihe von Clients, mit denen sich MPD steuern lässt. Für den lokalen Zugriff auf der Kommandozeile eignet sich der Music Player Client. Damit kann der MPD relativ einfach mit Musikquellen versorgt werden. Für die eigentliche Bedienung bieten sich Clients für die Smartphone-Plattform der Wahl an. http://mpd.wikia.com/wiki/Clients führt weit über 100 Clients auf. Dort findet jeder sicher den geeigneten Client.
Die Installation von MPD und MPC ist auf dem Raspberry sehr einfach (ich nutze Arch Linux, wer Raspbian oder eine andere Distribution verwendet, kann das folgende einfach für sich anpassen):
pacman -S mpd mpc
MPC ist schon vollständig installiert. Lediglich MPD muss konfiguriert werden.
Da der MPD nicht für einen bestimmten Benutzer gestartet werden soll, ist eine
systemweite Konfigurationsdatei unter /etc/mpd.conf
anzulegen. Ich gebe hier
nur die Abweichungen vom Standard an:
music_directory "/var/lib/mpd/music"
playlist_directory "/var/lib/mpd/playlists"
db_file "/var/lib/mpd/mpd.db"
pid_file "/run/mpd/mpd.pid"
state_file "/var/lib/mpd/mpdstate"
user "mpd"
input {
plugin "curl"
}
input {
plugin "soup"
}
audio_output {
type "alsa"
name "ALSA"
device "hw:0,0" # optional
}
connection_timeout "60"
max_connections "10"
max_playlist_length "16384"
max_command_list_size "2048"
max_output_buffer_size "8192"
playlist_plugin {
name "m3u"
enabled "true"
}
playlist_plugin {
name "pls"
enabled "true"
}
Danach sind die relevanten Verzeichnisse anzulegen:
mkdir -p /var/lib/mpd/music /var/lib/mpd/playlists
Sofern nicht vorhanden, muss der Benutzer mpd
als Mitglied der Gruppe audio
hinzugefügt werden:
useradd -d/var/lib/mpd -Gaudio -M mpd
Nun kann der MPD durch Eingabe des Befehls
mpd
getestet werden. Wenn alles soweit funktioniert, wird MPD unter der Steuerung von systemd ausgeführt. Das hat den Vorteil, dass MPD nach einem Neustart des RPi automatisch gestartet wird.
systemctl activate mpd.service
systemctl start mpd.service
Mit Hilfe des Music Player Clients (MPC) kann für die abzuspielenden Streams der MPD einfach konfiguriert werden. Für eigene Streams besteht die Aufgabe darin, die entsprechenden URL's herauszubekommen, zu analysieren und die "richtigen" Befehle auszuführen. Hier ist meine Beispieldatei:
mpc clear
mpc load http://www.dradio.de/streaming/dradiowissen_hq_ogg.m3u
mpc load http://www.dradio.de/streaming/dkultur_hq_ogg.m3u
mpc load http://www.dradio.de/streaming/dlf_hq_ogg.m3u
mpc load http://www.ndr.de/resources/metadaten/audio/m3u/ndr2.m3u
mpc load http://mp3-live.swr3.de/swr3_m.m3u
mpc load http://live.radio-ton.de/live128.m3u
mpc load http://streams.br-online.de/bayern3_2.m3u
mpc del 8
mpc add http://edge.live.mp3.mdn.newmedia.nacamar.net/klassikradio128/livestream.mp3
mpc add http://edge.live.mp3.mdn.newmedia.nacamar.net/klassikradiolounge128/livestream.mp3
mpc add http://edge.live.mp3.mdn.newmedia.nacamar.net/klassikradiomovie128/livestream.mp3
mpc add http://edge.live.mp3.mdn.newmedia.nacamar.net/klassikradioopera128/livestream.mp3
Die meisten Sender liefern ihr Programm per Playlist aus, die aber nur einen
Stream enthält. Daher der Befehl mpc load
. Bayern 3 hat in seine Playlist
zwei Streams mit gleichem Inhalt, aber unterschiedlicher Kodierung aufgenommen.
Ich lösche einen davon. Sofern das Programm direkt als MP3 ausgeliefert wird,
muss der Befehl mpc add
genommen werden.
Jetzt muss nur noch der Raspberry Pi angeschlossen werden und mit
mpc play 1
wird das erste Programm gestartet. Ich höre DRadio Wissen. Mit
mpc stop
wird das Abspielen beendet und
mpc current
zeigt den aktuellen Stream an.
Einige Besitzer des RPi scheinen Probleme mit dem Audioausgang zu haben. Ich kann diese nicht nachvollziehen. Eine Möglichkeit ist in diesem Fall, auf einen USB-Soundstick zu wechseln. Dafür wäre die Konfigurationsdatei anzupassen.
Nun kann jeder den Client der eigenen Wahl ausprobieren und sich alles für den eigenen Bedarf konfigurieren. Übrigens, MPD spielt auch die eigene Musiksammlung ab.
Ich selbst überlege, den einen oder anderen Podcast automatisch
herunterzuladen, um ihn bequem über die normale Audioanlage anzuhören. Wer
will, kann den MPD so konfigurieren, dass die Streams nicht nur abgespielt,
sondern zusätzlich lokal gesichert werden. Hardwarebastler werden ein Display
realisieren, dass den aktuellen Stream (via mpc current
) anzeigt.
Mir gefällt es, das Radioprogramm über mein Smartphone auszuwählen. Die Qualität ist für meine Zwecke ausreichend. Bei einem Bedarf von ca. 3,5 Watt steht der Raspberry normalen Radios im Stromverbrauch in nichts nach, im Gegenteil.
Einen Nachteil gibt es aber noch: ich musste feststellen, dass NDR2 immer noch ein Dudelfunksender ist und nicht der spannende Sender meiner Jugend. Was solls, ich muss ihn ja nicht einschalten.