Prof. Dr. Detlef Kreuz

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.