Raspberry Pi UC mit Volumio
Volumio ist eine Software zur Wiedergabe von Musik von der Festplatte, aus dem lokalen Netz oder Internet. Mit einem Plugin können Sie zum Beispiel auch sehr einfach Spotify wiedergeben.
Die Bedienung der Software erfolgt über einen Browser oder eine App.
Die Distibution für den Raspberry Pi enthält im Normalfall keine grafische Oberfläche. Da wir die Software auch über das Touch Display vom Raspberry Pi bedienen möchten, erkläre ich hier, was Sie dazu durchführen müssen.
- Laden Sie sich die neueste Distrubition für den Raspberry Pi bei https://volumio.org/ herunter und installieren das Image wie üblich auf einer MicroSD-Karte. Schließen Sie an den Raspberry Pi Maus und Tastatur an, stecken Sie MicroSD-Karte in den Kartenslot und versorgen den Raspberry Pi mit Strom.
- Verbinden Sie den Raspberry Pi mit dem Internet
- Auf dem Display erscheint nach dem booten die Textkonsole. Logen Sie sich mit volumino als user und Passwort ein
- Achtung die Tastatur ist auf englisch eingestellt! Führen Sie den Befehl apt-get update und apt-get upgrade aus
- Führen Sie den Befehl apt-get install keyboard-configuration aus und stellen die Tastatur auf Ihre Landessprache um
- Führen Sie mit den Befehl reboot einen reboot durch
- Wechsel Sie jetzt zu einem anderen Rechner in Ihrem Netz, starten den Browser und tippen in die Adresszeile volumio.local ein. Nach einem Enter sollte jetzt die Oberfläche von Volumio erscheinen. Stellen Sie über den Wizard die Sprache usw. ein.
- Unter Plugins -> Suche Plugins -> Miscelleanea finden Sie ein Plugin für das Touch Display. Installieren und aktivieren Sie das Plugin.
- In den Einstellung zu dem Plugin sollten Sie den Mauszeiger aktivieren, wenn Sie das Programm auch mit der Tastatur und Maus bedienen wollen.
- Jetzt müssen Sie nur noch die config.txt an das 5" Touch Display anpassen. Am einfachsten ist es wenn Sie sich nach der Installation für den Raspberry Pi UC Schalter richten. In der switch.zip Datei bedinden sich die Konfigurationen für das den DSI und HDMI Anschluss.
Raspberry Pi UC Dual-Display
Seite Raspbian Buster kann der Raspberry Pi 3B / 3B+ und 4B mit zwei Bildschirmen arbeiten. Wenn Sie wie beim Raspberry PI UC ein DSI Display einsetzen und am HDMI-Anschluss einen Monitor bzw. Fernseher, dann können die beiden Displays eine Benutzeroberfläche bedienen.
Das Media Center Kodi kann allerdings immer nur auf einem Monitor ausgeben werden und würde immer auf dem DSI-Display ausgeben. Es wäre mit dieser Konfiguration also nicht möglich Filme an angeschlossenen TV wiederzugeben. Außerdem wäre das zweite Display auch nicht erforderlich.
Den Bildschirminhalt kopieren ist zwar auch möglich, aber die Auflösung wird dabei immer durch das DSI-Display festegelegt.
Ich habe daher die Fronttaste zum Umschalten zwischen dem DSI-Display und dem HDMI Anschluss eingerichtet.
Wie funktioiert das Umschalten zwischen DSI-Display und HDMI-Anschluss?
Im Verzeichnis /boot bedinden sich für das DSI-Display (Datei config.DSI) und dem HDMI-Anschluss (Datei config.HDMI) zwei Konfigurationsdatei. Je da dem ob die Ausgabe über das DSI-Display oder den Fernseher ausgeben werden soll wird die entsprechende Konfiguration nach config.txt kopiert und danach der Raspberry Pi neu gestartet.
Hier der Inhalt von der /boot/config.DSI (ACHTUNG Erste Zeile nicht Löschen, dient zur Erkennung der Konfiguration)
# !!!DSI-CONFIG!!!
start_x=1
dtparam=audio=off
disable_overscan=1
dtoverlay=i2c-rtc,ds1307
dtoverlay=hifiberry-dac
dtparam=i2c_arm=on
enable_uart=off
max_framebuffers=2
framebuffer_priority=0
gpu_mem=112
hdmi_ignore_cec_init=1
hdmi_ignore_cec=1
hdmi_blanking=0
Hier der Inhalt von /boot/config.HDMI
# !!!HDMI-CONFIG!!!
start_x=1
dtparam=audio=off
disable_overscan=1
dtoverlay=i2c-rtc,ds1307
dtoverlay=hifiberry-dac
dtparam=i2c_arm=on
enable_uart=off
ignore_lcd=1
display_default_lcd=0
max_framebuffers=2
framebuffer_priority=2
framebuffer_width=1920
framebuffer_hight=1080
gpu_mem=112
hdmi_force_hotplug=1
Um zwischen den Konfigurationen hin und her zu schalten benötigen Sie jetzt noch das /usr/sbin/changedisplay Skript:
#!/bin/bash
if [ "$(whoami)" != "root" ]; then
echo "Sorry, this script must be executed with sudo or as root"
exit 1
fi
grep "HDMI-CONFIG" /boot/config.txt
if [ "$?" -eq "0" ]; then
cp /boot/config.DSI /boot/config.txt
else
cp /boot/config.HDMI /boot/config.txt
fi
reboot
Durch Aufruf von changedisplay mit root rechten also sudo changedisplay können Sie zwischen den Displays hin und her schalten. Eine eventuell laufende Wiedergabe oder TV Aufnahme wird abei allerdings abgebrochen.
Wie Sie den Schalter mit den changedisplay Skript verbinden können, können Sie nachlesen unter Raspberry Pi UC Schalter
Raspberry Pi UC Installation
Hier möcht ich Ihnen zwigen, wie Sie Teilbereiche vom Raspberry Pi UC einrichten können. Ich gehe davon aus, dass Sie eine Distribution für den Raspberry Pi auf eine MicroSD Karte übertragen können, daher wird das nicht erklärt.
Raspberry Pi UC SSD mount
Beim Raspberry Pi ist das Mounten einer SSD nicht so einfach, wie bei einem herkömmlichen Linux PC, da die SSD beim Raspberry Pi 3B / 3B+ und 4B über den USB-Port angeschlossen wird. Wenn Sie die SSD nur in der fstab eintragen, dann kann es sein, dass diese manchmal nicht eingebunden wird. Das liegt daran, dass beim booten eventuell notwenige Treiber noch nicht geladen wurden. Im Netz findet man dann Lösungen die das Timing etwas verändern, aber auch hier ist nicht immer sichergestellt, das die SSD auch gemountet wird. Meine Lösung sieht wie folgt aus:
- SSD mit exfat formatieren (nur bei ersten mal)
- Eintrag der SSD in die fstab über UUID
- Über die rc.local prüfen, ob SSD gemountet wurde bzw. ggf. SSD mounten
Booten Sie den Raspberry Pi ohne das die SSD verbunden ist. Die M.2 SATA SSD muss erst formatiert werden, bevor Sie benutzt werden kann. Verbinden Sie nach dem botten die SSD mit einem USB-Port.
SSD formatieren:
Eine SSD sollte mit dem exfat Dateisystem formatiert werden. Exfat wurde speziell für Flashspeicher entwickelt und bietet kompatibilität zwischen Linux, Windows und MacOS. Wenn Sie die SSD auch an einem Windows PC nutzen möchten, dann müsen Sie diese auch über einen Windows PC mit exfat formatieren, sonst wird kein Laufwerksbuchstabe angelegt. Mit dem Befehl lsblk können Sie sich die angeschlossenen Massensteicher anzeigen lassen. An der Größe erkennen Sie einfach, um welches Device es sich handelt.
AME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465,8G 0 disk
mmcblk0 179:0 0 14,9G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 14,6G 0 part /
Im Beispiel ist die SSD unter /dev/sda geführt.
Bei einigen Distrubution ist exfat nicht installiert. Mit dem folgenden Befehl können Sie das nachholen:
sudo apt-get install exfat-fuse exfat-utils
Das Device sda formatieren Sie mit dem folgenden Befehl:
sudo mkfs.exfat -n "SSD" -s 512 /dev/sda1
Achten Sie darauf, das eine Partition angelegt wird. Sie Zahl 1 hinter dem sda ist wichtig!
fstab Eintrag erstellen:
Öffnen Sie eine Konsole bzw. Terminalfenster und führen den folgenden Befehl aus:
sudo blkid
/dev/mmcblk0p1: LABEL_FATBOOT="boot" LABEL="boot" UUID="6341-C9E5" TYPE="vfat" PARTUUID="ea7d04d6-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="80571af6-21c9-48a0-9df5-cffb60cf79af" TYPE="ext4" PARTUUID="ea7d04d6-02"
/dev/mmcblk0: PTUUID="ea7d04d6" PTTYPE="dos"
/dev/sda1: LABEL="SSD" UUID="F66F-9A46" TYPE="exfat" PARTUUID="edc355e2-01"
Öffnen Sie mit z.B. nano die /etc/fstab und tragen die SSD nach der Einträgen für die MicroSD-Karte ein (Ihre PARTUUID bitte verwenden!):
PARTUUID=edc355e2-01 /mnt/ssd exfat noauto,rw 0 2
Mounten einer über USB angeschlossenen SSD:
Das mounten einer über USB angeschlossenen SSD über den fstab Eintrag funktioert oft aus Timing Gründen nicht. Die einfachste möglichkeit ist den Mountstatus über die rc.local Datei überprüfen zu lassen und ggf. die SSD einzubinden, da die rc.local ganz zum Schluß beim booten ausgeführt wird.
Öffnen Sie die /etc/rc.local Datei und fügen folgendes am Ende vor Exit 0 ein:
ssd-mounter
Speichern Sie jetzt noch das folgende Skript mit Dateinamen ssd-mounter unter /usr/bin ab:
#!/bin/bash
#
# Copyright (C) 2020 Holger Klemm
#
# This script is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
cat /etc/mtab | grep "/mnt/ssd"
if [ "$?" -ne "0" ]; then
mount /mnt/ssd
if [ "$?" -eq "0" ]; then
echo "SSD found and mounted at /mnt/ssd"
fi
fi
Mit dem Befehl Sudo chmod 744 /usr/bin/ssd-mounter muss die Datei ggf. noch ausführbar gemacht werden.
Jetzt legen wir noch unter /mnt dem Mountpoint an:
cd /mnt
sudo mkdir ssd
Nach einem reboot sollte jetzt die SSD unter /mnt/ssd eingebunden werden.
Raspberry Pi UC Magenta TV
Das von der deutschen Telekom angebotene Magenta TV auf IPTV Basis ist eine tolle Sache. Die Wiedergabe von den unverschlüsselten TV Sendern über den VLC Player ist sehr einfach, mit Kodi hatte ich allerdings meine Probleme. Ganz zu schweigen, den IPTV Datenstrom aufzuzeichnen. Daher hier mein Tutorial zum Einrichten von Magenta TV mit Kodi/Tvheadend, dass auf einen Raspberry Pi läuft.
Als Basis verwende ich das neueste Raspbian Buster mit einem installierten Kodi. Das hat den Vorteil, dass ich Kodi beenden kann und über den Chrome Browser auch im Netz surfen kann. Bei Tvheadend kommt Version 4.2.8 zum Einsatz.
Installation der Software
- Installieren Sie über ein Terminalfenster Tvheadend und ggf. Kodi
Geben Sie bei der Abfrage nach einem User für das root login ein möglichst sicheres Passwort an, dass Sie sich notieren.
sudo apt-get tvheadend - Starten Sie kodi und klicken auf Addons -> Benutzer-Addons -> PVR-Clients
Installieren Sie den TVheadend HTSP Client
MagentaTV Sender einrichten
- Um die Einrichtung von Tvheadend starten zu können müssen Sie das Backend in einen Browser öffnen. Entweder Sie starten chrome auf Ihrem Raspberry Pi oder, wenn der Raspberry Pi im Netzwerk hängt, dann geht es auch mit einem anderen Rechner. Starten Sie das Backend durch Eingabe von <RECHNERNAME>:9981. Bei mir hat der Raspberry Pi den Rechnernamen "Kodi" also kodi:9981 eingeben.
- Nach dem Einloggen in das tvheadend startet der Wizard. Stellen Sie die Sprache auf German ein und klicken auf Save & Next
- Geben Sie bei Username "pi" an und ein Passwort, dass Sie sich notieren sollten. Der User und das Passwort wird später für das Einrichten vom Client benötigt!
Klicken Sie immer weiter, bis der Wizard geschlossen wird. - Öffnen Sie die Registerkarte Configuration -> DVB Inputs -> Networks
Klicken Sie auf Add - Wählen Sie IPTV Automatic Network und vergeben einen Netzwerknamen Ihrer Wahl z.B. MagentaTV
- Klicken Sie auf die Karteikarte Muxes. Öffnen Sie in einem neuen Browserfenster die Adresse https://db.iptv.blog/multicastadressliste. Gehen Sie z.B. auf die Adresse für VOX SD machen mir der rechten Maustaste einen klick und wählen Link-Adresse kopieren.
Wechseln Sie wieder zum tvheadend Browserfenster mit der Karteikarte Muxes, klicken auf Add und wählen das angelegte Network aus. Falls Sie in den allgemeinen Einstellen eine falsche Einstellung haben, dann klicken Sie im Add Mux Formlar ganz unten auf View Level Advanced.
Fügen Sie unter URL die gerade kopierte Link-Adresse vom VOX Sender ein. Geben Sie bei Mux name und Service name den Sender "VOX SD" ein. Stellen Sie den Scan Status auf Pend und das Interface auf eth0. Optional können Sie unter Icon URL den Link zu den Sendersymbolen angeben. Klicken Sie auf Create um den Sender anzulegen. - Warten Sie bis das Scan result auf OK steht. Wenn das nach einigen Minuten nicht der Fall ist, dann überprüfen Sie die URL. In unserem Beispiel ist die URL für VOX SD: rtp://Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!:10000
- Wenn das Scan result auf OK steht, dann wechseln Sie zur Karteikarte Services. Um den Kanal anzulegen wählen Sie den entsprechen Kanal aus und klicken auf Map selected.
Wählen Sie unter Services den VOX SD aus und entfernen die Haken. Schließen Sie den Prozess mit einen klick auf Map Services ab. Es erscheint der Service mapper. - Der letzte Schritt wird von vielen vergessen, der ist aber ganz wichtig, da bei einem Neustart die Konfiguration verlohren geht und Sie alles nochmal machen müssen!
Wechseln Sie daher noch mal zur Karteikarte Services. Stellen Sie bei allen Kanälen Automatic checking auf Auto check disabled. Ein aktiver automatic check macht die Konfiguration unbrauchbar. Klicken Sie auf Save um die Änderung an den Services zu speichern! - Wiederholen Sie ab Abschnitt 6. den Vorgang für alle Sender die Sie haben möchten.
Kodi Tvheadend HTSP Client einrichten
Starten Sie Kodi und klicken wieder auf Addons -> Benutzer-Addons -> PVR-Clients. Machen Sie auf tvheadend HTSP Client einen Doppelklick und klicken dann auf Konfigurieren. Tragen Sie unter Benutzername und Passwort den User und das Passwort ein, den Sie im Wizard (3. Punkt) angegeben haben. Nach einem Neustart ist die Einrichtung für MagentaTV abgeschlossen. Im Kodi Hauptmenü unter TV sollten jetzt alle angelegten Sender sichtbar sein und funktionieren.
PS: Manchmal erscheint bei der TV Funktion kein Bild. Nach einen Neustart sollte das Problem behoben sein.
Fall Ihr noch weitere Tipps und Tricks zum IPTV mit tvheadend habt, dann bitte Mailen. ich bin selber ein Profi, daher werden Fragen zu tvheadend NICHT beantwortet.
Videos abspielen
Das Abspielen der über Magenta TV aufgenommenen Video kann mit Kodi eventuell nicht funktionieren, da Tvheadend den MPEG4 Datenstrom am Videostart nicht sauber aufgenommen hat. Mit einen VLC Player lassen sich solche Videos dennoch abspielen. Wenn Sie die Videos mit Kodi abspielen wollen, dann müssen Sie die ggf. mit FFMPEG reparieren. Das geht zum Beispiel mit einem täglich cronjob. Hier ein Skript, dass die Videos repariert:
#!/bin/sh
find /mnt/ssd/tv-aufnahmen -type f -mtime -1 -name '*.ts' -exec sh -c 'x="{}"; cp "$x" "${x}_renamed"; ffmpeg -y -i "${x}_renamed" -copyts -map 0 -c copy -ignore_unknown "$x"; touch -d "24 hours ago" "$x"; rm "${x}_renamed"' \;
Passen Sie einfachen den Pfad /mnt/ssd/tv-aufnahmen , wo die TV Aufnahmen abgespeichert wurden an und speichern den cronjob unter /etc/cron.daily ab.