Autor Thema: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen  (Gelesen 10604 mal)

Surfer2010

  • Newbie
  • *
  • Beiträge: 2
    • Profil anzeigen
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.
« Letzte Änderung: April 14, 2019, 01:15:02 Nachmittag von Surfer2010 »

rosenrot

  • Newbie
  • *
  • Beiträge: 17
    • Profil anzeigen
Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
« Antwort #1 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!

Sundtek

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 8512
    • Profil anzeigen
Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
« Antwort #2 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).
Failure is a good thing! I'll fix it

BoBeRzE

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
« Antwort #3 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
« Letzte Änderung: August 17, 2019, 11:41:06 Vormittag von BoBeRzE »

BoBeRzE

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
« Antwort #4 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 :)

sezz

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
« Antwort #5 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 ::)).

Sundtek

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 8512
    • Profil anzeigen
Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
« Antwort #6 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
Failure is a good thing! I'll fix it

sezz

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
« Antwort #7 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 ;)

sezz

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
« Antwort #8 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

Sundtek

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 8512
    • Profil anzeigen
Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
« Antwort #9 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.
Failure is a good thing! I'll fix it

sohoppeltderhase

  • Newbie
  • *
  • Beiträge: 2
    • Profil anzeigen
Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
« Antwort #10 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

Sundtek

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 8512
    • Profil anzeigen
Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
« Antwort #11 am: April 28, 2020, 10:15:33 Vormittag »
Hallo,

welches Docker Images ist das? X86-64, ARM(32/64)?
Failure is a good thing! I'll fix it

sohoppeltderhase

  • Newbie
  • *
  • Beiträge: 2
    • Profil anzeigen
Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
« Antwort #12 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

3x3cut0r

  • Newbie
  • *
  • Beiträge: 10
    • Profil anzeigen
Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
« Antwort #13 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!
« Letzte Änderung: Mai 06, 2020, 02:06:41 Nachmittag von 3x3cut0r »

Sundtek

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 8512
    • Profil anzeigen
Re: Anleitung - Sundtek Stick in Docker Container mit TVHeadend verfügbar machen
« Antwort #14 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.
Failure is a good thing! I'll fix it