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/