Anleitungen für die Konfiguration des Einplatinen-Mini-Computers Raspberry Pi zum Internetradioempfänger gibt es bereits viele. Ich lege hier auch nicht wirklich eine schöne Anleitung, sondern eher ein Protokoll meiner Lösung mit Linksammlung speziell für den automatischen Empfang eines bestimmten, fest voreingestellten Senders ab.
Inhaltsgliederung
Mein Problem: Ich will den Internetstream von Radio Zinezine, dem Radio von Longo Maï, in der Küche hören können, ohne dort (oder irgendwo sonst dafür einen Rechner – außer dem Pi – anschalten zu müssen).
Meine Lösung: Den RasPi so konfigurieren, dass er hochfährt und automatisch mit dem Abspielen des Senders beginnt. Um auf Tastatur und Bildschirm am Pi verzichten zu können, muss ich zum ordentlichen Abschalten („Runterfahren“, denn es ist ja immerhin ein kleiner Rechner mit Raspian, einem vollwertigen Linux-Betriebssystem) einen Hardwarebutten anbringen, denn der fehlt dem RasPi in seiner Serienausstattung.
Und ein Hintertürchen für den Senderwechsel baue ich dann doch noch ein: Die Zugangsmöglichkeit per ssh und eine graphische Weboberfläche („web gui“) für das Radio ermöglichen Aktualisierungen, (Um-)Konfiguration des Systems und den Senderwechsel von einem im LAN benachbarten Rechner aus.
Bedienhinweise für das fertige System
Login per ssh:
sudo ssh pi@lokale-ip
pi : <Passwort>
Playliste bearbeiten:
sudo nano /var/lib/mpd/playlists/radiosender.m3u
Playliste laden:
pi@raspiradio:~ $ mpc load radiosender
Playliste neu laden:
mpc clear
1. Stream der Playlist starten:
mpc play 1
mpd starten/neu starten/anhalten:
sudo service mpd start/restart/stop
Testen, ob Shutdownbutton läuft:
ps -ef | grep python
Lautstärke regeln: pi@raspiradio:~ $ alsamixer
Weitere Details der Soundkonfiguration
web-gui namens ympd aufrufen:
http://localhost_bzw_lokale-ip:8080
Notwendige Einrichtungsschritte
Hardwareschalter anbringen
Als erstes Schalter am RasPi, in meinem Fall Raspberry Pi 1 Modell B Rev2, anlöten: In der „Selbstbau-Anleitung: Raspberry Pi Power Button“ steht alles drin.
Ergänzend hilfreich:
Außerdem:
- Pin-Belegungen am Raspi
- Grundlegendes zu Tastern
- Lady Ada über Taster
- Wirklich Grundlegendes: die Taster-Specs
- Grundsätzliches zu GPIO, den Eingängen des RasPi
Schließlich lässt sich das Schaltelement auch käuflich erwerben (6,40€). Das spart immerhin Teile zusammeklauben und löten. Aber richtig verkabelt und programmiert muss es dann immer noch werden…
Betriebsystem installieren
Raspian Jessi Lite installieren: Download und Anleitung
Nicht unwichtig beim folgenden: „The default login for Raspbian is username pi
with the password raspberry
.“
Per Ethernet-Kabel an eine freie Buchse eines mit dem Internet verbunden Routers anschließen, der automatisch lokale IPs vergibt (DHCP aktiv). Wenn Kabelverbindung nicht möglich, dann wlan verbinden.
Mit ifconfig
eigene IP im Lan herausfinden und als lokale_ip notieren.
Grundkonfigurationen des Betriebssystem auf der Konsole:
sudo apt-get update
undsudo apt-get upgrade
sudo raspi-config
: raspi-config aktualisieren, expand filesystem, lokalisierungen & tastatur, password ändern, hostname vergeben- ssh-zugriff freischalten:
Radioprogramm für die Kommandozeile installieren
Auf der Kommandozeile (per „cli“) das Radioprogramm mpd installieren.
Radio Zinezine in der Playlist eintragen: Quelle des Streams: http://91.121.65.189:8000/
sudo nano /var/lib/mpd/playlists/radiosender.m3u
(Das .pls-Beispiel bei fschreiner funktioniert nicht!)
Aufruf mit
mpc load radiosender
(ohne .m3u !)
mpc play 1
mpc automatisch starten beim Booten:
mpc play 1
in die /etc/rc.local
vor dem exit 0
einfügen, dann sollte immer automatisch beim Booten das Radio mit dem ersten Titel der Playlist gestartet werden.
optional: Weitere clients installieren
Noch ein paar weitere Radioprogramme („Clients“) installieren zum Rumspielen auf der Konsole und mit Web-GUIs:
Ich finde interessant:
- http://rybczak.net/ncmpcpp/
- ympd, nach Installation zu erreichen unter http://localhost_bzw_locale-ip:8080
Leider wieder abschalten musste ich:
- client 175, http://localhost_bzw_locale-ip:8008/static/index.html (Achtung: manuell angepasster http-Port wg. Überschneidung mit ympd!)
Zur Installation subversion nachinstalliert:
sudo apt-get install subversion
dann installation per svn wie hier beschrieben.
ABER:
# client 175: http://localhost_bzw_lokale-ip:8008/static/index.html
# bremst den sauberen shutdown aus.
# deshalb in /etc/rc.local auskommentiert, weil ich sein an und
# aus nicht sauber ans an und aus des mpd gekoppelt kriege.
Software für die Schalter zum sauberen Runterfahren
Per wget
und script installiert, siehe Raspbian: Automatisierte Installation der Software für den Raspberry Pi Power Button
Problem: autostart des pythonscripts shutdownbutton über /etc/rc.local
funktioniert nicht wie bei gtkdb vorgesehen.
Workaround: per /etc/init.de
autostarten, vgl. Raspberry Pi – run program at start-up
Hilfreich auch das RaspberryPi-Forum: Best way to run a python script at startup?
Weiteres Optionales
sehr nützlich: Beschriftung
Alle Schalter, Ein- und Ausgänge auf dem Case schön beschriften. Auch die LEDs sind alles andere als selbsterklärend…
Playliste um weitere Radiostationen ergänzen
Eine schöne Liste Freier Radios aus dem deutschsprachigen Bereich, gleich mit den direkten streaming-links. Auch nicht schlecht, die Adressliste bei freie-radios.de. Hab sie nicht auf Überschneidungen mit der ersten Liste geprüft…
und natürlich: Backup!
raspiBackup – Raspberry erstellt Backups von sich selbst
Standardkonfigurationsdatei auf /usr/local/etc/raspiBackup.conf
Oder eben händisch, Speicherkarte raus, in den großen Rechner und per dd
.
Geht schneller und es wird sich ja nicht viel ändern (außer Aktualisierungen), so hab ichs also gemacht:
sudo dd if=/dev/mmcblk0 | xz > /media/mois/dateninsel/backup/raspiradio/raspiradio_20151228.img.xz
Schrumpft das Image der 4GB-Speicherkarte auf 2,2GB.
Todo
eigentlich auch noch: SD-Karte schonen
Werden bestimmte Dateien regelmäßig erstellt oder geändert, z. B. Bilddateien einer Webcam oder Messwerte, sollten diese möglichst ins RAM oder einen USB-Speicher ausgelagert werden, denn das ständige Löschen und Wiederbeschreiben ist trotz aller schlauer Algorithmen der Controllerbausteine Gift für die Lebensdauer der SD-Karte. Ist jetzt bei einer reinen Nutzung als Streaming-Client nicht der Fall, aber irgendwelche Logs werden schon im Hintergrund geschrieben werden, z.B. Deshalb sollte für alle Dateien eine RAM-Disk eingerichtet werden – bei der sogar ein noch schnellerer Zugriff als Nebeneffekt hinzukommt. Netzmafia beschreibt dazu zwei Möglichkeiten (runterscrollen bis „Schreibzugriff auf SD-Karte reduzieren“!).
Hab das ganze noch nicht ausprobiert, daher hier noch eine kleine Linksammlung zum Thema:
- Protect your Raspberry PI SD card, use Read-Only filesystem
- Raspberry Pi Forum: [Tutorial] /var/log/ in eine Art RAMdisk auslagern & weitere Optimierungen bezgl. Logs
- Diskussion auf stackexchange zum Thema
Weiterführende Ansätze, hab ich auch alles nicht ausprobiert:
- ramlog system demon
- SD card write protect flag setzen per sdtool
- IPE R2 – Industrial Perennial Environment Release 2 aims to be a blackout-proof Linux distribution-alike for the Raspberry PI
- Nard SDK, ein komplett im Arbeisspeicher laufendes, Debian-kompatibles OS für den Raspberry Pi
- Abstürze verhindern per unabhängiger Stromversorgung („USV“), hardwareseitig.
schließlich: System (oder wenigstens /home) verschlüsseln
Der ungewöhnliche Boot-Prozess der Raspberry Pi macht es nicht ganz leicht, die Root-Partition vollständig zu verschlüsseln. Weiteres Problem: die begrenzten Hardware-Ressourcen zumindest der älteren Pi-Modelle.
Fällt auch unter todo, daher Linkliste:
- Verschlüsselte Root-Partition auf dem Raspberry Pi, ein Ansatz mit ArchLinux
- Vollverschlüsselter Raspi mit Kali Linux (wäre einen Versuch wert ob das auch mit Raspian klappt, sollte eigentlich, sind beides Debian-Derivate)
- Aber wenigstens das Home-Verzeichnis sollte verschlüsselt sein, geht jetzt auch ganz einfach: A Long Overdue Introduction: ecryptfs-migrate-home
Besonderheit fürs RasPiRadio: Bei der System- oder Homeverschlüsselung eines Systems, das automatisch booten soll und i.d.R. gar keinen Monitor und keine Tastatur angeschlossen hat, müsste der Key auf einem USB-Stick drauf sein, der zum Hochfahren eingesteckt werden muss, wie ein richtiger Schlüssel eben. Das scheint ecryptfs auszuschließen und nur mit dmcrypt/LUKS zu gehen (hier werden beide Methoden gegenübergestellt).
Oder die absolute Nerd-Lösung: eine morseartige Eingabe des Passworts über einen oder beide Taster…
die frage: wie viel downloadvolumen verbraucht eigentlich das zinezine-radio-hören? (das ist wichtig, wenn man einen ab einem bestimmten verbrauch gedrosselten internetzugang hat, z.b. per lte auf dem land, wo es nichts anderes gibt…)
nötiges vorwissen: die kleine radioempfangsbox ist auf den icecast /2 von zinezine eingestellt. der hat die bandbreite 48 kbit/s.
ich spare euch die formel… in der tabelle könnt ihr nachsehen, wie viele megabyte da dann pro stunde am tag usw. im monat zusammenkommen.
zusammengefasst:
wenn ihr mit 25 MB datenvolumen pro stunde und gerät rechnet, dann seid ihr auf der sicheren seite.
beispiel: wenn das ding 4 stunden am tag läuft, jeden tag im monat, dann kommen nicht ganz 3 gb im monat fürs radiohören zusammen.
und eine bürgerinitiative, die sich für die abschaffung der lte-drossel einsetzt, gibts auch schon: http://www.lte-drossel.de/