Sundtek Support Forum

Deutsch => {Single, Dual, Quad} Sundtek SkyTV Ultimate => Thema gestartet von: Surfer2010 am April 14, 2019, 11:13:06 Vormittag

Titel: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: Surfer2010 am April 14, 2019, 11:13:06 Vormittag
Hallo allerseits,

hier eine kleine Anleitung mit der man den Sundtek TV-Stick in einem Docker Container nutzen kann.

1.)   Nodes auf dem HOST erstellen (auf dem Hostsystem):

Einen persistenten Ordner erstellen der mit KEINEM „noexec“ in den Docker Container als   /config   eingebunden wird.
(in   /etc/openmediavault/config.xml   noexec kontrollieren)

cd <<config-folder on host>>
wget http://sundtek.de/media/sundtek_netinst_testing.sh
chmod 777 sundtek_netinst_testing.sh
./sundtek_netinst.sh –createnodes
(hier werden die –leeren- nodes erstellt, so dass sie in den Docker-Container integriert werden können)

2.)   Treiber für den Stick installieren (im Docker Container):

/config – Ordner ist ein persistenter Ordner mit exec-Permission
cd /config
./sundtek_netinst_testing.sh -docker -use-custom-path=/config


3.)   Container muss neu gestartet werden.
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: rosenrot am August 01, 2019, 02:00:19 Nachmittag
Vielen Dank für die Anleitung. Leider erhalte ich folgende Fehlermeldung bei der Installation im Docker Container:

adding /opt/bin to environment paths
unpacking...
checking system... overriding SYSTEM parameter with armsysv
installing (netinstall mode) ...
Downloading architecture specific driver ... armsysv
Download finished, installing now ...
Starting driver...
./sundtek_netinst_testing.sh: line 1773: /conf/opt/bin/mediasrv: not found
done.

Die Datei ist dort vorhanden, aber ich kann sie nicht ausführen. Auch nicht manuell.

root@cf85fef6ee45:/conf# ls -l /conf/opt/bin/
total 5245
drwxr-xr-x 2 root root    1024 Jul 31 16:35 audio
drwxr-xr-x 2 root root    1024 Jul 31 16:35 dvb
-rwxr-xr-x 1 root root     380 Jul 31 16:35 getinput.sh
-rwxr-xr-x 1 root root    1250 Jul 31 16:35 lirc.sh
-rwxr-xr-x 1 root root  357508 Jul 31 16:35 mediaclient
-rwsr-xr-x 1 root root 5006636 Jul 31 16:35 mediasrv
root@cf85fef6ee45:/conf# ./conf/opt/bin/mediasrv
bash: ./conf/opt/bin/mediasrv: No such file or directory

Ich verstehe dieses Problem nicht.

Ich bin im Chat!
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: Sundtek am August 01, 2019, 04:43:00 Nachmittag
Du hattest die falsche Version von dem Docker Image und die DVB Parameter falsch bei der Container Erstellung angegeben (laut der externen Container Dokumentation welche Du mir gezeigt hast war das aber in der Tat etwas verwirrend).
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: BoBeRzE am August 17, 2019, 11:27:13 Vormittag
Hallo,

ich nutze auch diesen Weg. Klappt im Moment ohne Probleme solange man den Host nicht neustartet.

ich habe via crontab -e das diese Zeile hinzugefügt:

@reboot sh /sundtek_netinst_testing.sh -createnodes

das Script liegt im Root-Verzeichnis vom Host. Leider klappt das ganze nicht.

Wie sollte man am besten vorgehen damit die Device-Nodes vor dem Start der Dockercontainer automatisch angelegt werden? Könnte man das nicht über udev regeln? So würden die Nodes auch angelegt werden wenn man einen neuen Tuner zur Laufzeit ansteckt?

Ich kenne mich unter Linux nicht wirklich aus aber wenn mir jemand von den Profis einen kleine Hilfestellung gibt bekomme ich das sicherlich hin :)

Vielen Dank

Nachtrag: ich nutze Ubuntu 18.04.3 LTS
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: BoBeRzE am August 18, 2019, 12:51:15 Vormittag
Ich habe es nun hinbekommen. Mit folgenden Befehlen (auf dem Host) klappt es nun:

1. Crontab als Root aufrufen

sudo crontab -e
2. Folgende Zeile einfügen (Es erscheint beim 1. Start von Crontab eine Auswahl welcher Editor verwendet werden soll. Ich habe nano genutzt)

@reboot /bin/mkdir -p /dev/dvb/adapter0 && /bin/mknod /dev/dvb/adapter0/frontend0 c 212 1
In meinen Tests ist es nicht notwendig gewesen die Nodes für dvr0 und demux0 ebenfalls anzulegen. Es muss zum Start des Containers einfach ein Gerät unter /dev/dvb/adapter0 (im Beispiel frontend0) existieren.

