[SOLVED] TBS6909 driver installation on Proxmox VE 6.3

Helio Mendonça

Well-Known Member
Apr 10, 2019
73
6
48
Hi

I have a running TBS6909 on a Proxmox VE (version 5.4 with kernel 4.15.18-14-pve) server.
Now I tried to do the same but on an updated Proxmox VE (version 6.3 with kernel 5.4.78-2-pve).
I followed the instructions that can be seen here: https://github.com/tbsdtv/linux_media/wiki

After command make allyesconfig I got this:
Code:
root@pve:~/media_build# make allyesconfig
...
WARNING: This is the V4L/DVB backport tree, with experimental drivers
         backported to run on legacy kernels from the development tree at:
                http://git.linuxtv.org/media-tree.git.
         It is generally safe to use it for testing a new driver or
         feature, but its usage on production environments is risky.
         Don't use it in production. You've been warned.
CEC_CROS_EC: Requires at least kernel 9.255.255
V4L2_H264: Requires at least kernel 9.255.255
VIDEO_IPU3_CIO2: Requires at least kernel 9.255.255
VIDEO_OMAP3: Requires at least kernel 9.255.255
VIDEO_IMX274: Requires at least kernel 9.255.255
SND_BT87X: Requires at least kernel 9.255.255
INTEL_ATOMISP: Requires at least kernel 9.255.255
VIDEO_HANTRO: Requires at least kernel 9.255.255
VIDEO_ROCKCHIP_VDEC: Requires at least kernel 9.255.255
VIDEO_IPU3_IMGU: Requires at least kernel 9.255.255
Created default (all yes) .config file
./scripts/fix_kconfig.pl
make[1]: Leaving directory '/root/media_build/v4l'
The "Requires at least kernel 9.255.255" sounds like an error, right?

Nevertheless I was able to run the "make -j4" command apparently with no errors:
Code:
root@pve:~/media_build# make -j4
...
  LD [M]  /root/media_build/v4l/zd1301.ko
  LD [M]  /root/media_build/v4l/zd1301_demod.ko
  LD [M]  /root/media_build/v4l/zl10036.ko
  LD [M]  /root/media_build/v4l/zl10039.ko
  LD [M]  /root/media_build/v4l/zl10353.ko
  LD [M]  /root/media_build/v4l/zr364xx.ko
make[2]: Leaving directory '/usr/src/linux-headers-5.4.73-1-pve'
./scripts/rmmod.pl check
found 742 modules
make[1]: Leaving directory '/root/media_build/v4l'

It is strange because during the compilation I do not see any reference to the TBS6909 board unlike many others:
Code:
root@pve:~/media_build# ls /root/media_build/v4l/tbs69*
ls: cannot access '/root/media_build/v4l/tbs69*': No such file or directory

Finally, after a reboot I do not see any /dev/dvb devices, something that I also can check if I do:
Code:
root@pve:~# dmesg | grep frontend
root@pve:~#

What I would like to see is something like this (as in the case of Proxmox 5.4):
Code:
root@pve:~# dmesg | grep frontend
[   33.286869] TBSECP3 driver 0000:0a:00.0: DVB: registering adapter 0 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   33.408993] TBSECP3 driver 0000:0a:00.0: DVB: registering adapter 1 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   33.532632] TBSECP3 driver 0000:0a:00.0: DVB: registering adapter 2 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   33.656702] TBSECP3 driver 0000:0a:00.0: DVB: registering adapter 3 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   33.780999] TBSECP3 driver 0000:0a:00.0: DVB: registering adapter 4 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   33.904987] TBSECP3 driver 0000:0a:00.0: DVB: registering adapter 5 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   34.028999] TBSECP3 driver 0000:0a:00.0: DVB: registering adapter 6 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   34.153004] TBSECP3 driver 0000:0a:00.0: DVB: registering adapter 7 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...

Any help on this?
My guess is that kernel 5.4.78-2-pve is too new to these DVB drivers, right?

