User Tools

Site Tools

This documentation is no longer maintained by the Turris team (although it can be used by the community to share content). The current official documentation is at docs.turris.cz.

This documentation applies only Turris OS 3.x that is no longer present in newly sold routers. The new documentation is located at https://docs.turris.cz/.

DVB tuners on Turris

With Digital Video Broadcasting tuners you can stream and share your TV and radio on your LAN network and even you can choose your favorite channel and stream it outside your network.

Before we start I would like to tell you that only with one tuner you can watch multiple free channels in ONE MUX or one PAID channel from ALL MUXes. If you need to watch multiple channels simultaneously you need to have more tuners.

That's all that you want to know. Since Turris OS 2.5 it's necessary to install modules to get the working tuner on your setup.

Before we buy a tuner (eh… maybe too late)?

If not, please read it, because it contains important information. What we need to know?

First, you need to know, which type of tuner do you want to use and if it is supported in Linux, which we can find on LinuxTV.org.
If it is too late let's go on directly to this step How to check if tuner is supported in the GNU/Linux.

Why we want to use DVB tuner? Why we won't use set-top-box?

No one is telling you that you can't use set-top-box, but often firmware in set-top boxes are old (and also could be broken) and you can't add features to it, because it is closed source and manufacturers won't add additional features to it.

For example, I met case, where set-top-box was provided by the provider and there was USB port. I was saying something like: “Oh great! I can watch my movies from HDD”, but the reality was different. I can not use it, because the USB port is only for service purposes.

Also, the other reason is you can't play it anywhere as you want, because you need to move the set-top box with you and have there also signal from coax cable/antenna/satellite.

