Viele kleine Ereignisse führten zu diesem Projekt.
Wen das alles nicht interessiert, hier geht es direkt zur Hardware.
Ich habe beschlossen, dieses HowTo zu schreiben, da ich in erster Linie für mich selbst die Schritte dokumentieren möchte, die ich aus vielen Foren zusammengetragen habe.
Nach vielen Jahren war Schluss mit Sky, nicht mal, weil es zu teuer war (Rückholerangebote zu Hammerpreisen habe ich jede Menge erhalten), sondern weil mir die penetrante und wenig abwechslungsreiche Werbung auf den Geist ging. Und die Eigenwerbung während den Sport-Übertragungen.
Also musste ein neuer Sat-Receiver her, und zwar einer, der alles kann, was der Sky-Receiver auch konnte: Twin-Tuner, Time-Shift, Aufnehmen und gleichzeitig anschauen auch bei Sendern auf verschiedenen Transpondern usw.
Aber wer hätte es gedacht: Die Sat-Receiver von Sky (bzw. Pace oder Humax) sind so ziemlich das beste an Sky. Sie funktionieren so, wie sie sollen, ohne den User groß zu fordern. Sie nehmen auf, sie schalten sich dafür ein, sie nehmen weiter auf, wenn man sie ausschaltet usw. usw.
Alles dies habe ich nach Jahren mit Sky als selbstverständlich erachtet, aber die Ernüchterung folgte dann auf dem Fusse. Kurzes Fazit: Wer das alles out-of-the-box möchte, der muss 200 Euro oder mehr investieren. Die von mir ausprobierten Receiver sind hieran gescheitert.
Die nächste Idee war dann eine vorhandene Fritzbox 6490 mit DVB-C zu nutzen, um irgendwie die Sender aufnehmen zu können. Dies führte schließlich zu diesem Projekt.
Die Hardware
Mit der folgenden Hardware habe ich die besten Ergebnisse erzielt:
Kabel-Anschluss von Unitymedia/Kabel Deutschland etc.
Wer das nicht hat, kann hier aufhören zu lesen
FritzBox 6490 ohne Branding mit Firmware 7.0
Auch gerne mit Branding und anderer Firmware, wichtig ist, dass die DVB-C Funktion freigeschaltet ist, denn die Box wird ja unser DVB-C
ServerRaspberry Pi 3 Model B
Der sollte aus meiner Sicht die Mindestanforderung sein, wer möchte, kann es auch einem Pi 2 versuchen.
Micro-USB Netzteil für den Pi
Möglichst das Original-Netzteil, auf jeden Fall eins, das stark genug ist und keine Stromschwankungen hat.
USB 3.0 to Ethernet Adapter
Hierbei geht es rein um Geschwindigkeit. Der Onboard Ethernet-Port kommt auf ca. 90 – 100 MBit/sec. Mit dem Gigabit-Adapter schafft man zwar auch kein Gigabit, da hier der USB 2.0 Port des Pi der Flaschenhals ist, aber ich habe mit iperf 270 – 280 MBit/s gemessen. das ist ca. 3 mal so schnell wie der Onboard-Port.
Netzwerkkabel
Externe USB-Festplatte mit eigener Stromversorgung
Auch hier gilt: Man kann es auch mit einer externen Festplatte mit Stromversorgung über USB versuchen. Da der Pi allerdings sehr empfindlich ist, was die Stromversorgung betrifft, setze ich auf Komponenten, die dem Pi möglichst wenig Strom wegnehmen.
Auch ein direktes Aufnehmen auf ein NAS ist möglich, dabei sollte man allerdings auf die Bandbreite achten, denn dann laufen der TV-Stream und die Aufnahme gleichzeitig über den Ethernet-Port, also die doppelte Bandbreite.
Micro-SDHC-Karte mit 16 GB
8 GB reichen wahrscheinlich auch, weil die große Datenmenge auf die Festplatte kommt.
HDMI-Kabel, USB-Maus, USB-Tastatur
Das wird nur zur zur Einrichtung benötigt, später steht der Pi irgendwo und der Zugriff erfolgt über SSH und/oder VNC
Ein Rechner, der SD-Karten lesen und schreiben kann
Ohne den geht’s nicht…
Ein Monitor (oder TV) mit HDMI-Port
Ohne den auch nicht…
Die Software
Alle benötigte Software ist Open-Source und kostenlos. Es gibt viele Ansätze, ich habe mit für LibreElec und TVHeadend entschieden.
LibreElec ist als Linux-Distro alles andere als erste Wahl, da sich die Distro fast an keine Linux-Standards hält. Das bedeutet googeln, googeln, googeln für Einstellungen, die bei einer normalen Distro innerhalb weniger Minuten erledigt sind.
Auf der anderen Seite bringt LibreElec alles mit, was wir brauchen, und das funktioniert dann auch „Out-of-the-BoX“.
Ein Hoch auf alle Nerds…
Ohne die zahlreichen Foreneinträge und How-Tos im Internet wäre dieses Projekt fast nicht möglich gewesen. Viele Einträge zu den gar nicht mal so wenigen Problematiken beim Aufbau eines solchen Systems haben bei der Realisierung geholfen. Ich werde in jedem Abschnitt auf die Quellen eingehen und sage einfach hier nochmal: Vielen Dank.
Besonders hervorheben möchte ich folgende Quelle:
Aus diesem HowTo habe ich das meiste Wissen gezogen, prinzipiell habe ich mich genau daran orientiert, nur dass ich LibreElec anstatt OSMC als Media-Center / Betriebssystem gewählt habe.
Was ich beim Leser voraussetze
Dieses How To richtet sich nicht an Leser, die völlig unbeleckt sind in den Themen Raspberry Pi, Linux, Netzwerk usw. Wenn man darüber hinaus noch Englisch einigermaßen gut beherrscht, ist das sicherlich von Vorteil. Auch die Nutzung von SSH oder VNC sollten keine Fremdwörter sein.
Los geht’s: Installation von LibreElec auf der SD-Karte
Ich mache es mir hier einfach, es gibt jede Menge Tutorials darüber im Web, fast alle sind in Englisch.
Viele Wege führen nach Rom, was die Installation von LibreElec (und jeder anderen Distro) für den Pi betrifft. Die aus meiner Sicht einfachste Installation mit NOOBS ist hier (in Englisch) auf thepi.io beschrieben:
Nach dem Booten wählt man hier das LibreELEC_RPiX aus, wobei das X im Idealfall eine 3 sein sollte. Ich habe im Web allerdings nur Screenshots mit X = 2 gefunden, also wenn es keine Version 3 gibt, dann nehmt diese.
Es gibt auch eine deutsche Anleitung auf maker-tutorials.com, die allerdings die Installation als Mediacenter beschreibt. Bei unserem kleinen Projekt soll der Pi aber nur aufnehmen, deshalb sollte man hier nur den Punkt „Image auf Micro SD-Karte kopieren und LibreELEC installieren“ benutzen:
Hier wird kein Noobs benutzt, sondern die Karte wird direkt mit dem LibreElec Image geflasht.
Wenn das alles funktioniert hat, dann schließt den Pi mit dem HDMI-Kabel an einem Monitor eurer Wahl an, verbindet Tastatur, Maus , externe Festplatte und Ethernet-Adapter mit den USB-Ports, steckt das Netzwerkkabel in den Adapter und verbindet es mit eurer 6490 direkt oder per Switch, schiebt die SD-Karte in den Slot, schaltet die externe Platte an und als letztes verbindet ihr den Pi mit dem Netzteil.
Wenn ihr alles richtig gemacht habt, sollte der Pi jetzt booten (entweder in NOOBS oder direkt in LibreElec) und nachdem LibreElec die SD-Karte für den vollen Einsatz formatiert hat erscheint Kodi, die Oberfläche, die irgendwie auch das Betriebssystem von LibreElec ist.
Startbildschirm LibreELEC
Passiert das nicht, dann müsst ihr wieder von vorne anfangen, dann ist irgendwas schief gelaufen. Hier lohnt es sich, mehrere SD-Karten zur Hand zu haben, denn das ist eine häufige Fehlerursache (aber meistens klappt es). Ansonsten hilft nur googeln, g…, ihr wisst schon.
Ein paar Vorbereitungen
SSH aktivieren
Damit wir zukünftig per SSH auf den Pi zugreifen können und uns damit die Tastatur und den Monitor für die Shell einsparen möchten, konfigurieren wir im nächsten Schritt. Dazu geht man wieder in die Einstellungen – LibreELEC – Dienste und aktiviert dort SSH. Das Kennwort lasst ihr besser aktiviert.
Um von Windows aus zuzugreifen könnt ihr unter der neuesten Windows 10 Version die Powershell benutzen oder ihr nehmt einfach putty.
Wenn ihr gerade hier seid, könnt ihr auch Samba aktivieren, falls ihr später z.B. per Windows-Dateifreigabe auf die Aufnahmen zugreifen wollt. Ich habe bei meiner Konfiguration auch SMB1 aktiviert, das kann ich allerdings nicht empfehlen, es seid denn, ihr kennt euer Netzwerk und wisst, was ihr tut. Ich hatte miteinem Client ein Problem und musste diese Einstellung aktivieren, aber man sollte möglichst nur SMB2 und SMB3 benutzen.
SSH und Samba aktivieren
Formatierung der Festplatte mit Ext4 Dateisystem
Damit unser System zukünftig auch Filme in HD aufnehmen kann, brauchen wir ein Dateisystem, dass nicht schon bei 4 GB Daten einbricht. Damit kommt z.B. Fat32, mit dem externe Festplatten vorformatiert sind, nicht in Frage. NTFS würde gehen und Linux kann das auch Lesen und Schreiben, aber zumindest für das Schreiben benötigt es dafür ein extra Paket.
Da wir hier mit Linux arbeiten, sollten wir auch ein in den Kernel integriertes Dateisystem verwenden, hier benutzen wir Ext4. Gerne kann es auch ein anderes System sein ohne 32 Bit Begrenzung.
Um herauszufinden, welche unsere externe HD ist, benutzen wir den Befehl
parted -l
Die Ausgabe sieht dann so ähnlich aus.
LibreELEC:~ # parted -l
Model: Seagate External Drive (scsi)
Disk /dev/sda: 320GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
3 1049kB 295GB 295GB primary ext4
2 295GB 320GB 24.7GB primary ext4
Model: SD 00000 (sd/mmc)
Disk /dev/mmcblk0: 32.0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 4194kB 541MB 537MB primary fat16 boot, lba
2 541MB 32.0GB 31.5GB primary ext4
/dev/mmcblk0 ist die SD-Karte (Ich habe hier eine 32 GB benutzt, was ich nicht empfehle, denn dabei kam es erstmal zu Schwierigkeiten, die man nur mit Expertenwissen lösen kann).
Davon lasst ihr die Finger. Eure Festplatte solltet ihr finden, bei mir ist es die /dev/sda.
Diese hat bei mir 2 Partitionen, das lag daran, dass ich die Platte so benutzt habe, wie sie war, da noch Daten drauf waren, die ich noch behalten wollte. Dass die Partitionen bei mir die Nummern 2 und 3 haben liegt daran, dass ich eine Partition gelöscht und dann die zweite erweitert habe, nachdem ich die Daten gesichert hatte.
Bei euch sollte das eigentlich so aussehen, dass dort nur eine Partition ist und diese die Nummer 1 hat. Wenn nicht, dann nehmt die Partition, die am größten ist.
Sorgt aber vorher dafür, dass dort keine Daten mehr gespeichert sind, die ihr noch braucht, denn nach den nächsten Schritten sind diese alle futsch!!!!
Also, mal angenommen, eure Ausgabe von /dev/sda sieht eher so aus:
LibreELEC:~ # parted -l
Model: Seagate External Drive (scsi)
Disk /dev/sda: 320GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 320GB 320GB primary fat32
Dann ist die Partition, mit der man arbeiten sollte /dev/sda1
Damit wir die Partition formatieren können, hängen wir sie vorher aus dem Dateisystem aus.
LibreElec hängt externe Festplatten von sich aus ein ohne dass man diese manuell mounten muss. Die Partitionen befinden sich dann unter /media/XXXX, wobei XXXX für den Namen der Partition steht.
LibreELEC:~ # ls -l /media/
total 8
drwxr-xr-x 4 root root 4096 Oct 18 23:10 100GB
drwxr-xr-x 6 root root 4096 Oct 18 23:12 TMP
Um diese auszuhängen, geben wir folgenden Befehl ein (das XXXX wird natürlich durch den Namen eurer Partition ersetzt):
umount /media/XXXX
Wenn keine Fehlermeldung kommt, dann hat alles geklappt und wir können die Partition mit Ext4 formatieren:
mkfs.ext4 /dev/sda1 -L XXXX
Nach Abschluss der Formatierung sollte parted -l jetzt eher so aussehen:
LibreELEC:~ # parted -l
Model: Seagate External Drive (scsi)
Disk /dev/sda: 320GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 320GB 320GB primary ext4
Damit steht der Aufnahme von langen Filmen in HD nichts mehr im Weg. Jetzt hängen wir die Partition wieder ein:
mount /dev/sda1 /media/XXXX
Einbinden des Gigabit-USB-Adapter
Um den GB-Adapter zu nutzen, muss das System ihn erkennen und einbinden. In der Regel ist das kein Problem, wenn der Chip von einem der bekannten Hersteller ist, bei mir ist es Realtek, und er Befehl lsusb zeigt diesen auch als Device 006 an:
LibreELEC:~ # lsusb
Bus 001 Device 006: ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter
Bus 001 Device 005: ID 7392:a812 Edimax Technology Co., Ltd
Bus 001 Device 004: ID 0bc2:0503 Seagate RSS LLC ST3250824A [Barracuda 7200.9]
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Damit der externe GBit-Adapter seine volle Leistung bringen kann, muss der Onboard-Ethernet Port (oben zu sehen unter Device 003), deaktiviert werden. Warum das so ist, weiß ich nicht, meine Tests mit iperf haben allerdings einen enormen Einbruch des Datendurchsatzes des GBit-Adapters gezeigt, wenn der Onboard-Adapter ebenfalls aktiviert ist. Diesen deaktivieren wir mittels einer Datei namens autostart.sh, die LibreElec automatisch bei jedem Systemstart ausführt. Diese muss erst angelegt und dann ausführbar gemacht werden:
Ebenfalls deaktivieren werden wir das Onboard-WiFi und -Bluetooth, das brauchen wir hier nicht und je weniger aktiviert ist, desto besser ist die Stabilität des Systems. Hierfür nutzen wir eine nützliche Funktion des Pi, die Blacklist. Diese bearbeiten oder legen Sie an mit folgendem Befehl:
Nach dem nächsten Reboot sind die Geräte deaktiviert, den machen wir dann später.
Ich benutze folgenden Gbit-USB-Adapter und der funktioniert bis jetzt sehr gut (dies ist kein Affiliate-Link, ich bekomme keine Provision): Yizhet USB 3.0 auf RJ45 Adapter
Der ist recht günstig und funktioniert, ob andere funktionieren, müsst ihr selbst austesten.
Das Ergebnis ist auf jeden Fall sehr gut, was die Geschwindigkeit betrifft:
Bei mir seht ihr noch ein WLAN-Gerät, es handelt sich hierbei um einen externen WLAN-AC-Adapter, den ich dazu nutze, um aus 2 Subnetzen über verschiedene Adapter auf den Pi zuzugreifen. Bei euch sollte das so aussehen, dass eth0 nicht erscheint, sondern nur eth1 und lo zu sehen sind.
Jetzt verpassen wir unserer Netzwerkkarte noch eine feste IP-Adresse, das macht es später einfacher bei der Tuner-Konfiguration. Hierzu wechseln wir wieder zur Kodi-Oberfläche und wechseln dort zu Einstellungen – LibreELEC – Verbindungen. Dort klickt ihr auf die „Wired“ (eth1) und anschließend auf „Bearbeiten“. Ändert jetzt die Einstellung unter IPv4 – IP Adressierungsmethode von „dhcp“ auf „manual“ und gebt eure feste IP-Adresse ein:
Manuelle IP-Adresse vergeben
Dann speichert ihr das ab und es geht zurück auf die SSH-Konsole.
Oh Tuner, where are thou
Die Fritzbox 6490 stellt euch 4 DVB-C Tuner zur Verfügung, d.h. ihr könnt bis zu 4 Programme gleichzeitig anschauen, aufnehmen oder beides mischen. Damit wird diese später in TV Headend nutzen können, brauchen wir 4 IP-Adressen auf unserem Ethernet-Gerät. Solltet ihr nur einen Tuner nutzen wollen, dann könnt ihr euch das folgende sparen, dann braucht ihr auch keinen extra GBit-Adapter.
Um alle 4 Tuner nutzen zu können, legen wir noch 3 virtuelle Netzwerkkarten an. Hierfür gibt es verschiedene Wege, ich habe mich für die bereits bekannte autostart.sh entschieden.
Diese rufe ich auf mit
LibreELEC:~ # nano .config/autostart.sh
und ergänze folgende Zeilen. Die IP-Adressen müsst ihr natürlich mit gültigen IP-Adressen aus eurem eigenen Netzwerk ersetzen. Ich benutze hier, dem Beispiel folgend, Werte aus dem Standard-Subnetz der Fritzbox:
Dann wieder mit STRG-o und STRG-x die Änderungen schreiben und den Editor schließen.
Damit wir gleich weitermachen können, gebt die 3 „ifconfig“-Zeilen jetzt nochmal nacheinander manuell ein, damit die virtuellen Netzwerkkarten vorhanden sind.
Als nächstes installieren wir das VNC Addon von LibreElec, zusammen mit dem bereits aktivierten SSH machen wir unser System damit headless und wir benötigen auch keine Maus und keinen Monitor mehr. Dieses Addon wird unter Addons – kleines Paketsymbol oben links – Aus Repository installieren – LibreELEC Addons – Dienste:
VNC installieren
Ab jetzt könnt ihr mit einem VNC Client, z.B. mit dem RealVNC Viewer, den Pi steuern. Damit könnt ihr jetzt den Pi von dem lästigen Ballast wie Maus, Tastatur und Monitor befreien. Jetzt wäre ein guter Zeitpunkt, den Pi herunterzufahren, irgendwo im Haus mit Netzwerkverbindung hinzustellen und wieder hoch zufahren. Müsst ihr aber nicht.
Ein Tipp noch: Ich musste beim VNC Viewer die Bildqualität von „Automatisch“ auf eine feste, z.B. „hoch“ einstellen, damit die Verbindung fehlerfrei funktioniert.
TVHeadend installieren
Jetzt ist es an der Zeit unsere eigentliche Steuerzentrale für TV und Aufnahmen zu installieren.
Den TVHeadend Server findet ihr dort, wo auch VNC zu finden war, unter Addons – kleines Paketsymbol oben links – Aus Repository installieren – LibreELEC Addons – Dienste:
TVHeadend Server installieren
Nach der Installation erreicht ihr den TVHeadend-Server unter der IP eures Pi auf Port 9981, z. B. http://192.168.178.80:9981/
Ich habe die Adresse mal als Link eingefügt, falls ihr die gleichen Adressen verwendet und alles funktioniert hat, dann könnte der Link jetzt auf euer TVHeadend Gui führen.
Nun geht es weiter mit…
TVHeadend konfigurieren
So, jetzt kommt wieder ein Teil, bei dem ich es mir einfach mache, denn hierzu gibt es eine richtig gute Anleitung,, die mir sehr bei der Einrichtung geholfen hat, und die ist sogar auf Deutsch.
Dort folgt ab Punkt „5.3 Konfiguration des AVM DVB-C Doppelempfängers in Tvheadend“ die Einrichtung des TVHeadend Servers und danach noch ein paar sehr gute Tipps:
Folgende Änderungen zu dem HowTo sind zu machen, um die vollen 4 Tuner nutzen zu können:
Unter Configuration – DVB Inputs – TV Adapters – Name eures Adapters stellt ihr DVBC-4 ein:
DVBC-4 einstellen
Für die einzelnen Tuner müsst ihr eure IP-Adressen eintragen, die ihr vorher erstellt habt, für jeden Tuner nehmt ihr genau eine der IP-Adressen, diese müssen pro Tuner einmalig sein:
IP-Adresse zuordnen
Ihr braucht nur einen einzigen EPG-Grabber, alle anderen könnt ihr deaktivieren:
EPG
Das Ergebnis
Ich hoffe, dass alles funktioniert hat, dann könnte das Ergebnis so ähnlich aussehen:
Programm GuideAufnahmen