Regards
 
Hi again

I just noticed in my last post that in the end of command "make -j4" I got:
Code:
make[2]: Leaving directory '/usr/src/linux-headers-5.4.73-1-pve'
What is strange since my current kernet is the 5.4.78-2-pve!

The problem was that when I did the "apt update && apt -y upgrade", the kernel was upgraded from the one I had after installing Proxmox VE 6.3 (5.4.73-1-pve) to a new one (5.4.78-2-pve), and since I IMMEDIATELY after that did:
Code:
apt-cache search pve-headers
apt install pve-headers-$(uname -r)
The "uname -r" still returned the older kernel version and therefore the linux-headers I used in the driver compilation were the old ones.

So, this time I repeated the process on a new Proxmox installation but this time after the "apt update && apt -y upgrade" I did a reboot and therefore the linux-headers installed after that were already related with the updated kernel 5.4.78-2-pve.

I still got the odd "Requires at least kernel 9.255.255" messages but at least the "make -j4" command ended mentioning the right folder:
Code:
root@pve:~/media_build# make -j4
...
  LD [M]  /root/media_build/v4l/zd1301.ko
  LD [M]  /root/media_build/v4l/zd1301_demod.ko
  LD [M]  /root/media_build/v4l/zl10036.ko
  LD [M]  /root/media_build/v4l/zl10039.ko
  LD [M]  /root/media_build/v4l/zl10353.ko
  LD [M]  /root/media_build/v4l/zr364xx.ko
make[2]: Leaving directory '/usr/src/linux-headers-5.4.78-2-pve'
./scripts/rmmod.pl check
found 742 modules
make[1]: Leaving directory '/root/media_build/v4l'

Keeps me wondering why in the /root/media_build/v4l folder I still do not see any mention to my tbs6909 board when I see a bunch of tbs5xxx boards.

But now, at least I can already see the FAILED attempts during the boot to connect my board:
Code:
root@pve:~# dmesg | grep frontend
                4d2b65a0e8661ba2bd20d28d21db99846eafe4a8 media: dvb-frontends/stid135: Extended VGLNA support.
                4d2b65a0e8661ba2bd20d28d21db99846eafe4a8 media: dvb-frontends/stid135: Extended VGLNA support.
                4d2b65a0e8661ba2bd20d28d21db99846eafe4a8 media: dvb-frontends/stid135: Extended VGLNA support.
[    6.543979] TBSECP3 driver 0000:09:00.0: TBSECP3 frontend 0 attach failed
[    6.543983] TBSECP3 driver 0000:09:00.0: frontend attach failed
[    6.711355] TBSECP3 driver 0000:09:00.0: TBSECP3 frontend 1 attach failed
[    6.711359] TBSECP3 driver 0000:09:00.0: frontend attach failed
[    6.875268] TBSECP3 driver 0000:09:00.0: TBSECP3 frontend 2 attach failed
[    6.875278] TBSECP3 driver 0000:09:00.0: frontend attach failed
[    7.047474] TBSECP3 driver 0000:09:00.0: TBSECP3 frontend 3 attach failed
[    7.047478] TBSECP3 driver 0000:09:00.0: frontend attach failed
[    7.215376] TBSECP3 driver 0000:09:00.0: TBSECP3 frontend 4 attach failed
[    7.215379] TBSECP3 driver 0000:09:00.0: frontend attach failed
[    7.383513] TBSECP3 driver 0000:09:00.0: TBSECP3 frontend 5 attach failed
[    7.383516] TBSECP3 driver 0000:09:00.0: frontend attach failed
[    7.551513] TBSECP3 driver 0000:09:00.0: TBSECP3 frontend 6 attach failed
[    7.551516] TBSECP3 driver 0000:09:00.0: frontend attach failed
[    7.719378] TBSECP3 driver 0000:09:00.0: TBSECP3 frontend 7 attach failed
[    7.719381] TBSECP3 driver 0000:09:00.0: frontend attach failed
That are pretty close of what I want to see (like the one I used to had in my older Proxmox):
Code:
root@pve:~# dmesg | grep frontend
[   33.286869] TBSECP3 driver 0000:0a:00.0: DVB: registering adapter 0 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   33.408993] TBSECP3 driver 0000:0a:00.0: DVB: registering adapter 1 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   33.532632] TBSECP3 driver 0000:0a:00.0: DVB: registering adapter 2 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   33.656702] TBSECP3 driver 0000:0a:00.0: DVB: registering adapter 3 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   33.780999] TBSECP3 driver 0000:0a:00.0: DVB: registering adapter 4 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   33.904987] TBSECP3 driver 0000:0a:00.0: DVB: registering adapter 5 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   34.028999] TBSECP3 driver 0000:0a:00.0: DVB: registering adapter 6 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   34.153004] TBSECP3 driver 0000:0a:00.0: DVB: registering adapter 7 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...