Im Container werden dann vom Treiber die ganzen Tuner unter /dev/dvb/adapter* angelegt. Ich nutze mehrere Tuner an meinem Docker-Host und es werden alle korrekt im Container angelegt.

Falls ich was vergessen habe, wäre es schön wenn die Profis melden :)
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: sezz am Dezember 15, 2019, 11:44:41 Nachmittag
Wie zuverlässig funktioniert das bei euch?

Hintergrundinfos, warum ich frage:

Momentan teste ich den Stick an einem Synology DS1618+ mit Treiber Paket (v0.38 laut INFO file, Änderung der Rechte bzw. den zusätzlichen User habe ich aus den Scripts vor der Installation entfernt, sonst startet mir Tvheadend nicht) + Tvheadend Paket (tvheadend-testing_denverton-6.1_4.4.20181215-1.spk), irgendwann geht dann aber nichts mehr :o

Fehler laut dmesg (wird dauerhaft wiederholt, scheint lt. Suche nicht unbekannt zu sein):

[171958.693258] usb 1-2.3: usbfs: USBDEVFS_CONTROL failed cmd mediasrv rqt 64 rq 187 len 2 ret -110

Der Treiber findet dann den Adapter nicht mehr, obwohl er am NAS erkannt wird.

|__usb1          1d6b:0002:0404 09  2.00  480MBit/s 0mA 1IF  (Linux 4.4.59+ xhci-hcd xHCI Host Controller 0000:00:15.0) hub
  |__1-1         f400:f400:0100 00  2.00  480MBit/s 200mA 1IF  (Synology DiskStation 7F00954DB181C653)
  |__1-2         0bda:5411:0104 09  2.10  480MBit/s 0mA 1IF  (Generic 4-Port USB 2.0 Hub syno.ext.hub) hub
    |__1-2.3     2659:1805:0000 00  2.00  480MBit/s 400mA 1IF  (Sundtek eLight U191206143242)

Aus- und einstecken hilft zwar temporär, aber das ist keine Dauerlösung.

Über Docker wärs mir sowieso lieber, da ich die restlichen Anwendungen auch alle darüber laufen habe, aber wenn das generell nicht stabil läuft investiere ich lieber keine Zeit mehr und schick den Adapter und das NAS einfach zurück (meine TechnoTrend TT-budget S2-4100 funktioniert seit Jahren problemlos im derzeitigen Linux Fileserver, ich wollte den Dinosaurier halt weg haben ::)).
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: Sundtek am Dezember 16, 2019, 05:41:27 Vormittag
-110 heißt dass der Tuner abgesteckt/entfernt wurde. Es gab mal ein paar Kommentare wo jemand erwähnt hat dass USB Standby (vom Host Controller) so ein Problem ausgelöst hat (werde das im Laufe des Tages raussuchen).

Mit unserem Synology DS216J gibt's überhaupt keine Probleme
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: sezz am Dezember 16, 2019, 02:00:33 Nachmittag
-110 heißt dass der Tuner abgesteckt/entfernt wurde. Es gab mal ein paar Kommentare wo jemand erwähnt hat dass USB Standby (vom Host Controller) so ein Problem ausgelöst hat (werde das im Laufe des Tages raussuchen).

Selber Fehler nach ein paar Stunden wieder, könnte wirklich damit zusammenhängen.

Mit unserem Synology DS216J gibt's überhaupt keine Probleme

Hat das DS216J denn genug Leistung? Ich hätte noch ein DS213J herumstehen, das ist nur minimal langsamer als das DS216J, aber da schläft man beim Aufmachen von DSM selbst schon fast ein ;)
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: sezz am Dezember 18, 2019, 12:29:26 Nachmittag
-110 heißt dass der Tuner abgesteckt/entfernt wurde. Es gab mal ein paar Kommentare wo jemand erwähnt hat dass USB Standby (vom Host Controller) so ein Problem ausgelöst hat (werde das im Laufe des Tages raussuchen).

Selber Fehler nach ein paar Stunden wieder, könnte wirklich damit zusammenhängen.

Okay, läuft jetzt 30 Stunden ohne Fehler auf dem DS1618+ unter DSM 6.2.2-24922 Update 4.
Mein Script unter /usr/local/etc/rc.d/disable-usb-suspend.sh um autosuspend zu deaktivieren wenn der Stick beim Hochfahren angesteckt ist (habe keine elegantere Lösung gefunden auf die Schnelle):

#!/bin/bash

VENDOR="2659"
PRODUCT="1805"

set -euo pipefail
IFS=$'\n\t'

