All the Sundtek TV drivers needs on the host is the device nodes because docker uses them for access restriction as mentioned - it uses the major/minor ids (eg. in the list below major 212 minor 1 - n)
TVHeadend won't be allowed to access the device nodes if we only create them inside the docker. they have to be present on the host before starting the docker image.
And aside of that whenever unraid updates the kernel - it won't bother the sundtek driver - we have no kernel drivers. We simulate them aside the existing infrastructure (so we won't touch anything existing) using some very smart interfaces in Linux which have been there for over 2 decades too.
The driver is only doing a mknod on the host - do you have any better advise where to put that on the host?
The real driver is fully installed inside the docker.
ideally there should be a field somewhere asking how many device nodes do you want to create on the host?
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
or something like this:
#!/bin/bash
if [ "$#" -ne "1" ]; then
echo "Argument $0 n"
echo " n.. number of adapters"
exit 1
fi
n=$1
for i in $(seq 0 $(($n-1))); do
mkdir -p /dev/dvb/adapter$i
mknod /dev/dvb/adapter0/frontend0 c 212 $(($i*6+1))
mknod /dev/dvb/adapter0/dvr0 c 212 $(($i*6+5))
mknod /dev/dvb/adapter0/demux0 c 212 $(($i*6+3))
done