Could you please give me an hint on what to do?
Regards
 
The "uname -r" still returned the older kernel version and therefore the linux-headers I used in the driver compilation were the old ones.
Yeah you missed the reboot to activate the updated kernel.
So, this time I repeated the process on a new Proxmox installation but this time after the "apt update && apt -y upgrade" I did a reboot and therefore the linux-headers installed after that were already related with the updated kernel 5.4.78-2-pve.
Avoid upgrade, instead use apt full-upgrade to avoid problems.

Could you please give me an hint on what to do?
No clear directions, I'm afraid.

But maybe try to get/compile the driver from their website:
https://www.tbsiptv.com/index.php?r...-S2_8_tuner_pcie_card_data_sheet_V2.pdf&id=16

Also ask on their support channels, may get you a higher chance for a hint. FYI: Proxmox VE 6.3 bases off the Ubuntu 20.04 kernel it should be somewhat similar to using that.
 
  • Like
Reactions: Helio Mendonça
Hi

Thanks @t.lamprecht for your hint!

Meanwhile I solved the problem!

Instead of using the procedure described here: https://github.com/tbsdtv/linux_media/wiki, I used the one described inside the zip of the "TBS Open Source Linux Driver Offline Package" that can be obtained here: https://www.tbsdtv.com/download/index.html?path=3_13
In the case of my board (TBS6909) I got the "TBS Open Source Linux Driver Offline Package v20201204", where the steps are the following:

Code:
wget http://www.tbsdtv.com/download/document/linux/media_build-2020-12-04.tar.bz2
rm -rf /lib/modules/`uname -r`/kernel/drivers/media/
tar jxvf media_build-2020-12-04.tar.bz2
cd media_build
./install.sh
reboot

IMPORTANT:

1. In my case, where I want to install the driver in a Proxmox server where the default user is already the root, I had to edit the install.sh by removing all the "sudo" to avoid errors during the ./install.sh.

2. Do not forget to install the linux-headers (in this case the pve-headers) BEFORE the procedure described above:
Code:
apt-cache search pve-headers
apt install pve-headers-$(uname -r)
reboot

After all this, I finally got what I wanted:
Code:
root@pve:~# dmesg | grep frontend
[   32.494217] TBSECP3 driver 0000:09:00.0: DVB: registering adapter 0 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   32.617803] TBSECP3 driver 0000:09:00.0: DVB: registering adapter 1 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   32.741035] TBSECP3 driver 0000:09:00.0: DVB: registering adapter 2 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   32.864554] TBSECP3 driver 0000:09:00.0: DVB: registering adapter 3 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   32.988870] TBSECP3 driver 0000:09:00.0: DVB: registering adapter 4 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   33.114499] TBSECP3 driver 0000:09:00.0: DVB: registering adapter 5 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   33.239971] TBSECP3 driver 0000:09:00.0: DVB: registering adapter 6 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...
[   33.364305] TBSECP3 driver 0000:09:00.0: DVB: registering adapter 7 frontend 0 (TurboSight TBS 6909 DVB-S/S2 )...

