[mythtv-users] PCIe DVB-S2 choices

Stephen Worthington stephen_agent at jsw.gen.nz
Thu Jun 16 18:25:19 UTC 2022

On Thu, 16 Jun 2022 13:29:31 +0100, you wrote:

>Short Story: Which PCIe DVB-S2 cards are people having success with?

I am using a TBS6909 8-tuner DVB-S2 card and an TBS6209 8-tuner DVB-T2


Both work well for me on Ubuntu 20.04.  They use a custom version of
the Linux DVB media tree:


You have to compile this against the kernel headers each time the
kernel is updated.  The entire tree gets replaced, so if you are using
other non-TBS tuners that need recent drivers or recent driver
updates, they may not be in the TBS version.  And I found that they do
not work with my old Hauppauge PVR-500 dual analogue PCI tuner cards.
Since I only use the two TBS cards on that machine, that is not a
problem for me.

The procedure I use is to do a kernel update is to do (as root):

apt update && apt full-upgrade && apt autoremove

to install the new kernel, then do:

systemctl disable mythtv-backend

to stop mythbackend from being run automatically, then reboot.  If I
do not prevent mythbackend from being started, the boot takes a long
time as my version of the mythtv-backend service waits for my tuners
and does not start until they are present or a long timeout.  And that
prevents the rest of the boot from happening (including the GUI
starting) until mythbackend is started after that timeout.

After reboot, I kill mythfrontend and check that the DVB devices are
not present:

ls -al /dev/dvb

If they are missing then as root I do:

cd ~/projects/tbs6909-drivers/

The script downloads the latest version of the TBS tree, patches it
for an extra feature I added to the TB6909 drivers to allow me to
manually assign which of the inputs feed which of the 4 tuner pairs,
and compiles and installs it.  When the script completes and reports
success, I do:

systemctl enable mythtv-backend

and reboot again.

Very occasionally, I have had compile errors as the TBS tree had not
yet been updated for the newer kernel.  This has not happened for at
least a year now.  Normally, I would then reboot to the old kernel and
wait a few days before trying again, and by then the TBS tree would
have been updated.  Once I had to file a bug report, and the problem
was fixed the next day.  And I have twice had to update my patch to
match code changes in the TBS6909 drivers, but that was a long time
ago - the code is now very stable as the TBS6909 card has been around
for quite a while now.  The updates to the TBS tree are all for their
newer cards.

I also have a script that just compiles and installs the TBS tree
without my patches (download_and_build.sh), which just does what the
github page tells you do to, with some error checking.  It also does
an rm on the original kernel DVB tree before installing the TBS
version, as that is the recommended fix for problems that I had happen
to me at one point.

The scripts and patch file are available on my web server:


I think it would be possible to automate the whole process by checking
for the presence of the /dev/dvb devices at boot time and kicking off
the download and build process automatically if they are not there.
But I have not bothered with that yet, as it would have to have proper
error handling so that it did not keep on rebooting if the TBS cards
were faulty, for example.  Covering all the possible error cases would
be a pain.

The TBS tree drivers work for pretty much all TBS cards.  Some of
their cards do have compileable drivers that work as add-ons for the
normal kernel DVB tree drivers, but that seems to only be for older
cards.  And I found that they were not as good as the full TBS tree
drivers.  I also have an older TBS5922 DVB-S2 USB tuner that works
with the TBS tree drivers, on another PC.

To configure the TBS6909 and TBS6209 cards, I have this in my
/etc/modprobe.d/options-dvb.conf file:

# TBS6909 8 tuner DVB-S2 card and TBS6209 8 tuner DVB-T2 card (they
use the same tbsecp3 driver).
options mxl58x mode=1 inputs=1,1,1,1
#options mxl58x mode=0
#                               TBS6909              TBS6209
#                          ====== DVB-S2 ====== ===== DVB-T2 =====
options tbsecp3 adapter_nr=7,8,9,10,11,12,13,14,0,1,2,3,16,15,4,17
# Adapter   0-4 = DVB-T2 MythTV
# Adapter   5-6 = currently unused (no adapter mapped to these adapter
# Adapter     7 = DVB-S2 EPG and channel scanning (via scripts)
# Adapter  8-14 = DVB-S2 minisatip or TVHeadend
# Adapter 15-16 = DVB-T2 minisatip or TVHeadend
# Adapter    17 = DVB-T2 EPG and channel scanning (via scripts)
# Note: The physical adapters 4 and 16 are swapped as 4 seems to be
faulty - it gets a lot of pixelation on the Maori multiplex.

I do really recommend the TBS6909 and TBS6209 cards.  They are not
cheap, but if you want lots of tuners they are cheaper than two or
more smaller cards, and they have the huge advantage that you only
need one aerial input to feed all 8 of the tuners - no need for
external splitters and 4 or 8 aerial input cables.  They have a low
noise amplifier connected to the aerial input that feeds an amplified
signal to the internal splitter that provides feeds to each tuner.  In
the case of the TBS6909, it has 4 aerial inputs that can be used to
feed 4 tuner pairs independently, with a matrix that allows selection
of which input feeds which tuner pairs.  Each input has a
LNA/splitter, but the matrix also allows all input pairs to get their
feed from just one input, which is what I need.

If you want to buy TBS cards, do a good web search as they are often
available at reduced prices.  I got mine from a Chinese ebay seller
which appeared to be an official TBS "direct from the factory" site,
on sale prices that they seem to do about twice a year.

More information about the mythtv-users mailing list