Autor Thema: 2x Sundtek SkyTV Ultimate Dual (Proxmox - LXC - Docker)  (Gelesen 4023 mal)

dansiebert

  • Newbie
  • *
  • Beiträge: 2
    • Profil anzeigen
2x Sundtek SkyTV Ultimate Dual (Proxmox - LXC - Docker)
« am: Mai 10, 2024, 08:27:34 Vormittag »
Hallo,

ich betreibe seit einer Weile erfolgreich TVHeadend mit einer Sundtek SkyTV Ultimate Dual unter Proxmox in einem Docker-Container, der wiederum in einem LXC läuft (Proxmox --> LXC --> Docker).
Zur Inbetriebnahme hatte ich auf dem Proxmox Server die LXC-Konfiguration ergänzt:

lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: c 212:* rwm
lxc.cgroup2.devices.allow: c 189:* rwm
lxc.cgroup2.devices.allow: c 188:* rwm
lxc.cgroup2.devices.allow: c 250:* rwm
lxc.mount.entry: /dev/dvb dev/dvb none bind,optional,create=dir
lxc.mount.entry: /dev/mediainput0 dev/mediainput0 none bind,optional,create=dir
lxc.mount.entry: /dev/bus/usb/001 dev/bus/usb/001 none bind,optional,create=dir
lxc.mount.entry: /dev/ttyEASYMOUSE dev/ttyUSB0 none bind,optional,create=file

und im LXC-Host u.a. das "sundtek_netinst.sh -createnodes" ausgeführt, um die /dev/dvb/adapter../..-Deviceknoten anzulegen.
Im Docker-Container selbst habe ich dann den Sundtek Treiber installiert (das Sundtek Treiberinstallationsscript ist in den Docker Container nach /sundtek hinein gemountet):

root@0bca1de4bddb:/# cd /sundtek
root@0bca1de4bddb:/sundtek# ./sundtek_netinst.sh -docker -use-custom-path=/sundtek

und am Ende noch den Docker-Container restartet.
Das funktioniert alles wunderbar. Ich kann via TVHeadend 2 verschiedene Transponder nutzen.


Jetzt habe ich eine 2. Sundtek SkyTV Ultimate Dual an einen weiteren USB-Port des Proxmox-Servers angeschlossen und wollte diese in Betrieb nehmen um gleichzeitig 4 verschiedene Transponder nutzen zu können (z.B. ZDF, RTL, PRO 7).

Allerdings musste ich feststellen, dass z.B. das ""sundtek_netinst.sh -createnodes" im LXC-Host nur 2 und nicht 4 /dev/dvb/adapterX anlegt.
Erkennt das Script nicht, dass nun  2 Karten vorhanden sind?

Ein "lsusb" im LXC-Host zeigt u.a.
Bus 001 Device 003: ID 2659:1802 Sundtek Dual S2
Bus 001 Device 006: ID 2659:1802 Sundtek Dual S2
also beide Karten an.

Was kann ich tun, damit die 2. Karte auch ordentlich in Betrieb geht?
Muss neben weiteren /dev/dvb/adapterX im LXC auch hinsichtlich des Treibers im Docker-Container noch etwas verändert werden?

Kann evtl. jemand helfen?

Danke und viele Grüße
Daniel

Sundtek

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 8604
    • Profil anzeigen
Re: 2x Sundtek SkyTV Ultimate Dual (Proxmox - LXC - Docker)
« Antwort #1 am: Mai 10, 2024, 02:23:03 Nachmittag »
Hallo,

Du hast Recht, auf dem Host wird es dir nicht mehr Nodes erzeugen. Createnodes ist sehr primitiv und erstellt nur 2 Nodes. Werde das Skript anpassen damit man dort ein Argument angeben kann wie viele Nodes man LXC erlaubt.

Der Createnodes Befehl greift nicht mal auf die Hardware zu es weiss ueberhaupt nichts. Werde den Beitrag dann aktualisieren wenn ich den Treiber-Installer (wirklich nur den Installer) diesbezueglich aktualisiert habe.
Failure is a good thing! I'll fix it

dansiebert

  • Newbie
  • *
  • Beiträge: 2
    • Profil anzeigen