Regards
 
Last edited:
  • Like
Reactions: t.lamprecht
Hi,
try to reopen this issue with a slightly different card (TBS 6904) and Proxmox 8.2.7

Code:
root@pve:~# lspci -k
01:00.0 Multimedia controller: TBS Technologies DVB Tuner PCIe Card
    Subsystem: Device 6904:1131

Code:
root@pve:~# uname -r
6.8.12-2-pve

Code:
root@pve:~# apt install pve-headers-$(uname -r)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'proxmox-headers-6.8.12-2-pve' instead of 'pve-headers-6.8.12-2-pve'
proxmox-headers-6.8.12-2-pve is already the newest version (6.8.12-2).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

However, I installed pve-headers-6.2 - Proxmox Kernel Headers for 6.2 series (transitional package) as well.

Latest drivers with support kernel from 4.14 to 6.10

Code:
# wget http://www.tbsdtv.com/download/document/linux/media_build-2024-08-29.tar.bz2
# sudo rm -rf /lib/modules/`uname -r`/kernel/drivers/media/
#tar jxvf media_build-2024-08-29.tar.bz2
#cd media_build
#./install.sh
#reboot

Deleted sudos from install.sh

But still nothing at:
Code:
root@pve:~# dmesg | grep frontend

Any ideas?
 
Hi,
try to reopen this issue with a slightly different card (TBS 6904) and Proxmox 8.2.7

Code:
root@pve:~# lspci -k
01:00.0 Multimedia controller: TBS Technologies DVB Tuner PCIe Card
    Subsystem: Device 6904:1131

Code:
root@pve:~# uname -r
6.8.12-2-pve

Code:
root@pve:~# apt install pve-headers-$(uname -r)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'proxmox-headers-6.8.12-2-pve' instead of 'pve-headers-6.8.12-2-pve'
proxmox-headers-6.8.12-2-pve is already the newest version (6.8.12-2).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

However, I installed pve-headers-6.2 - Proxmox Kernel Headers for 6.2 series (transitional package) as well.

Latest drivers with support kernel from 4.14 to 6.10

Code:
# wget http://www.tbsdtv.com/download/document/linux/media_build-2024-08-29.tar.bz2
# sudo rm -rf /lib/modules/`uname -r`/kernel/drivers/media/
#tar jxvf media_build-2024-08-29.tar.bz2
#cd media_build
#./install.sh
#reboot
m -rf /lib/modules/`uname -r`/kernel/drivers/media/


Deleted sudos from install.sh

But still nothing at:
Code:
root@pve:~# dmesg | grep frontend

Any ideas?

Yes, I struggled with this problem to.
Here is a quick guide for kernel 6.8.12-8-pve

Do this as root!

Make sure you have the kernel headers installed and all needed build tools

apt install pve-headers-$(uname -r) build-essential flex bison patchutils
wget http://www.tbsdtv.com/download/document/linux/media_build-2024-08-29.tar.bz2
rm -rf /lib/modules/`uname -r`/kernel/drivers/media/
tar xvf media_build-2024-08-29.tar.bz2
cd media_build
rm backports/v6.8_ccs.patch # Not needed for 6.8.12-8-pve and breaks the build

Before rebooting you can check that the modules are build and installed correctly.
This folder should be polulated with the newly built modules.
ls -al /lib/modules/6.8.12-8-pve/updates/extra/media

Add firmware for your 6909
cd /lib/firmware
wget http://www.tbsdtv.com/download/document/linux/dvb-fe-mxl5xx.fw

Now you can reboot!
 