for DIR in $(find /sys/bus/usb/devices/ -maxdepth 1 -type l); do
        if [[ -f $DIR/idVendor && -f $DIR/idProduct && $(cat $DIR/idVendor) == $VENDOR && $(cat $DIR/idProduct) == $PRODUCT ]]; then
                echo on > $DIR/power/control
                echo -1 >/sys/module/usbcore/parameters/autosuspend
                echo 0 > $DIR/authorized
                sleep 0.5
                echo 1 > $DIR/authorized
        fi
done

exit 0
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: Sundtek am Dezember 31, 2019, 12:51:05 Nachmittag
Soweit ich mich erinnern kann haben wir vor langer Zeit die Option eingebaut alle Skripte automatisch zu starten welche in /etc/sundtek abgelegt werden sobald der Treiber gestartet wird.
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: sohoppeltderhase am April 24, 2020, 10:27:41 Vormittag
Hi in die Runde,

habe ich das zum einen richtig verstanden, dass der Treiber nur für ein Alpine Docker Image funktioniert, auf dem das große TVHeadend Image im Docker Hub basiert?

Habe es nämlich mit einem selbst gebauten TVHeadend Container auf Ubuntu Bionic basierend probiert, leider ohne Erfolg.


Ist das ganze mittlerweile denn auch in dem stable Treiber drin oder muss man weiterhin den testing nehmen?


Beste Grüße
Nic
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: Sundtek am April 28, 2020, 10:15:33 Vormittag
Hallo,

welches Docker Images ist das? X86-64, ARM(32/64)?
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: sohoppeltderhase am April 29, 2020, 01:23:17 Nachmittag
Hi,

ich habe mit dem X86-64 Ubuntu Image probiert und TVHeadend nachinstalliert. Damit hat es nicht hingehauen.

Mit dem linuxserver/tvheadend aus dem Docker Hub, das auf Alpine Linux basiert, klappt es. Man muss nur einen anderen Config Pfad wählen, weil /config von diesem Image schon für die TVHeadend Config vorgesehen ist.

Ich werd mir ne ordentliche Dokumentation zu der ganzen Sache basteln, wenn es dann so weit ist wie ich es will. Die kann ich dann gerne hier teilen.


Beste Grüße
Nic
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: 3x3cut0r am Mai 04, 2020, 08:13:31 Vormittag
Hi
Bei mir läuft es jetzt auf meiner Synology DS918+

Was habe ich gemacht?
1) Sundtek Paket aus dem Repo für meine Synology installiert (v0.38)
- Haken bei "Only create /dev/dvb nodes for Docker" setzen!
- Die Karte wird/darf?! im Treiber/App nicht angezeigt werden!
(- man kann diesen Schritt aus auslassen und bei 3) das script dort mit "./sundtek_netinst.sh -docker" ausführen)

2) Gemeinsame Volumes/Ordner erstellt: /volume1/docker/tvheadend:
/volume1/docker/tvheadend/config
/volume1/docker/tvheadend/picons
/volume1/docker/tvheadend/sundtek

3) script laden und in /volume1/docker/tvheadend/sundtek legen:
cd /volume1/docker/tvheadend/sundtek
wget http://sundtek.de/media/sundtek_netinst.sh
chmod 777 sundtek_netinst.sh
(./sundtek_netinst.sh nicht ausführen, da die nodes schon von 1) vorhanden sind!)

4) Docker Container starten/installieren:
docker network create tvheadend-net
docker container run -d --restart always \
    --name tvheadend \
    --network tvheadend-net \
    -e PUID=1024 \
    -e PGID=100 \
    -e TZ=Europe/Berlin \
    -p 9981:9981 \
    -p 9982:9982 \
    -v /volume1/video/recordings/tvheadend:/recordings \
    -v /volume1/docker/tvheadend/config:/config \
    -v /volume1/docker/tvheadend/picons:/picons \
    -v /volume1/docker/tvheadend/sundtek:/sundtek \
    -v /etc/localtime:/etc/localtime:ro \
    --device /dev/dri:/dev/dri \
    --device /dev/dvb:/dev/dvb \
    --device=/dev/bus/usb \
    linuxserver/tvheadend:amd64-latest


5) in den Docker Container verbinden
docker container exec -it $(docker container ls -q --filter=name=tvheadend) /bin/bash
root@d2d92d6e0a3c:/# cd /sundtek
root@d2d92d6e0a3c:/# ./sundtek_netinst.sh -docker -use-custom-path=/sundtek
# Installation mit "J" bestätigen
root@d2d92d6e0a3c:/# exit

6) Container neustarten
docker container restart tvheadend
7) ggfls. NAS neustarten

Danke!
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: Sundtek am Mai 05, 2020, 07:56:21 Vormittag
Der Treiber darf auf dem Host-System nicht installiert sein wenn Du den Treiber im Container verwenden möchtest.

