Eigenen ErsatzTV-Sender in VU+ Settop-Box einbinden

IM EINSATZ?

Dann schau dir UNSEREN LOXKURS an und profitiere von unserem Wissen!

Ich hatte kürzlich ja per Short (YouTube-Link) gezeigt, dass ich ErsatzTV in Kombi mit meinem VU+ Sat-Receiver zum Laufen gebracht habe, um meinen eigenen Live-IP-TV-Sender in der Bouquet-Liste so mit einzubinden wie die normalen TV-Sender (ARD, ZDF, RTL und Co.), die vom Satelliten kommen. Ein Klick, der Stream rennt und man kann seinen Lieblingscontent bis in alle Ewigkeiten glotzen. Geil! 😀

Nach etwas Gefummel hab ich es jetzt auch geschafft mehrere Live-IP-TV-Sender über ErsatzTV auf der VU+ einzubinden – inklusive EPG-Informationen und Sender-Logos. Wie das geht, beschreibe ich im nachfolgenden Blogpost als Howto.

Hier nochmal das YT-Short (YouTube-Link) zum Einstieg (lasst gerne ein Like und Kanal-Abo da, sofern noch nicht geschehen – danke euch!):

Sie sehen gerade einen Platzhalterinhalt von Standard. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf den Button unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Weitere Informationen

Demnächst zeige ich natürlich auch, wie man ErsatzTV (externer Link) einrichtet und auf welche Details man bei den Settings achten sollte. Denn das Tool hat krasse Funktionen, die man aber erstmal verstehen muss. Und da brauche ich selbst noch etwas…

Chronologisch nicht korrekt, zeige ich an dieser Stelle deshalb schon mal, wie man fertig eingerichtete Sender in eine Enigma2-fähige Settop-Box – in diesem Fall eine VU+ Solo 4k (Affiliate-Link) – einbinden kann, welche ich vor Jahren schon mal kurz im Blogpost SAT-Anlage für bis zu 24 Teilnehmer mit nur einem Kabel – Minimalinstallation mit Maximalleistung gezeigt hatte.

Und die anscheinend immer noch State-of-the-Art ist – wobei es in der Zwischenzeit einfach keine wirklichen Weiterentwicklungen gegeben hat. Das Thema Live-TV ist wohl einfach „ausentwickelt“ – wie es für mich ausschaut. Denn wer unter 70 Jahren schaut heutzutage noch (freiwillig) Live-TV?!

UPDATE: Die Solo 4k scheint es nicht mehr zu geben, aber das technisch vergleichbare „Schwestermodell“ VU+ Uno 4K SE (Affiliate-Link) mit dem geilen FSC-Tuner schon. Und es gibt auch noch günstigere Varianten, welche natürlich auch funktionieren. Hab es auch gerade erst ohne Stress bei meinem Vater auf einer gefühlt uralten VU+ Zero (Affiliate-Link) eingerichtet. Auf allen Boxen ist übrigens Newnigma2 (externer Link) als Betriebssystem installiert.

Ersatz-TV-Stream checken

Bevor es an die Integration geht, erstmal den funktionierenden ErsatzTV-Stream (IP: 192.168.3.232) testen.

Im Terminal (hier Mac OS):

ffprobe http://192.168.3.232:8409/iptv/channel/500.m3u8

Dann sollte sowas hier kommen:

jay@Mac ~ % ffprobe http://192.168.3.232:8409/iptv/channel/500.m3u8
ffprobe version 7.1.1 Copyright (c) 2007-2025 the FFmpeg developers
  built with Apple clang version 16.0.0 (clang-1600.0.26.6)
  configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/7.1.1_2 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags='-Wl,-ld_classic' --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon
  libavutil      59. 39.100 / 59. 39.100
  libavcodec     61. 19.101 / 61. 19.101
  libavformat    61.  7.100 / 61.  7.100
  libavdevice    61.  3.100 / 61.  3.100
  libavfilter    10.  4.100 / 10.  4.100
  libswscale      8.  3.100 /  8.  3.100
  libswresample   5.  3.100 /  5.  3.100
  libpostproc    58.  3.100 / 58.  3.100
