TBS Technologies is a company that specializes in digital TV tuner cards for PC, and recently they’ve also worked on ARM based boards or devices such as the Matrix 2. The company has sent me one of their TBS5520 USB tuner board and box supporting DVB-T2, DVB-S2, DVB-C and ISDB-T for evaluation, as well as some Linux drivers. Today, I’ll provide some specifications, take some pictures, and show how I compiled and installed the drivers in my Ubuntu 14.04 computer.
TBS 5520 Tuner Box specifications
TBS5520 is a multi-standard USB tuner with the following features:
- USB – USB 2.0 device port
- Antenna connectors – 1x LNB IN, 1x RF IN
- Standards
- DVB-S2/S
- Symbol rate: 1~45Msps;
- FEC
- DVB-S2: 8PSK: 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 9/10;
- DVB-S: QPSK: 1/2, 2/3, 3/4, 5/6, 7/8
- DVB-T2/T
- Receiving channel: VHF band, UHF band;
- Bandwidth: 1.7,5, 6, 7, 8 MHz;
- FEC: QPSK, 16QAM, 64QAM, 256QAM
- FFT mode: 1K, 2K, 4K, 8K, 16K, 32K
- Code rate: 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 7/8
- RF-Input impedance: 75Ω (IEC-DIN female)
- DVB-C & ITU J83 A/B/C
- Frequency range: 47~862 MHz
- Signal level: -65~-10dBm
- Symbol rate: 0.87 to 9Mbaud
- QAM modes: 16QAM, 32QAM, 64QAM, 128QAM, 256QAM
- ISDB-T
- Supported modes: 1, 2, 3
- Bandwidth: 6 MHz, 7MHz, 8MHz
- QAM modes: DQPSK, QPSK, 16QAM, 64QAM
- Code rate: 1/2, 2/3, 3/4, 5/6, 7/8
- DVB-S2/S
- Misc – IR receiver, power LED
- Dimensions – ~ 8 x 6 cm
TBS5520 Board and Box Pictures
The first time I received the board with a cable with Y USB cable.
The shield is soldered, so I could not check the details of the tuner from the hardware, but as we”l see below with drivers to hardware includes RafaelMicro R848 multi-standard tuner and AVL6882 demodulator.
After your truly spent many hours struggling with the Linux drivers, the company informed me there was likely an issue with the hardware, so they sent me the full kit.
The kit has the same tuner board in a case, as well as the Y USB cable, a remote control, an indoor antenna, a coaxial to F-cable adapter, and a DVD with some documentation and software.
Building TBS5520 Drivers in Linux 3.x
I’m running Ubuntu 14.04.3 with kernel 3.18.xx on my computer, and if you connect the tuner, the USB is recognized:
1 2 3 |
[ 606.681622] usb 5-2.2: new high-speed USB device number 9 using ehci-pci [ 606.774049] usb 5-2.2: New USB device found, idVendor=734c, idProduct=5520 [ 606.774057] usb 5-2.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0 |
But you don’t get anything in /dev/dvb, so you’ll need some drivers. So TBS provided me with a patch for Linux 3.x (Linux 4.x is currently WIP), and told me to “build it the usual way”. So I decided to do so on my computer instead of an ARM board, as I thought it might be easier…
I basically followed the instructions I wrote in “How to build a single kernel driver in Ubuntu“. I had already installed Linux 3.18.0 for this, but I first upgraded to a more recent Linux 3.18.23 version:
1 2 3 4 |
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.18.23-vivid/linux-headers-3.18.23-031823-generic_3.18.23-031823.201510291931_amd64.deb wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.18.23-vivid/linux-image-3.18.23-031823-generic_3.18.23-031823.201510291931_amd64.deb wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.18.23-vivid/linux-headers-3.18.23-031823_3.18.23-031823.201510291931_all.deb sudo dpkg -i linux-headers-3.18.23-*.deb linux-image-3.18.23-*.deb |
After installation, I rebooted my machine to make use of the update kernel, and downloaded Ubuntu Linux source code in order to patch it and build the drivers.
1 2 3 4 |
mkdir -p ~/edev/tbs cd ~/edev/tbs git clone git://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack v3.18.23 cd v3.18.23 |
At this stage, the source is set to the latest working version
1 2 |
make kernelversion 4.3.0-rc7 |
So you’ll want to switch to the tag/branch of the kernel installed on your computer to avoid “invalid format” error when inserting the modules.
1 2 3 4 5 6 7 8 9 10 |
git checkout v3.18.23 Checking out files: 100% (27466/27466), done. Note: checking out 'v3.18.23'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b new_branch_name HEAD is now at 8341455... Linux 3.18.23 |
Let’s make sure we’ve indeed switched to 3.18.23.
1 2 |
make kernelversion 3.18.23 |
Now I’ll download and apply Ubuntu specific patchsets:
1 2 3 4 5 6 7 8 |
cd .. wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.18.23-vivid/0001-base-packaging.patch wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.18.23-vivid/0002-debian-changelog.patch wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.18.23-vivid/0003-configs-based-on-Ubuntu-3.18.0-7.8.patch pushd v3.18.23 patch -p2 < ../0001-base-packaging.patch patch -p2 < ../0002-debian-changelog.patch patch -p2 < ../0003-configs-based-on-Ubuntu-3.18.0-7.8.patch |
Before applying TBS5520 patch to the source tree:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
patch -p1 < ../../tbs5520.patch patching file drivers/media/dvb-frontends/AVL_Demod_Patch_DVBCFw_.h patching file drivers/media/dvb-frontends/AVL_Demod_Patch_DVBSxFw_.h patching file drivers/media/dvb-frontends/AVL_Demod_Patch_DVBTxFw_.h patching file drivers/media/dvb-frontends/Kconfig Hunk #1 succeeded at 793 (offset -22 lines). patching file drivers/media/dvb-frontends/Makefile Hunk #1 succeeded at 116 (offset -2 lines). patching file drivers/media/dvb-frontends/avl6882.c patching file drivers/media/dvb-frontends/avl6882.h patching file drivers/media/dvb-frontends/avl6882_priv.h patching file drivers/media/tuners/Kconfig Hunk #1 succeeded at 274 (offset -3 lines). patching file drivers/media/tuners/Makefile Hunk #1 FAILED at 41. 1 out of 1 hunk FAILED -- saving rejects to file drivers/media/tuners/Makefile.rej patching file drivers/media/tuners/r848.c patching file drivers/media/tuners/r848.h patching file drivers/media/tuners/r848_priv.h patching file drivers/media/usb/dvb-usb/Kconfig patching file drivers/media/usb/dvb-usb/Makefile patching file drivers/media/usb/dvb-usb/tbs5520.c patching file drivers/media/usb/dvb-usb/tbs5520.h |
Patching failed, but it was only a small issue, so you can manually edit drivers/media/tuners/Makefile to add the line with r848:
1 2 3 4 |
obj-$(CONFIG_MEDIA_TUNER_QM1D1C0042) += qm1d1c0042.o obj-$(CONFIG_MEDIA_TUNER_R848) += r848.o ccflags-y += -I$(srctree)/drivers/media/dvb-core ccflags-y += -I$(srctree)/drivers/media/dvb-frontends |
Let start the actually build procedure with make olconfig, which should ask about Turbosight TBS5520 support.:
1 2 3 4 5 6 |
make oldconfig ... Azurewave DVB-S/S2 USB2.0 AZ6027 support (DVB_USB_AZ6027) [M/n/?] m Technisat DVB-S/S2 USB2.0 support (DVB_USB_TECHNISAT_USB2) [M/n/?] m Turbosight TBS5520 support (DVB_USB_TBS5520) [N/m/?] (NEW) |
Build TBS5520 drivers as modules by entering “m”, and carry on with the procedure:
1 2 3 |
make prepare make scripts cp -v /usr/src/linux-headers-3.18.23-031823-generic/Module.symvers . |
All good. Then I tried to build the modules one by one, as with the serial drivers I used in the previous instructions, but it did not work…
1 2 3 4 5 6 7 8 |
pushd drivers/media/usb/dvb-usb make -C /lib/modules/$(uname -r)/build M=$(pwd) modules make: Entering directory `/usr/src/linux-headers-3.18.23-031823-generic' CC [M] /home/jaufranc/edev/tbs/linux/v3.18/drivers/media/usb/dvb-usb/dvb-usb-firmware.o In file included from /home/jaufranc/edev/tbs/linux/v3.18/drivers/media/usb/dvb-usb/dvb-usb-common.h:12:0, from /home/jaufranc/edev/tbs/linux/v3.18/drivers/media/usb/dvb-usb/dvb-usb-firmware.c:10: /home/jaufranc/edev/tbs/linux/v3.18/drivers/media/usb/dvb-usb/dvb-usb.h:19:26: fatal error: dvb_frontend.h: No such file or directory #include "dvb_frontend.h" |
Eventually, I did not find a solution, and TBS was not very helpful, except they told me the media tree drivers were a pain to build, and eventually mentioned I’d also need a firmware file (dvb-usb-tbsqbox-id5520.fw) and copy it to /lib/firmware… .
So I decided to just build the complete kernel and install all modules and firmware:
1 2 3 4 |
popd make -j8 sudo make modules_install cp dvb-usb-tbsqbox-id5520.fw /lib/firmware/ |
All modules where built into /lib/modules/3.18.23+/ directory, and i first tried to load the modules manually
1 2 3 4 5 6 7 8 9 10 11 12 |
pushd /lib/modules/3.18.23+/kernel/drivers/media/dvb-frontends sudo insmod avl6882.ko cd ../tuners/ sudo insmod r848.ko cd ../usb/dvb-usb/ sudo modprobe dvb-core sudo modprobe dvb-usb sudo insmod dvb-usb-tbs5520.ko dvb-usb: found a 'TBS 5520 USB2.0' in cold state, will try to load a firmware [ 8681.671885] usb 5-2.2: Direct firmware load for dvb-usb-tbs5520-01.fw failed with error -2 [ 8681.671889] dvb-usb: did not find the firmware file. (dvb-usb-tbs5520-01.fw) Please see linux/Documentation/dvb/ for more details on firmware-problems. (-2) [ 8681.671920] usbcore: registered new interface driver tbs5520 |
1 |
sudo ln -s dvb-usb-tbsqbox-id5520.fw dvb-usb-tbs5520-01.fw |
1 2 3 4 |
cd /lib/modules/$(uname -r)/kernel/drivers sudo mv media/ media_backup cd /lib/modules/3.18.23+/kernel/drivers sudo ln -s media/ /lib/modules/$(uname -r)/kernel/drivers/media |
Then I rebooted the machine, all drivers were automatically loaded successfully, and I got a dvb adapter:
1 2 3 |
ls -l /dev/dvb total 0 drwxr-xr-x 2 root root 100 Nov 14 16:51 adapter0 |
InitiallyHowever the output of dmesg appears suspicious:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
[ 9451.398462] usb 5-2.1: new high-speed USB device number 12 using ehci-pci [ 9451.490820] usb 5-2.1: New USB device found, idVendor=734c, idProduct=5520 [ 9451.490828] usb 5-2.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 9451.533680] Request for unknown module key 'Magrathea: Glacier signing key: 4e55adfaa773869b640a4ee3c9774a582d09d643' err -11 [ 9451.534052] dvb-usb: found a 'TBS 5520 USB2.0' in cold state, will try to load a firmware [ 9451.535003] dvb-usb: downloading firmware from file 'dvb-usb-tbs5520-01.fw' [ 9451.535006] tbs5520: start downloading tbs5520 firmware [ 9451.648172] usb 5-2.1: USB disconnect, device number 12 [ 9451.654195] tbs5520: end downloading tbs5520 firmware [ 9451.654212] dvb-usb: found a 'TBS 5520 USB2.0' in warm state. [ 9451.654348] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer. [ 9451.654384] DVB: registering new adapter (TBS 5520 USB2.0) [ 9451.654389] dvb-usb: MAC address: 00:00:00:00:00:00 [ 9451.663373] Request for unknown module key 'Magrathea: Glacier signing key: 4e55adfaa773869b640a4ee3c9774a582d09d643' err -11 [ 9451.664051] i2c i2c-3: avl6882: attach failed family id mismatch [ 9451.664057] TBS5520: frontend attach failed [ 9451.664059] dvb-usb: no frontend was attached by 'TBS 5520 USB2.0' [ 9451.664136] input: IR-receiver inside an USB DVB receiver as /devices/pci0000:00/0000:00:16.2/usb5/5-2/5-2.1/input/input22 [ 9451.664509] dvb-usb: schedule remote query interval to 150 msecs. [ 9451.664513] dvb-usb: TBS 5520 USB2.0 successfully initialized and connected. [ 9451.664548] usbcore: registered new interface driver tbs5520 [ 9451.722781] dvb-usb: TBS 5520 USB2.0 successfully deinitialized and disconnected. [ 9453.316364] usb 5-2.1: new high-speed USB device number 13 using ehci-pci [ 9453.408646] usb 5-2.1: New USB device found, idVendor=734c, idProduct=5520 [ 9453.408652] usb 5-2.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 9453.409072] dvb-usb: found a 'TBS 5520 USB2.0' in cold state, will try to load a firmware [ 9453.409121] dvb-usb: downloading firmware from file 'dvb-usb-tbs5520-01.fw' [ 9453.409124] tbs5520: start downloading tbs5520 firmware [ 9453.528136] tbs5520: end downloading tbs5520 firmware [ 9453.528153] dvb-usb: found a 'TBS 5520 USB2.0' in warm state. [ 9453.528277] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer. [ 9622.541277] DVB: registering new adapter (TBS 5520 USB2.0) [ 9622.541283] dvb-usb: MAC address: 00:00:00:00:00:00 [ 9622.633219] i2c i2c-3: avl6882: attach failed family id mismatch [ 9622.633233] TBS5520: frontend attach failed [ 9622.633237] dvb-usb: no frontend was attached by 'TBS 5520 USB2.0' [ 9622.662480] input: IR-receiver inside an USB DVB receiver as /devices/pci0000:00/0000:00:16.2/usb5/5-2/5-2.1/input/input65 [ 9622.662603] dvb-usb: schedule remote query interval to 150 msecs. [ 9622.662607] dvb-usb: TBS 5520 USB2.0 successfully initialized and connected. [ 9622.664354] usb 5-2.1: USB disconnect, device number 55 [ 9622.714569] dvb-usb: TBS 5520 USB2.0 successfully deinitialized and disconnected. [ 9622.862744] systemd-udevd[5256]: Failed to apply ACL on /dev/dvb/adapter0/demux0: No such file or directory [ 9622.862767] systemd-udevd[5256]: Failed to apply ACL on /dev/dvb/adapter0/demux0: No such file or directory [ 9622.863617] systemd-udevd[5259]: Failed to apply ACL on /dev/dvb/adapter0/dvr0: No such file or directory [ 9622.863639] systemd-udevd[5259]: Failed to apply ACL on /dev/dvb/adapter0/dvr0: No such file or directory [ 9622.864932] systemd-udevd[5262]: Failed to apply ACL on /dev/dvb/adapter0/net0: No such file or directory [ 9622.864952] systemd-udevd[5262]: Failed to apply ACL on /dev/dvb/adapter0/net0: No such file or directory [ 9624.188617] usb 5-2.1: new high-speed USB device number 56 using ehci-pci [ 9624.280959] usb 5-2.1: New USB device found, idVendor=734c, idProduct=5520 [ 9624.280968] usb 5-2.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 9624.281467] dvb-usb: found a 'TBS 5520 USB2.0' in cold state, will try to load a firmware [ 9624.281545] dvb-usb: downloading firmware from file 'dvb-usb-tbs5520-01.fw' [ 9624.281550] tbs5520: start downloading tbs5520 firmware [ 9624.400378] tbs5520: end downloading tbs5520 firmware [ 9624.400400] dvb-usb: found a 'TBS 5520 USB2.0' in warm state. [ 9624.400491] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer. [ 9624.415314] DVB: registering new adapter (TBS 5520 USB2.0) [ 9624.415322] dvb-usb: MAC address: 00:00:00:00:00:00 |
There are some i2c errors, the MAC address is set to 00:00:00:00:00:00, and some systemd errors are popping up too. And soon after, I noticed /dev/dvb/adapter0 would just appear and disappear in loop.
The next step will be to find a solution to this issue, and get a DVB-T2 video stream likely with TvHeadEnd.
The tuner can be purchased for $79.99 on buydvb.net, and you can to check out TBS5520 tuner page for some more details.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
If the drivers will be merged to mainline kernel and also they provide drivers for windows then this will be a winner (mostly because of multi standard – great for travellers)
Otherwise… just garbage…
Why are TBS so bad at handling Linux drivers?
I’ve now been recommended to use the official drivers @ http://www.tbsdtv.com/download/document/common/tbs-linux-drivers_v151105.zip
Not sure when I’ll try again though.
Friend need your help as it can advise an external powered USB COM hub for use with CoreELEC + TBS5520SE.
I was using an old 100% functional hub the same thing, I could not find the model for sale.
USB 2.0 7-Port Hub (HE-702A)
I’m asking for help because I bought two similar models and it didn’t work.
I understand you want to use a USB powered hub to connect TBS5520SE USB tuner, and you bought two, but they don’t work and are asking for recommendation of a USB powered hub. Is that correct? If so, I can’t really think of any specific model. Maybe the best is to look for USB powered hubs on Amazon, and check users’ review.
TBS has been operating for years with Libreelec + 7-Port USB 2.0 Hub (HE-702A) + KI Plus (without tuner)
I was currently using Coreelec + TBS + KI Plus.
The usb hub is in trouble, I searched for the same model without success.
Thanks for answering.
LOL, what is this? A review of a product that is not working.
I have no idea what this MAC address is for, but it was left empty, perhaps for testing purposes.
Remove the “return 0;” from tbs5520_read_mac_address and you can see if it reads the eeprom.
Perhaps is a kind of unique serial number?
And it seems you have a USB cable problem ? There is a connect and a following disconnect, that is why systemd-udevd complains. Does it woks on windows?
@@lex
I’ve had problems in the past so I tried the tuner with a USB 3.0 hub, a powered USB 2.0 hub, and directly on the front panel of my computer, the latter being the most reliable, but somewhat inconvenient to access.
Anyway, I want to do some other things, so I’ll get back to the tuner later.
Just leave here a tip, a help for those who have a TBS.
Works with CoreELEC!
https://discourse.coreelec.org/t/tbs5520se-coreelec-crazycat/6804
The official drivers were released and it seems the tuner is performing ok with Linux & Windows with these drivers.
Tested DVB-S2/C & T no T2 or ISBT tho here
A plus
i was able to compile succesfull the drivers for ARM platform and using the tuner with Opelec Amlogic boxes such as S812, s805 and Qnap NAS.
Minus:
unable to switch automatically between standards from windows … need a third part software.
Other interesting stuff:
Android drivers support via an apk in the future (again this feature will make a pretty good difference)
The very first to select a device to use with linux, we have to check a mainline kernel supports right out of the box.
Inside kernel source tree just invoke “make menuconfig” and travel deep down to kernel drivers, there will be a tons of supported devices.
Compiling an unsupported in mainline driver take a lot of pain and finally maybe got an unstable drivers.
This product is too much expensive and very complicated to install and make it working. They need make true Plug & Play solution for wide usage by any user and not just experts. And by the way TBS have worst support ever in dvb card market, so it is better to stick with Technicast or Hauppauge or other brand.
Hummm, when you mention openelec, this tuner cost more than OpenElec box by Wetek, and they offer it for 81 usd with free shipping and no need for pc to watch tv
The box is too expensive as it is, I ll give it another chance and I ll wait for a full review or to the first opportunity to test it. But for a single chip tuner it could be much cheaper. The competitor dvbsky it doing great job with its t9580 s2 t2 c tuner, it need a pc or htpc with pcie slot but has superior technical specifications.
@Ovi
I only found binary x86 drivers for the tbs5520. Can you share a link to the drivers that can be compiled for other platforms ?
Cool adapter! Too bad that there are no Android or Linux set-top boxes boxes available with Kodi support that have all those tuner formats integrated.
Would be very nice if popular Kodi distos like OpenELEC, OSMC, and EmbER shipped with drivers and firmware for this adapter out-of-the-box.
http://openelec.tv
http://osmc.tv
http://ember-dev.com
@All
The tuner was rushed on the market but very soon this tuner drivers oss code will be released and enthusiast will be able to tune it and tweak it as they will wish.
For the opensource patch seems Luis Alves will handle it and maintain it.
@Ryan AC
Whole sale price is way lower.
As for support (show me one chinese brand / non brand which provide you professional support?!!)
As for install “complication” part lets say that once merged in mainline kernel we will manage to make possible to install via an kodi addon.
New drivers compatible with kernel 4.3 were released by TBS on Nov, 15th.
Did anybody test them? Are these issues still present?
@gb_master
Still not working for me. End of the build in Ubuntu 14.04 64-bit with Linux 3.18.23 kernel.
@cnxsoft not even with a 4.3 kernel? According to their changelog, it should be compatible…
@gb_master
You can try to see if it builds.
I’m not willing to spend any more time on that poorly maintained and documented tuner.
it plays hd content? thanks for the review
@Dani
I have not spent more time on it. But since it supports DVB-T2 and DVB-S2, full HD should be supported.
Hello
dear friend tbs 5530 driver bug too blue screens every time you scan with channel tsreader progdvb and smartdvb.
It does not even work if you use dvbstreamexplore and also altronika dvsstation 4 unlike other map tv.
It is not detect by altronika dvsstation 4 and also DVb control mosaic, dvb control and analyzer other.
if you do not want to use dvb dvb viewer dream or not buy tbs 5530 multi standard usb tv tuner box.
@Ovi
Where did you find DVB-T/T2 drivers for linux ?
Hi Cnx,
Are these dual tuner? I mean, can it lock on 2 freqs?
@Kęstutise
I have not managed to make it, so I’m not sure.
@cnxsoft
It’s a single tuner with multi standard capabilities
Recently I’ve upgraded my Linux distro from 3.x to 4.x kernel and now DVB-T/T2 cannot be tuned with w_scan, kaffeine, or whatever utilities. Only DVB-S/S2 works. I’ve tried with open source drivers (CrazyCat) without solution. I’ve tried with TBS drivers but these only works with DVB-S/S2. Both of these don’t give any solution …
I’ve spent too much time with this garbage tuner. It only works in Windows. My advice for all: don’t buy it if you plan to install in a Linux system (with 4.x kernel), it’s a waste of time and money.