TBS driver installation
A number of PCIe devices from TBS Technologies have a common setup process
Driver installation
Drivers are available from the TBS website.
1. Extract the ZIP file tbs-linux-drivers_v[VERSION NUMBER].zip. As of 5 April 2015, the latest version is 150313. You may want to do this in an empty directory as this archive does not extract into a single root directory of its own.
unp -u tbs-linux-drivers_v140113.zip
2. Extract linux-tbs-drivers.tar.bz2 archive
unp linux-tbs-drivers.tar.bz2
3. Change to driver package directory
cd linux-tbs-drivers
4. Select platform architecture
for x86 kernel 3.x (x86 32 bit installations of kernel 3.x)
./v4l/tbs-x86_r3.sh
or for x86 kernel 2.6.x (x86 32 bit installations of kernel 2.6.x)
./v4l/tbs-x86.sh
or for any x86_64 kernel (x86 64 bit installations of Linux)
./v4l/tbs-x86_64.sh
You should then receive a message along these lines:
TBS drivers configured for [NAME OF PLATFORM] platform.
5. Build the driver. Recompiles v4l for a wide range of cards, currently 485. This will take many minutes.
make
If you get -bash: make: command not found, then sudo apt-get install build-essential
6. Install driver. Existing drivers for other v4l related hardware, such as lirc could also get updated.
sudo make install
7. Load newly installed driver
sudo modprobe -v tbs62x0fe
insmod /lib/modules/3.(your kernel version)-generic/kernel/drivers/media/dvb/frontends/tbs62x0fe.ko
8. Check it loaded correctly
tail /var/log/syslog
You should get a message about tainting the kernel. This is fine.
kernel: tbs62x0fe: module license 'TurboSight Proprietary' taints kernel.
Running dmesg | tail
should end with something along these lines:
[ 7330.361868] tbs62x0fe: module license 'TurboSight Proprietary' taints kernel. [ 7330.361875] Disabling lock debugging due to kernel taint
dvb adaptor nodes should now exist
ls -al /dev/dvb
drwxr-xr-x 2 root root 120 Jul 9 21:12 adapter0 drwxr-xr-x 2 root root 120 Jul 9 21:12 adapter1 drwxr-xr-x 2 root root 120 Jul 9 21:12 adapter2 drwxr-xr-x 2 root root 120 Jul 9 21:12 adapter3
Errors and troubleshooting
Compilation problems
make[3]: *** No rule to make target `tbs8921ctrl.o', needed by `v4l/media.o'. Stop.
Did you select the correct platform in step 4 above?
Fighting with another tuner card in load order at boot time - http://www.tbsdtv.com/forum/viewtopic.php?f=62&t=7747
During compilation:
make[1]: *** No rule to make target `.myconfig', needed by `config-compat.h'. Stop.
Make sure you have the right C header files installed for your Linux kernel version.
Problems after kernel update
Some weeks later your /dev/dvb directory has disappeared? Perhaps your kernel was updated, and your machine rebooted. The driver needs to be recompiled.
If you just run make, it will try to compile against the old kernel headers, so first run
make distclean
Then go back to step 4.
Deleting media drivers directory to resolve conflicts
Some users have found that deleting the whole kernel media drivers folder and then compiling can resolve conflicts.
This process will fix issues resulting in "disagrees about version of symbol dvb_frontend_detach" messages in the dmesg output.
Instructions for this can be found in the TBS forum. They are as follows:
- First remove the existing media modules:
sudo rm -rf /lib/modules/$(uname -r)/kernel/drivers/media/
- Then reinstall the modules, following steps 3 and 6 above.
Compatibility with other cards
As noted above you should remove the kernel's existing media drivers before installing the TBS driver package, I omitted this step when installing the drivers and whilst the card worked fine (Mythtv 0.27/Debian 7) my other DVB-S2 tuner card would fail to initialize on start up. There were no obvious messages in the dmesg output indicating symbol issues, the card simply wouldn't work. Once I removed the media directory before installing the TBS drivers the card worked correctly. (The driver in the v4l tree used by the TBS drivers was actually a different name than the one in the Linux kernel I had installed).
Additionally it's worth noting that the TBS drivers don't appear to support the 'adapter_nr' argument.
IRQ issues
After an extended period the combined TBS driver may crash with messages (check using dmesg
) such as:
irq 16: nobody cared (try booting with the "irqpoll" option) ... Disabling IRQ #16
This will render the device inoperable until rebooting (including IR receiver), meaning it won't be able to record anything.
This can be resolved by configuring the driver to use MSI instead of IRQ:
sudo sh -c 'echo options saa716x_tbs_dvb int_type=1 > /etc/modprobe.d/tbs.conf'
If you have a newer TBS card such as a TBS6905, or a mix of older and newer ones, then you need TWO lines in /etc/modprobe.d/tbs.conf
:
options tbs_pcie-dvb tbs_int_type=1 options saa716x_tbs-dvb int_type=1
See this TBS forum thread and this blog post for more details.