Re: 2x Sundtek SkyTV Ultimate Dual (Proxmox - LXC - Docker)
« Antwort #2 am: Mai 10, 2024, 11:12:22 Nachmittag »
Hallo,

vielen Dank für das schnelle Feedback.
Die Sache konnte ich jetzt zum Laufen bringen. Ich habe mal mit der Belegung der USB-Ports etwas rumgespielt. Der ein oder andere Reboot des Proxmox Servers war dabei auch noch notwendig, und hin und wieder war die 2. Karte einfach auch im Proxmox bei einem "lsusb" plötzlich einfach weg.
Im LXC sind nun tatsächlich auch nur /dev/dvb/adapter0/... und /dev/dvb/adapter1/... zu finden.
root@tvheadend:~# ls -l /dev/dvb/
total 0
drwxr-xr-x 2 root root 100 May 10 20:22 adapter0
drwxr-xr-x 2 root root 100 May 10 20:22 adapter1

Im Docker-Container sind überraschend trotzdem alle 4 vorhanden.
root@tvheadend:~# docker exec -it tvheadend-sundtek /bin/bash
root@4bd1bde71735:/# ls -l /dev/dvb/
total 0
drwxrwxrwx 2 root root 100 May 10 22:22 adapter0
drwxrwxrwx 2 root root 100 May 10 22:22 adapter1
drwxrwxrwx 2 root root 100 May 10 22:22 adapter2
drwxrwxrwx 2 root root 100 May 10 22:22 adapter3

Auch der mediaclient im Docker-Container zeigt wie erwartet 2 Devices.
root@4bd1bde71735:/# /opt/bin/mediaclient -e
**** List of Media Hardware Devices ****
device 0: [             Dual S2]  DVB-S/S2, REMOTE-CONTROL, DVB-S/S2
  [INFO]:
     STATUS: ACTIVE
  [BUS]:
     ID: 1-7
  [SERIAL]:
     ID: U240405054852
  [DVB-S/S2]:
     FESTATUS: ACTIVE
     LNBVOLTAGE: ENABLED
     LNBSUPPLY: USBPOWER
     LNBSTATUS: OK
     FRONTEND: /dev/dvb/adapter0/frontend0
     DVR: /dev/dvb/adapter0/dvr0
     DMX: /dev/dvb/adapter0/demux0
  [REMOTECONTROL]:
     INPUT0: /dev/mediainput0
  [DVB-S/S2]:
     FESTATUS: ACTIVE
     FRONTEND: /dev/dvb/adapter1/frontend0
     DVR: /dev/dvb/adapter1/dvr0
     DMX: /dev/dvb/adapter1/demux0

device 1: [             Dual S2]  DVB-S/S2, REMOTE-CONTROL, DVB-S/S2
  [INFO]:
     STATUS: ACTIVE
  [BUS]:
     ID: 1-5
  [SERIAL]:
     ID: U240328210433
  [DVB-S/S2]:
     FESTATUS: ACTIVE
     LNBVOLTAGE: ENABLED
     LNBSUPPLY: USBPOWER
     LNBSTATUS: OK
     FRONTEND: /dev/dvb/adapter2/frontend0
     DVR: /dev/dvb/adapter2/dvr0
     DMX: /dev/dvb/adapter2/demux0
  [REMOTECONTROL]:
     INPUT0: /dev/mediainput1
  [DVB-S/S2]:
     FESTATUS: ACTIVE
     FRONTEND: /dev/dvb/adapter3/frontend0
     DVR: /dev/dvb/adapter3/dvr0
     DMX: /dev/dvb/adapter3/demux0

Und auch im TVHeadend stehen 4 DVB-Inputs zur Vefrügung. Läuft!

Ich bin zwar etwas verwirrt, aber OK. ;)

Würde denn im LXC auch nur ein /dev/dvb/adapter0 ausreichen, damit docker-compose.yml wegen der Config-Einträge
    devices:
      - /dev/dvb:/dev/dvb
      - /dev/bus/usb:/dev/bus/usb
wenigstens ein konfiguriertes DVB-Device vorgegaukelt bekommt?
So ganz ohne startet ja der Docker-Container nicht.

Welche Einträge sind eigentlich von den