With this solution, you can use this amazing media player Kodi (When you have a larger library I really recommend to use it with Plex or Emby, because you don't need to pay for a subscription), which is available on all platforms and also on some Smart TVs and you can use it on Steam Link, but before installing Kodi you'll need to install TVHeaded with this commands on the Turris router

opkg update
opkg install tvheadend

There are many types of TV networks

Most common in Europe are

  1. DVB-S/DVB-S2 (satellite)
  2. DVB-T/DVB-T2 (terestrial)
  3. DVB-C/DVB-C2 (cable)

We can split our article into four parts

  1. Drivers are included in TurrisOS by default
  2. Drivers are included in TurrisOS, but we need download module or firmware and put it somewhere
  3. Drivers are not included in TurrisOS, but they exist in Linux
  4. Drivers are not in TurrisOS nor in Linux

What it means? Some DVB tuners are really unique and not many users have them and use them.

Supported/verified tuners and also if you want to recommend or say something about your tuner, please leave a note here:

As you can see TurrisOS supports only a few tuners, which are common and easy to buy. If your tuner runs on Linux that means it is supported on Linux and you can compile a kernel with required modules. How to get kernel module included in next Turris OS version?

It can happen that your tuner is non-labeled and you don't remember brand and type of your tuner. Don't worry and in this article, we'll help you find the necessary details.

How to check if tuner is supported in TurrisOS?

Let's plug it into your router and now you need to use SSH connection (you can also use commands in LuCI)

When you're connected in your router write or copy&paste first:

lsusb

and now we can see which ID has our tuner and even which manufacturer made it and how it called.

for example:

Bus 001 Device 003: ID 0b48:300d TechnoTrend AG TT-connect CT-3650 CI

Now we know brand and type of tuner. We will copy brand and type into the clipboard and now you will need to go to this site: LinuxTV.org and paste it to search field. Usually, you will find your tuner there and that means tuner, which you have is supported by Linux and also you can find there if it is necessary to download firmware. If your tuner isn't here I'm afraid that it isn't supported in Linux. Before you give it up you can search on Google.

In next step, we will check if there is loaded module (driver) on Turris OS

lsusb -t

and then you can see:

        |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=dvb_usb_ttusb2, 480M

From the output, we could recognize that we have a driver, but usually it doesn't mean that it all set. You can miss firmware. You will need to open syslog, which is located in /var/log/messages If everything is prepared it will tell you something similar like this:

[ 490.281564] dvb-usb: Technotrend TT-connect CT-3650 successfully initialized and connected.

Now you can skip this whole article and go to installing TVheadend to use tuner: (probably https://www.turris.cz/doc/cs/public/tvheadend_lxc ? )

If it doesn't say that it was connected it is possible that you miss some firmware. Let's check it out!

When do we need to install firmware?

First, it is better to go to this site https://www.linuxtv.org and check if tuner requires firmware. If you didn't find the correct information, let's check it manually.

When you have missing firmware you will see similar output as I do: in messages (syslog)

[  281.406071] usb 2-2: Direct firmware load for dvb-usb-terratec-h7-az6007.fw failed with error -2
[  281.406076] usb 2-2: dvb_usb_v2: Did not find the firmware file 'dvb-usb-terratec-h7-az6007.fw'. Please see linux/Documentation/dvb/ for more details on firmware-problems. Status -2

So in my case, I was forced download dvb-usb-terratec-h7-az6007.fw from some page, which was linked on LinuxTV.org

Unfortunately some tuners don't have any information about missing firmware and in this case, you need to move to this step: How to check if tuner is supported in the GNU/Linux.

#####How to find out?

#####I will show one way (there exist many ways how to find out)

We don't have module even with firmware doesn't work! Don't give it up. We can do it together. Let's check it if it is working on Linux!

How to check if the tuner is supported in Linux and how to ask to add support to TurrisOS?

It is really necessary to try it on Ubuntu or other distributions and you will need same or newer kernel. Why? Sometimes it can happen that maintainer of driver decided to provide no support for it. Also, he could rewrite older code and also fix some old bugs.

Anyway, it's better to use Ubuntu live or something similar. It should be a new system, because we need to find, which modules are required by DVB tuner.

First, you will need to open terminal and write there:

lsmod

(don't clear it and don't close it, but you can use new terminal)

and you will see this output

ubuntu@ubuntu:~$ lsmod
Module                  Size  Used by
drbg                   32768  1
ansi_cprng             16384  0
ctr                    16384  1
ccm                    20480  1
arc4                   16384  2
iwldvm                233472  0
mac80211              737280  1 iwldvm
snd_hda_codec_realtek    81920  1
snd_hda_codec_generic    77824  1 snd_hda_codec_realtek
snd_hda_intel          36864  3
iwlwifi               200704  1 iwldvm
snd_hda_codec         135168  3 snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_intel
snd_hda_core           73728  4 snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel
coretemp               16384  0
snd_hwdep              16384  1 snd_hda_codec
snd_pcm               106496  3 snd_hda_codec,snd_hda_intel,snd_hda_core
cfg80211              565248  3 iwlwifi,mac80211,iwldvm
input_leds             16384  0
joydev                 20480  0
snd_seq_midi           16384  0
serio_raw              16384  0
snd_seq_midi_event     16384  1 snd_seq_midi
snd_rawmidi            32768  1 snd_seq_midi
lpc_ich                24576  0
snd_seq                69632  2 snd_seq_midi_event,snd_seq_midi
snd_seq_device         16384  3 snd_seq,snd_rawmidi,snd_seq_midi
snd_timer              32768  2 snd_pcm,snd_seq
ite_cir                28672  0
snd                    81920  16 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel,snd_seq_device
rc_core                28672  1 ite_cir
mac_hid                16384  0
soundcore              16384  1 snd
shpchp                 36864  0
parport_pc             32768  0
ppdev                  20480  0
lp                     20480  0
parport                49152  3 lp,ppdev,parport_pc
autofs4                40960  2
squashfs               49152  1
overlay                49152  1
nls_iso8859_1          16384  1
dm_mirror              24576  0
dm_region_hash         24576  1 dm_mirror
dm_log                 20480  2 dm_region_hash,dm_mirror
uas                    24576  0
usb_storage            69632  2 uas
i915                 1208320  5
psmouse               126976  0
ahci                   36864  0
libahci                32768  1 ahci
i2c_algo_bit           16384  1 i915
drm_kms_helper        139264  1 i915
syscopyarea            16384  1 drm_kms_helper
r8169                  81920  0
sysfillrect            16384  1 drm_kms_helper
sysimgblt              16384  1 drm_kms_helper
mii                    16384  1 r8169
fb_sys_fops            16384  1 drm_kms_helper
drm                   360448  7 i915,drm_kms_helper
fjes                   28672  0
video                  40960  1 i915

Make sure you have a working internet connection and plug there your tuner and it's preferred to do in a new terminal.

lsmod

and now you can see this:

ubuntu@ubuntu:~$ lsmod
Module                  Size  Used by
dvb_usb_az6007         20480  0
cypress_firmware       16384  1 dvb_usb_az6007
dvb_usb_v2             36864  1 dvb_usb_az6007
dvb_core              122880  2 dvb_usb_v2,dvb_usb_az6007
drbg                   32768  1
ansi_cprng             16384  0
ctr                    16384  1
ccm                    20480  1
arc4                   16384  2
iwldvm                233472  0
mac80211              737280  1 iwldvm
snd_hda_codec_realtek    81920  1
snd_hda_codec_generic    77824  1 snd_hda_codec_realtek
snd_hda_intel          36864  3
iwlwifi               200704  1 iwldvm
snd_hda_codec         135168  3 snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_intel
snd_hda_core           73728  4 snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel
coretemp               16384  0
snd_hwdep              16384  1 snd_hda_codec
snd_pcm               106496  3 snd_hda_codec,snd_hda_intel,snd_hda_core
cfg80211              565248  3 iwlwifi,mac80211,iwldvm
input_leds             16384  0
joydev                 20480  0
snd_seq_midi           16384  0
serio_raw              16384  0
snd_seq_midi_event     16384  1 snd_seq_midi
snd_rawmidi            32768  1 snd_seq_midi
lpc_ich                24576  0
snd_seq                69632  2 snd_seq_midi_event,snd_seq_midi
snd_seq_device         16384  3 snd_seq,snd_rawmidi,snd_seq_midi
snd_timer              32768  2 snd_pcm,snd_seq
ite_cir                28672  0
snd                    81920  16 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel,snd_seq_device
rc_core                28672  3 dvb_usb_v2,dvb_usb_az6007,ite_cir
mac_hid                16384  0
soundcore              16384  1 snd
shpchp                 36864  0
parport_pc             32768  0
ppdev                  20480  0
lp                     20480  0
parport                49152  3 lp,ppdev,parport_pc
autofs4                40960  2
squashfs               49152  1
overlay                49152  1
nls_iso8859_1          16384  1
dm_mirror              24576  0
dm_region_hash         24576  1 dm_mirror
dm_log                 20480  2 dm_region_hash,dm_mirror
uas                    24576  0
usb_storage            69632  2 uas
i915                 1208320  5
psmouse               126976  0
ahci                   36864  0
libahci                32768  1 ahci
i2c_algo_bit           16384  1 i915
drm_kms_helper        139264  1 i915
syscopyarea            16384  1 drm_kms_helper
r8169                  81920  0
sysfillrect            16384  1 drm_kms_helper
sysimgblt              16384  1 drm_kms_helper
mii                    16384  1 r8169
fb_sys_fops            16384  1 drm_kms_helper
drm                   360448  7 i915,drm_kms_helper
fjes                   28672  0
video                  40960  1 i915

Now you will need to do difference between these two outputs. And if you want you can also use dmesg to check if there's required firmware.

You can see this difference:

dvb_usb_az6007         20480  0
cypress_firmware       16384  1 dvb_usb_az6007
dvb_usb_v2             36864  1 dvb_usb_az6007
dvb_core              122880  2 dvb_usb_v2,dvb_usb_az6007
rc_core                28672  3 dvb_usb_v2,dvb_usb_az6007,ite_cir

Let's check packages in the repository for
Turris 1.x
Turris Omnia

and look if the package (driver) is available on TurrisOS and you can install it with following commands:

opkg update
opkg install kmod-dvb-usb-az6007

but also don't forget to install other dependencies from difference output.

If something is missing or it isn't supported at all you need to go to this step: How to check if the tuner is supported in Linux and how to ask to add support to TurrisOS?

RC packages are for remote controller, which you can't use with the router.

Why you couldn't try it on Windows?

I know that it would be easier for you, but we need to know if there exist support for your tuner. Sometimes it could happen that manufacturer doesn't support Linux, which is bad, but you can try to contact him to add support for Linux, which could take the time or he will tell you that he is so sorry that he won't do it. I know that it can be hard and that's why there's community, which can do their job - when there's no support at all. I'm really afraid in this case you're forced to use it on a supported system. When it isn't working on supported system maybe your is broken and it is time to buy a new tuner. At the beginning of this article, I told you, how to choose tuner. Don't forget it. The manufacturer needs to support GNU/Linux and also provide drivers to the upstream. In that case, your tuner can live forever!

When do we need to compile module?

We figured it out that your tuner is running on Linux, but we don't have drivers for your tuner.

Which you can see by this output:

in syslog (/var/log/messages)

[143291.169246] usb 1-1.2: new high-speed USB device number 8 using fsl-ehci

and lsusb -t tell you this:

|__ Port 2: Dev 6, If 0, class="Vendor" Specific Class, Driver=, 480M

If you do not hurry and will wait until we add required package, please send us difference output to tech.support@turris.cz and don't forget to include your tuner name and type.