Last edited:
I have to dig out this thread because I can't get the driver for a TBS 6922 PCIe card installed on the current Proxmox host (6.17.13-1-pve kernel). I have very limited experience, so when the provided instructions don't work, I'm out of ideas. I installed all the prerequisites mentioned here including the PVE headers which appear in /usr/src/linux-headers-6.17.13-1-pve. After getting a bunch of compilation errors with the standard drivers, it turned out that only these current drivers are compatible with newer kernels and using the automatic script is the suggested solution. Running the script compiles everything with a bunch of warnings but no errors (I guess it's normal), but the driver does not load, even after a reboot.

There are 2 issues standing out. One is a bunch of BTF errors:

Code:
...
  LD [M]  frontends/mtv23x.ko
  BTF [M] frontends/mn88436.ko
Skipping BTF generation for frontends/mn88436.ko due to unavailability of vmlinux
  BTF [M] frontends/mtv23x.ko
Skipping BTF generation for frontends/mtv23x.ko due to unavailability of vmlinux
  LD [M]  frontends/stid135/stid135.ko
  BTF [M] frontends/stid135/stid135.ko
Skipping BTF generation for frontends/stid135/stid135.ko due to unavailability of vmlinux
  LD [M]  frontends/m88rs6060.ko
  BTF [M] frontends/m88rs6060.ko
Skipping BTF generation for frontends/m88rs6060.ko due to unavailability of vmlinux
  LD [M]  frontends/tbs_priv.ko
  BTF [M] frontends/tbs_priv.ko
Skipping BTF generation for frontends/tbs_priv.ko due to unavailability of vmlinux
  LD [M]  frontends/cxd2878.ko
  BTF [M] frontends/cxd2878.ko
Skipping BTF generation for frontends/cxd2878.ko due to unavailability of vmlinux
make[2]: Leaving directory '/root/tbsdvb'
make[1]: Leaving directory '/usr/src/linux-headers-6.17.13-1-pve'
V4L drivers installing...
...

And another depmod "warning" of a missing System.map file:

Code:
...
  SIGN    /lib/modules/6.17.13-1-pve/updates/frontends/tbs_priv.ko
  INSTALL /lib/modules/6.17.13-1-pve/updates/frontends/stid135/stid135.ko
  SIGN    /lib/modules/6.17.13-1-pve/updates/frontends/stid135/stid135.ko
  INSTALL /lib/modules/6.17.13-1-pve/updates/frontends/m88rs6060.ko
  SIGN    /lib/modules/6.17.13-1-pve/updates/frontends/m88rs6060.ko
  INSTALL /lib/modules/6.17.13-1-pve/updates/frontends/cxd2878.ko
  SIGN    /lib/modules/6.17.13-1-pve/updates/frontends/cxd2878.ko
  DEPMOD  /lib/modules/6.17.13-1-pve
Warning: modules_install: missing 'System.map' file. Skipping depmod.
make[2]: Leaving directory '/root/tbsdvb'
make[1]: Leaving directory '/usr/src/linux-headers-6.17.13-1-pve'
Updating module dependencies...
V4L drivers installation done
install the firmware
...

So it can't find vmlinux and System.map and apparently fails to install the kernel modules. A quick search suggests that these files are created when compiling the kernel from source, but I thought the kernel headers were enough to build a driver. How can I fix it?

Here's the relevant lspci -v output. The DVB card is present (and not passed through to any VM) but no driver is loaded:

Code:
01:00.0 Multimedia controller: Philips Semiconductors SAA7160 (rev 03)
        Subsystem: Device 6922:0001
        Flags: fast devsel, IRQ 255, IOMMU group 5
        Memory at 9fb00000 (64-bit, non-prefetchable) [disabled] [size=1M]
        Capabilities: [40] MSI: Enable- Count=1/32 Maskable- 64bit+
        Capabilities: [50] Express Endpoint, IntMsgNum 0
        Capabilities: [74] Power Management version 2
        Capabilities: [80] Vendor Specific Information: Len=50 <?>
        Capabilities: [100] Vendor Specific Information: ID=0000 Rev=0 Len=088 <?>
 
Last edited: