Warum denn noch eine DVB Seite?

Das ist eine gute Frage!
Eigentlich hat es mich gejuckt, auf einem Raspberry Pi 4 mobil fernsehen zu können. Und das war dann doch nicht so einfach.
Wahrscheinlich gibt es schon irgendwo so eine Anleitung dazu, ich habe sie aber nicht gefunden und deswegen diese Anleitung erstellt.

Zum besseren Verständnis fange ich mal bei Adam und Eva an:
Wenn das Internet nur durch langsame Leitungen tröpfelt und mobile Daten schlecht oder gar nicht verfügbar sind, das soll es auch heute noch geben, dann braucht man eine Lösung Inhalte anders empfangen zu können. Heutzutage ist alles digital, damit auch die Verbreitung von Medien über Funk. Wahlweise auf der Erde oder per Satellit. Das nennt sich dann DVB-T2 (http://www.dvb-t2hd.de) und DVB-S2 (https://www.ard-digital.de/empfang/dvb-s), also die 2. Generation.

Grundsätzlich unterscheiden sich die beiden System durch die verwendeten Empfangsmittel, von der Struktur der Nutzung aber nicht, und die beschreibe ich hier.
Vorneweg noch ein Hinweis: Diese Anleitung funktioniert nur für frei empfangbare Inhalte!
Wer also kommerzielle Inhalte schauen will, muss sich ein passendes Gerät kaufen.

Der grundsätzliche Aufbau

  1. Wie kommt der Datenstrom in meinen Computer?



    Im Wesentlichen sind das die Antenne und der Empfänger sowie der passende Kernel Treiber dazu.
    Ich habe mich für USB Geräte entschieden, weil sie an diversen Geräten betrieben werden können und leicht anzureihen sind, also mehrere Empänger an einem Gerät.
    Egal welcher Empfänger zum Einsatz kommt, der Linux Kernel erzeugt mit dem passenden Treiber ein Device dazu:
    /dev/dvb/adapter0/frontend0
    Sind mehrere Empgänger angeschlossen, so wird der Adapter hochgezählt. Unterstützt das Gerät mehrere Empfangsarten (DVB-C2, DVB-T2) dann wird das Frontend hochgezählt.
  2. Wie suche ich mir einen Sender aus?


    Mir perönlich sind zwei Open Source Lösungen bekannt:
    Das Ergebnis ist immer eine Streaming-Schnittstelle, die über Netzwerk (LAN/WLAN) genutzt werden muss.
  3. Wie schaue ich mir das Programm an?


    Auch hier gibt es viele Lösungen. Ich habe mich für Kodi entschieden (https://kodi.tv)

    Die Software läuft auf diversen Plattformen und unterstützt mit dem passenden Plugin auch den VDR.
Diese Kombination läuft stabil und ist leicht reproduzierbar.

Die Umsetzung

Schon vor längerem habe ich mal einen billigen Stick gekauft. Mein ursprüngliches Projekt habe ich zwar nie realisiert, aber den Stick habe ich noch.
Da kommen wir auch schon zu den Problemen, die ich hatte.
  1. Die Fenster in unserem Haus sind mit einem Wärmeschutz versehen der zwar Wäremstrahlung hinein, aber nur wenig hinaus lässt. Was ich nicht wusste, damit ist der Empfang von DVB-T2 im Haus extrem gedämpft, also praktisch unmöglich.
  2. Mein Wohnort liegt hinter zwei Hügeln, vom Sendemast aus gesehen. Um überhaupt etwas empfangen zu können, muss die Antenne im Obergeschoß im offenen Fenster stehen.
Wie schon erwähnt, habe ich einen Raspberry Pi 4 für meinen Versuch gewählt.
Die MicroSD Karte habe ich mit den mir passenden Parametern inklusive Lokalisierung und System Update normal erstellt.
Ob der USB-Stick vom Raspberry Pi erkannt wird lässt sich einfach kontrollieren: lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 005: ID 15f4:0131 HanfTek Astrometa DVB-T/T2/C FM & DAB receiver [RTL2832P] Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Jetzt muss man noch kontrollieren, ob der DVB Empfänger auch vom Kernel unterstützt wird: ls -l /dev/dvb/
drwxr-xr-x 2 root root 140 5. Mai 13:45 adapter0
Und schon sind wir beim nächsten Problem.
  1. Das Gerät hat zwei Fronends und wir brauchen das Zweite!
ls -l /dev/dvb/adapter0/
crw-rw----+ 1 root video 212, 0 5. Mai 13:45 demux0 crw-rw----+ 1 root video 212, 1 5. Mai 13:45 dvr0 crw-rw----+ 1 root video 212, 3 5. Mai 13:45 frontend0 crw-rw----+ 1 root video 212, 4 5. Mai 13:45 frontend1 crw-rw----+ 1 root video 212, 2 5. Mai 13:45 net0
Bei meinem Adapter kann nur der zweite Tuner (frontend1) DVB-T2. Das lässt sich mit dem DVB-Frontend-Tool aus der DVB-Toolbox kontrollieren. sudo apt install dvb-tools dvb-fe-tool
Es zeigt die Fähigkeiten des Adapters 0 Frontend 0 an. Also genau den Tuner, den der VDR benutzt.
Da bei meinem Tuner nicht DVB-T2 aufgelistet ist, brauche ich diese Lösung:
(https://www.vdr-portal.de/forum/index.php?thread/129861-gel%C3%B6st-problem-mit-hybrid-dvb-usb-stick-mit-zwei-frontends/)
sudo nano /etc/systemd/system/exchange-dvb-frontends@.service
[Unit] Description=exchange frontends for adapter %i on startup Wants=dev-dvb-adapter%i-frontend0.device Wants=dev-dvb-adapter%i-frontend1.device After=dev-dvb-adapter%i-frontend0.device After=dev-dvb-adapter%i-frontend1.device Before=vdr.service [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/mv -bS .orig /dev/dvb/adapter%i/frontend1 /dev/dvb/adapter%i/frontend0 ExecStart=/bin/mv /dev/dvb/adapter%i/frontend0.orig /dev/dvb/adapter%i/frontend1 [Install] WantedBy=multi-user.target
sudo nano /etc/udev/rules.d/98-dvb.rules
SUBSYSTEM=="dvb", TAG+="systemd"
sudo systemctl enable exchange-dvb-frontends@0.service sudo reboot
Danach hat das richtige Frontend die Nummer 0. Mit dem DVB-Frontend-Tool aus der DVB-Toolbox (siehe oben) kann man das kontrollieren. dvb-fe-tool
Mein USB-Receiver besitzt einen Infrarot Empfänger mit passendem Handsender. Der hat mir für Kodi zu wenig Tasten. Ich werde also meine Fernbedienung anlernen. Um heraus zu bekommen, welcher Empfänger und welches Protokoll verwendet werden, brauchen wir ir-keytable. sudo apt install ir-keytable
Dieses Paket braucht man unbedingt, sonst existiert das Verzeichnis "/usr/lib/udev/rc_keymaps" nicht. Ohne Parameter werden all Empfänger aufgelistet. ir-keytable
In meinem Fall nutze ich den Astrometa DVB-T2 und der ist unter rc2 zu erreichen. Dann schauen wir, ob die Fernbedienung erkannt wird und welches Protokoll die Fernbedienung verwendet. sudo ir-keytable -s rc2 -c -p all -t
Zum Beispiel lirc protocol(nec32) Wichtig ist auch die Default keymap rc-astrometa-t2hybrid
Jetzt brauchen wir noch eine Umsetzung der Scancodes in Tasten. sudo nano /usr/lib/udev/rc_keymaps/hama-src-4513.toml
[[protocols]] name = "HAMA SRC-4513" protocol = "nec" variant = "nec32" [protocols.scancodes] 0x9b443100 = "KEY_0" 0x9b44a101 = "KEY_1" 0x9b44a202 = "KEY_2" 0x9b44a303 = "KEY_3" 0x9b44a404 = "KEY_4" 0x9b44a505 = "KEY_5" 0x9b44a606 = "KEY_6" 0x9b44a707 = "KEY_7" 0x9b44a808 = "KEY_8" 0x9b44a909 = "KEY_9" 0x9b44001f = "KEY_VOLUMEUP" 0x9b440c15 = "KEY_VOLUMEDOWN" 0x9b441c56 = "KEY_CHANNELUP" 0x9b441742 = "KEY_CHANNELDOWN" 0x9b44460d = "KEY_ENTER" 0x9b441f47 = "KEY_ESC" 0x9b441e0c = "KEY_X" 0x9b441754 = "KEY_MENU" 0x9b441b10 = "KEY_LEFT" 0x9b440a11 = "KEY_RIGHT" 0x9b440e0b = "KEY_UP" 0x9b440e54 = "KEY_DOWN" 0x9b442a0b = "KEY_MUTE" 0x9b441517 = "KEY_POWER"
Dieses neue Keymapping muss aktiviert werden. In der Liste der rc_keymaps ist die Zeile mit der passenden Keymap anzupassen. Gegebenenfalls ist eine neue Zeile einzufügen. sudo nano /etc/rc_maps.cfg
#* rc-astrometa-t2hybrid astrometa_t2hybrid.toml * rc-astrometa-t2hybrid hama-src-4513.toml
Die Tastenbelegung lässt sich einfach mit diesem Kommando testen. sudo ir-keytable -s rc2 -w /usr/lib/udev/rc_keymaps/hama-src-4513.toml -t
Nach einem Reboot können die Scancodes ermittelt werden. sudo reboot
Nachdem die Hardware nun läuft, kommt die Software. Ich persönlich favorisiere KODI mit dem Plugin zur Anbindung an den VDR. sudo apt install vdr vdr-plugin-vnsiserver kodi kodi-pvr-vdr-vnsi
Während der Installation kann ein Verzeichnis für gespeicherte Videos erstellt werden.
Ebenfalls ist der Typ des DVB Empfängers festzulegen.

Die Kanalliste

Ohne Sendefrequenzen geht beim VDR gar nichts. Mir hat diese Seite dabei weiter geholfen. http://vdr-wiki.de/wiki/index.php/VDR_mit_DVB-T2_unter_Debian
Zum Scannen der DVB-Frequenzen gibt es aus den bereits installierten DVB-Tools den DVB-Scanner.
Bevor wir aber loslegen können, muss der VDR gestoppt werden. Sonst hat der Scanner keinen Zugriff auf die Hardware. sudo service vdr stop
Weiterhin braucht der Scanner eine Frequenzliste zum Scannen. Für Deutschland gibt es dazu diese Website http://www.dvb-t2hd.de und unter Downloads http://www.dvb-t2hd.de/downloads gibt es die aktuelle Liste der DVB-T2 Sendestandorte und Kanäle.
Wie die Startliste aufgebaut ist, erklärt diese Seite. https://www.linuxtv.org/wiki/index.php/Dvbv5-scan Aus beidem zusammen habe ich mir diese Liste erstellt. nano start-channels
[CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 474000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 482000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 490000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 498000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 506000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 514000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 522000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 530000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 538000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 546000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 554000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 562000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 570000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 578000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 586000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 594000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 602000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 610000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 618000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 626000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 634000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 642000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 650000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 658000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 666000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 674000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 682000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 690000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 698000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 706000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 714000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 722000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 730000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 738000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 746000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 754000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 762000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 770000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 778000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 786000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 794000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 802000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 810000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 818000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 826000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 834000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 842000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 850000000 BANDWIDTH_HZ = 8000000 [CHANNEL] DELIVERY_SYSTEM = DVBT2 FREQUENCY = 858000000 BANDWIDTH_HZ = 8000000
Jetzt muss die Antenne noch eine gute Empfangsposition haben und dann kann es los gehen. Ich persönlich musste mit der "Stummelantenne" auf den nächsten Hügel fahren, um überhaupt etwas zu empfangen. Dann können die gefundenen Kanäle nicht direkt geschrieben werden, sondern müssen erste einmal zwischengespeichert werden. dvbv5-scan -O vdr start-channels -F -o channels.conf sudo cp channels.conf /var/lib/vdr/channels.conf Das Programm läuft eine ganze Weile ...
Dabei werden alle gefundenen Sender angezeigt.
Sobald die Kanalliste kopiert ist, kann der VDR mit der neuen Liste gestartet werden. sudo service vdr start
Das war's, wenn jetzt der Kodi gestartet wird, kann er mit der Infrarotfernbedienung gesteuert werden und es kann fern geschaut werden.
Wem das zu umständlich ist, der kann auch einfach den VLC Player (https://www.videolan.org/vlc/) verwenden. Der kann den DVB-T2 Empfänger direkt nutzen. Allerdings kann VLC keine Kanalsuche. Eine Anleitung gibt es hier: https://www.vlc-forum.de/thread/908-tv-empfang-f%C3%BCr-dvb-t-t2-dvb-s/