Docker ist bezüglich dem Durchreichen von Geräten nicht so toll, aber es geht.

Auf dem host:
sundtek_netinst.sh -createnodes ausführen

danach das Docker System starten und im Docker folgendes ausführen:
sundtek_netinst.sh -docker

Das Docker Image hast Du bereits richtig installiert.
Die ganze Docker Geschichte ist etwas für Anwender die bereits etwas mehr Erfahrung haben, wir geben hier nur das Toolset mit um's dort auch integrieren zu können; Die Integration muss Aufgrund der Vielfalt dann aber selber durchgeführt werden.
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: idontknowjack am Mai 05, 2020, 05:54:14 Nachmittag
Hallo zusammen,

mir geht es ähnlich wie „3x3cut0r“ ich habe auf einem Raspberry Pi 4 Mod. B 4GB das aktuelle Raspbian Buster Lite installiert und Docker laufen. Im Einsatz sind zwei Sundtek DVBC Sticks die bisher an meinem alten Raspberry PI 3 Mod. B ohne Docker im Einsatz waren.

Folgende Ordner habe ich erstellt:

/home/pi/tvheadend/config
/home/pi/tvheadend /picons
/home/pi/tvheadend /sundtek

Gemountet als share ist ein USB Stick an der Fritzbox unter:

/home/pi/FRITZ/Aufnahmen

Auf dem Host erfolgreich ausgeführt im Ordner /home/pi/tvheadend /sundtek:

wget http://sundtek.de/media/sundtek_netinst.sh
sudo chmod 777 sundtek_netinst.sh
sudo ./sundtek_netinst.sh -createnodes

Docker Container erfolgreich gestartet und Webinterface erreichbar:

docker container run -d  \
--restart unless-stopped \
--name tvheadend \
--device /dev/dri:/dev/dri \
--device /dev/dvb:/dev/dvb \
--device=/dev/bus/usb \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/Berlin \
-p 9981:9981 \
-p 9982:9982 \
-v /home/pi/tvheadend/config:/config \
-v /home/pi/tvheadend/picons:/picons \
-v /home/pi/tvheadend/sundtek:/sundtek \
-v /home/pi/FRITZ/Aufnahmen:/recordings \
-v /etc/localtime:/etc/localtime:ro \
linuxserver/tvheadend:latest

Console vom Docker Container aufgerufen und dort erfolgreich ausgeführt:

cd /sundtek
./sundtek_netinst.sh -docker -use-custom-path=/sundtek


Container und Raspberry neugestartet.

Die DVBC – Sticks werden auf dem Host und im Container mit dem exakt gleichen Ergebnis gefunden:

pi@raspberrypi:~ $ ls -la /dev/dvb/adapter0/
insgesamt 0
drwxr-xr-x 2 root root    100 Mai  5 15:48 .
drwxr-xr-x 4 root root     80 Mai  5 15:48 ..
crw-r--r-- 1 root root 212, 3 Mai  5 15:48 demux0
crw-r--r-- 1 root root 212, 5 Mai  5 15:48 dvr0
crw-r--r-- 1 root root 212, 1 Mai  5 15:48 frontend0

Trotzdem wird leider im Webinterface von TVheadend der Sundtek DVBC Tuner nicht angezeigt.

Falls jemand eine Idee hat, wie ich hier weiterkomme, gerne melden.

Lieben Dank und Grüße

Dennis


PS: Mit der Ergänzung oben in rot läuft jetzt alles. TOP, vielen Dank!
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: Sundtek am Mai 05, 2020, 08:45:17 Nachmittag
Hab das wohl übersehen, beim Docker Befehl fehlt:

--device=/dev/bus/usb


Wir haben das so erzeugt:

docker create --name alpinelinux
                     --net=bridge
                     -p 59981:9981
                     -p 59982:9982
                     --device=/dev/dvb
                     --device=/dev/dri
                     --device=/dev/bus/usb
                     -t alpine /bin/sh
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: 3x3cut0r am Mai 06, 2020, 01:33:50 Nachmittag
Das wars! Läuft! Ich werd gleich meinen Post ändern, sodass es jeder nachmachen kann.
Danke!
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: idontknowjack am Mai 06, 2020, 06:27:36 Nachmittag
TOP, hab vielen vielen Dank! Endlich hat die Suche ein Ende.

Lieben Gruß

Dennis
Titel: Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
Beitrag von: Sundtek am Mai 07, 2020, 10:11:21 Vormittag
LXC Container sind meiner Ansicht nach flexibler als Docker Container, bei den LXC Containern spart man sich die Nodes auf dem Host System. Mal schauen wo die Reise mit den Containern die nächsten Jahre über hingeht.