Input #0, mpegts, from 'http://192.168.3.232:8409/iptv/channel/500.m3u8':
  Duration: N/A, start: 1.400000, bitrate: N/A
  Program 1 
    Metadata:
      service_name    : "BoomTV"
      service_provider: "ErsatzTV"
  Stream #0:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 1280x720 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn
      Side data:
        cpb: bitrate max/min/avg: 4000000/0/0 buffer size: 7995392 vbv_delay: N/A
  Stream #0:1[0x101](deu): Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 195 kb/s

Oder im VLC -> Ablage -> Netzwerk öffnen: URL:

http://192.168.3.232:8409/iptv/channel/500.m3u8

Dann sollte ein Bild angezeigt werden.

Sender auf VU+ (Enigma2-Box) in Bouquet-Liste einbinden

Per SSH (Terminal) auf VU+ einloggen:

ssh -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa root@192.168.3.60

Zuständige Bouquet-Datei auf der VU+ öffnen, in der die Senderlisten verwaltet werden:

nano /etc/enigma2/userbouquet.favourites.tv

Falls nano nicht installiert ist, kann auch der „vi“ Editor genutzt werden. Oder aber einfach nano nachinstallieren mit:

opkg update
opkg install nano

In die userbouquet.favourites.tv müssen die gewünschten IP-TV-Sender von ErsatzTV rein:

#NAME Favourites (TV)
#SERVICE 1:0:19:283D:3FB:1:C00000:0:0:0:
#SERVICE 1:0:19:2B66:3F3:1:C00000:0:0:0:
#SERVICE 4097:0:1:0:0:101:0:0:0:0:http%3a//192.168.3.232%3a8409/iptv/channel/500.m3u8:BoomTV
#DESCRIPTION BoomTV
#SERVICE 4097:0:2:0:0:102:0:0:0:0:http%3a//192.168.3.232%3a8409/iptv/channel/501.m3u8:BoomTV Retro Action
#DESCRIPTION BoomTV Retro Action

In diesem Fall die Sender: BoomTV und BoomTV Retro Action

Zu beachten ist dabei:

  • Am Ende der Datei muss eine leere Zeile vorhanden werden, sonst wird der angezeigte Name des letzten Eintrags beschnitten. Der letzte Buchstabe fehlt dann.
  • Die Zeile mit #DESCRIPTION… erscheint unsinnig, wird aber benötigt, damit der bereits vorher definierte Name korrekt angezeigt wird.
  • Bei ErsatzTV bei FFmpeg Profiles -> Video -> Format -> mpeg-2 setzen! Sonst bleibt das Bild dunkel. Zumindest bei Standardplayer mit der ID 4097…

Zum Aufbau des Strings 4097:0:1:0:0:101:0:0:0:0…

  • Erste Stelle: ServiceType (4097) → Deklariert, dass es ein IPTV-Stream ist und der Standardplayer genutzt werden soll. Es gibt noch andere Player, wie den exteplayer3, der separat installiert werden muss und der mehr Codecs unterstützt. Er ist bspw. unter der 5002 verfügbar. Ich hab das aber bisher noch nicht getestet.
  • Dritte Stelle: ServiceID (1, 2, …) → Eindeutige Kennung pro Sender. Am besten aufsteigende Kennung nutzen.
  • Sechste Stelle: Namespace (101, 102, …) → Dient bei DVB zur Unterscheidung verschiedener „Satelliten/Netze“; bei IPTV ist es normalerweise 0. Wenn mehrere Sender eingebunden werden sollen, wird eine eindeutige Kennung benötigt, da sonst das Sender-EPG (dazu komme ich gleich) nicht korrekt zugewiesen werden kann. Am besten als Kennung die „ServiceID + 100“ nutzen (also 101, 102, etc), da diese IDs (ab 100) sicher noch nicht belegt sind.

Enigma2-GUI neu starten ohne kompletten Reboot, damit die Änderungen greifen:

init 4 && sleep 5 && init 3

Jetzt sollte der bzw. sollten die eingebundenen Sender auftauchen:

Natürlich noch ohne Sender-EPG und Logo – dazu kommen wir jetzt…

Sender-EPG auf VU+ einbinden

Im Chrome-Browser die von ErsatzTV bereitgestellte XML-Datei prüfen, in der die EPG-Informationen stecken:

http://192.168.3.232:8409/iptv/xmltv.xml

Sieht dann z.B. so aus:

<tv generator-info-name="ersatztv">
<channel id="C500.245.ersatztv.org">
<display-name>500 BoomTV</display-name>
<display-name>500</display-name>
<display-name>BoomTV</display-name>
<icon src="http://192.168.3.232:8409/iptv/logos/8FEBF3998307FE7158B2B2C9799A67D4.jpg?v=638942292010393515"/>
</channel>
<channel id="C501.246.ersatztv.org">
<display-name>501 Retro Action</display-name>
<display-name>501</display-name>
<display-name>Retro Action</display-name>
<category lang="en">Retro</category>
<category lang="en">Action</category>
<icon src="http://192.168.3.232:8409/iptv/logos/BD21EB4147A19AB1892A4730A9EB353E.jpg?v=638942292010393515"/>
</channel>

Gleich wichtig: ID C500.245.ersatztv.org und C501.246.ersatztv.org

Mapping Datei auf der VU+ öffnen:

nano /etc/epgimport/boomtvmapping.xml

und mit dem Inhalt füllen, damit die Ersatz-TV-Streams den Einträgen im Bouquet zugeordnet werden:

<channels>
  <channel id="C500.245.ersatztv.org">4097:0:1:0:0:101:0:0:0:0:http%3a//192.168.3.232%3a8409/iptv/channel/500.m3u8</channel>
  <channel id="C501.246.ersatztv.org">4097:0:2:0:0:102:0:0:0:0:http%3a//192.168.3.232%3a8409/iptv/channel/501.m3u8</channel>
</channels>

Sources-Datei öffnen:

nano /etc/epgimport/rytec.sources.xml

Mit Minimalinhalt füllen für ErsatzTV (alles andere löschen):

<?xml version="1.0" encoding="UTF-8"?>
<sources>
  <source type="gen_xmltv" channels="/etc/epgimport/boomtvmapping.xml">
    <description>BoomTV EPG</description>
    <url>http://192.168.3.232:8409/iptv/xmltv.xml</url>
  </source>
</sources>

Mit dieser Information weiss später das EPGImport-Plugin auf der VU+, woher die EPG-Informationen gezogen werden sollen.

Wieder mal Enigma2-GUI neu starten ohne kompletten Reboot:

init 4 && sleep 5 && init 3

Plugin auf VU+ installieren: epgimport

Auf der VU+ -> Blaue Taste -> Erweiterungen -> Rote Taste (Erweiterungen verwalten) -> Erweiterungen -> epgimport -> Grüne Taste (Installieren) -> Gelbe Taste (Ausführen) -> Grüne Taste (Start) -> warten -> OK-Taste drücken sobald fertig -> „Ausführung beendet. Möchten Sie die Benutzeroberfläche Ihrer Vu+ neu starten?“ -> Ja

Danach das Plugin epigimport einrichten:

Auf der VU+ -> Blaue Taste -> Erweiterungen -> EPGImport -> Blaue Taste (Quellen) -> auf (.) drücken -> BoomTB EPG wird ausgeklappt -> Anhaken -> grüner Haken erscheint -> Grüne Taste (Speichern) -> Gelbe Taste (Manuell) zum manuellen Aktualisieren -> Ja auswählen (EPG Import wird gestartet) -> Unten sollte angezeigt werden: „Letzte: Heute 8:29, 105 Ereignisse“ (siehe nachfolgender Screenshot):

Wichtige Settings bei ErsatzTV:

  • Settings -> XMLTV -> XMLTV Time Zone -> UTC

    Sonst werden die EPG-Informationen in der VU+ um 2h versetzt angezeigt weil Newnimga die +2h beim „Local“ Setting nicht checkt.
  • Settings -> XMLTV -> XMLTV Block Behavior -> Use Actual Times

    Für die VU+ sollte man in ErsatzTV beim XMLTV-Export „Use actual times“ wählen, weil nur damit die korrekten Start- und Endzeiten der Filme ins EPG übernommen werden.

Nun sollte der bzw. sollten die Live-IP-TV-Sender mit den passenden EPG-Informationen gefüttert sein:

Senderlogos (Picons) auf VU+ einbinden

Per Filezilla: boomtv_400x240.png nach -> /usr/share/enigma2/picon/ kopieren

Datei umbenennen, damit es der Channel-ID matcht:

cd /usr/share/enigma2/picon/
mv boomtv_400x240.png 4097_0_1_0_0_101_0_0_0_0.png

Alternativ als ein Befehl: Picon wird per SCP vom Mac direkt in das VU+ Picon-Verzeichnis kopiert:

Hier für den Hauptsender (BoomTV mit der ID 4097_0_1_0_0_101_0_0_0_0):

scp -O -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa \
/Users/jay/Library/Mobile\ Documents/com\~apple\~CloudDocs/Backup/plex/used/boomtv_400x240.png \
root@192.168.3.60:/usr/share/enigma2/picon/4097_0_1_0_0_101_0_0_0_0.png

Hier noch für den Spartensender (BoomTV Retro Action mit der ID 4097_0_1_0_0_102_0_0_0_0):

scp -O -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa \
/Users/jay/Library/Mobile\ Documents/com\~apple\~CloudDocs/Backup/plex/used/boomtv_retro_action_400x240.png \
root@192.168.3.60:/usr/share/enigma2/picon/4097_0_2_0_0_102_0_0_0_0.png

Jetzt die VU+ nochmal neustarten mit

init 4 && sleep 5 && init 3

und schon sollten die eigenen Live-IP-TV-Sender in der Senderliste (Favourites) angezeigt werden. Inklusive korrekten EPG-Informationen (was gerade und die nächsten Tage wann läuft) samt Senderlogo (hab ich übrigens per ChatGPT erstellen lassen im passenden Format (png mit transparentem Hintergrund mit 400×240 Pixel, am besten mit nur wenigen Farben).

Hier mal meine bisher erstellen Logos als Vorlage: BoomTV Senderlogos (1730 Downloads )

Aus meinem Täglichen Leben

So viel vorab zu dieser Integration, die bei meinen bisherigen Tests absolut zuverlässig lief. Auch mehrere Stunden am Stück ohne Probleme. Sobald ich ErsatzTV komplett verstanden habe – insbesondere wie man eigene Zeitfenster korrekt definiert mit bestimmten Inhalten und gewünschten Fillern (aka Werbung) – folgt ein weiterer Blogpost und/oder Video.

ErsatzTV feiere ich total. Auf meinem „BoomTV Retro Action“ Sender laufen jetzt mal testweise ganztägig Actionfilme auf den 80er- und 90er-Jahren, eingebunden in ErsatzTV per „Smart Collection“ mit dem Suchfilter

type:movie AND genre:action AND release_date:[1980 TO 1999] AND (actor:"Bruce Willis" OR actor:"Arnold Schwarzenegger" OR actor:"Tom Cruise" OR actor:"Sylvester Stallone" OR actor:"Will Smith" OR actor:"Nicolas Cage" OR actor:"Keanu Reeves" OR actor:"Wesley Snipes" OR actor:"Harrison Ford" OR actor:"Tom Hanks" OR actor:"Mel Gibson")

welcher auf meine Plex-Bibliothek zugreift und sich von dort alle Infos krallt.

Findet ihr die Integration genauso cool wie ich? Habt ihr evtl. sogar noch nen alten Enigma2/Newnimga-Receiver am Start, den ihr in Kombi mit ErsatzTV nutzen könnt/wollt? Hinterlasst gerne einen Kommentar und lasst uns Ideen austauschen!

UPDATE: Was ich gerade noch herausgefunden habe… Wenn man sekundenschnelles „Zapping“ zwischen den Live-IP-TV-Sendern und den „Normalo-TV-Sendern“ möchte, sollte man in ErsatzTV als Option unter

Channels -> Dein Sender -> Edit Channel -> Idle Behavior -> Keep Running

wählen. Dann läuft der Live-IP-IT-Sender dauerhaft weiter, wenn er einmal angezappt wurde, was die Zugriffszeit stark reduziert. In meinem Tests auf 1-2 Sekunden, was sich am Ende wirklich so anfühlt, als würde man gewöhnlichen TV-Sender konsumieren. Boom! Mehr kann man sich kaum wünschen.

UPDATE VOM 24.09.2025: Wer den/die Senderstream/s „dauerhaft“ am Leben halten möchte, läuft jedoch in ein Problem, welches ich im Nachfolgerblogpost ErsatzTV Guard-Script: Transcoding-Ordner vor dem Zumüllen schützen adressiert und gelöst habe. UPDATE ENDE

2 Kommentare
  1. Hallo Jörg, vielen Dank für den Blog und das Teilen der Informationen. Ich konnte damit meine XML aus TVHeadend als EPG Basis für IPTV Sender verwenden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte dir auch gefallen