lxc.cgroup2.devices.allow: c 212:* rwm
lxc.cgroup2.devices.allow: c 189:* rwm
lxc.cgroup2.devices.allow: c 188:* rwm
lxc.cgroup2.devices.allow: c 250:* rwm
lxc.mount.entry: /dev/dvb dev/dvb none bind,optional,create=dir
lxc.mount.entry: /dev/mediainput0 dev/mediainput0 none bind,optional,create=dir
lxc.mount.entry: /dev/bus/usb/001 dev/bus/usb/001 none bind,optional,create=dir

in der Config des LXC-Hosts unbedingt notwendig?
Ich habe da z.B nur ein lxc.mount.entry .../dev/mediainput0... drin. Der "mediaclient -e" im Docker-Container zeigt aber trotzdem auch ein /dev/mediainput1.

Viele Grüße
Daniel

Sundtek

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 8604
    • Profil anzeigen
Re: 2x Sundtek SkyTV Ultimate Dual (Proxmox - LXC - Docker)
« Antwort #3 am: Mai 11, 2024, 08:28:36 Vormittag »
mediainput0 ist nur für eine Fernbedienung, das benötigst Du nicht.

Createnodes führt im Grunde nur folgende Befehle aus (ich habe es hier erweitert um 2 weitere Nodes zu erstellen, du kannst das anstelle von createnodes ausführen):
Zitat
        echo "Creating static nodes"
        mkdir -p /dev/dvb/adapter0
        mkdir -p /dev/dvb/adapter1
        #crwxrwxrwx 1 root root 212, 1 Dec 19 20:44 frontend0
        #crwxrwxrwx 1 root root 212, 5 Dec 19 20:44 dvr0
        #crwxrwxrwx 1 root root 212, 3 Dec 19 20:44 demux0
        mknod /dev/dvb/adapter0/frontend0 c 212 1
        mknod /dev/dvb/adapter0/dvr0 c 212 5
        mknod /dev/dvb/adapter0/demux0 c 212 3
        #crwxrwxrwx 1 root root 212,  7 Dec 19 20:44 frontend0
        #crwxrwxrwx 1 root root 212, 11 Dec 19 20:44 dvr0
        #crwxrwxrwx 1 root root 212,  9 Dec 19 20:44 demux0
        mknod /dev/dvb/adapter1/frontend0 c 212 7
        mknod /dev/dvb/adapter1/dvr0 c 212 11
        mknod /dev/dvb/adapter1/demux0 c 212 9
        #crwxrwxrwx 1 root root 212,  13 Dec 19 20:44 frontend0
        #crwxrwxrwx 1 root root 212, 17 Dec 19 20:44 dvr0
        #crwxrwxrwx 1 root root 212,  15 Dec 19 20:44 demux0
        mknod /dev/dvb/adapter1/frontend0 c 212 13
        mknod /dev/dvb/adapter1/dvr0 c 212 17
        mknod /dev/dvb/adapter1/demux0 c 212 15
        #crwxrwxrwx 1 root root 212,  19 Dec 19 20:44 frontend0
        #crwxrwxrwx 1 root root 212, 13 Dec 19 20:44 dvr0
        #crwxrwxrwx 1 root root 212,  21 Dec 19 20:44 demux0
        mknod /dev/dvb/adapter1/frontend0 c 212 19
        mknod /dev/dvb/adapter1/dvr0 c 212 13
        mknod /dev/dvb/adapter1/demux0 c 212 21


----

oder ein Skript (als root):
Zitat
#!/bin/bash
NUMBER_FRONTENDS=4
for ((i=0;i<4;i++)); do
   echo "creating adapter $i"
   mkdir -p /dev/dvb/adapter$i
   mknod /dev/dvb/adapter0/frontend0 c 212 $((1+$i*6))
   mknod /dev/dvb/adapter0/dvr0 c 212 $((5+$i*6))
   mknod /dev/dvb/adapter0/demux0 c 212 $((3+$i*6))
done
Es geht nur darum die Device IDs im Container zuzulassen, nicht um sie dort zu mounten.
« Letzte Änderung: Mai 11, 2024, 09:44:58 Vormittag von Sundtek »
Failure is a good thing! I'll fix it