User Tools

Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

en:howto:dvb [2018/05/28 15:23] (current)
jschlehofer created
Line 1: Line 1:
 +======DVB tuners on Turris======
 +
 +With **D**igital **V**ideo **B**roadcasting 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 [[https://​linuxtv.org/​wiki/​index.php/​Main_Page|LinuxTV.org]]. \\
 +If it is too late let's go on directly to this step [[en:​howto:​dvb#​how_to_check_if_tuner_is_supported_in_linux_and_how_to_ask_to_add_support_to_turrisos|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 [[https://​kodi.tv/​|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 [[https://​tvheadend.org|TVHeaded]] with this commands on the Turris router
 +<​code>​
 +opkg update
 +opkg install tvheadend
 +</​code>​
 +
 +
 +======There are many types of TV networks======
 +
 +Most common in Europe are
 +  - DVB-S/​DVB-S2 (satellite)
 +  - DVB-T/​DVB-T2 (terestrial)
 +  - DVB-C/​DVB-C2 (cable)
 +
 +__We can split our article into four parts__
 +  - Drivers are included in TurrisOS by default
 +  - Drivers are included in TurrisOS, but we need download module or firmware and put it somewhere
 +  - Drivers are not included in TurrisOS, but they exist in Linux
 +  - 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:
 +<​code>​
 +lsusb
 +</​code>​
 +
 +and now we can see which ID has our tuner and even which manufacturer made it and how it called.
 +
 +for example:
 +<​code>​
 +Bus 001 Device 003: ID 0b48:300d TechnoTrend AG TT-connect CT-3650 CI
 +</​code>​
 +
 +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: 
 +[[https://​linuxtv.org/​wiki/​index.php/​Main_Page|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
 +
 +<​code>​
 +lsusb -t
 +</​code>​
 +
 +and then you can see: 
 +<​code>​
 +        |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=dvb_usb_ttusb2,​ 480M
 +</​code>​
 +
 +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:
 +<​code>​
 +[ 490.281564] dvb-usb: Technotrend TT-connect CT-3650 successfully initialized and connected.
 +</​code>​
 +
 +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)
 +<​code>​
 +[  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
 +</​code>​
 +
 +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:  [[en:​howto:​dvb#​how_to_check_if_tuner_is_supported_in_linux_and_how_to_ask_to_add_support_to_turrisos|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:
 +<​code>​
 +lsmod
 +</​code>​
 +
 +//​(don'​t clear it and don't close it, but you can use new terminal)//
 +
 +and you will see this output
 +<​code>​
 +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
 +</​code>​
 +
 +Make sure you have a working internet connection and plug there your tuner and it's preferred to do in a new terminal.
 +
 +<​code>​
 +lsmod
 +</​code>​
 +and now you can see this:
 +<​code>​
 +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
 +</​code>​
 +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:
 +<​code>​
 +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
 +</​code>​
 +
 +Let's check packages in the repository for \\
 +[[https://​repo.turris.cz/​turris/​packages/​base/​|Turris 1.x]] \\
 +[[https://​repo.turris.cz/​omnia/​packages/​base/​|Turris Omnia]]
 +
 +and look if the package (driver) is available on TurrisOS and you can install it with following commands:
 +<​code>​
 +opkg update
 +opkg install kmod-dvb-usb-az6007
 +</​code>​
 +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''​)
 +<​code>​
 +[143291.169246] usb 1-1.2: new high-speed USB device number 8 using fsl-ehci
 +</​code>​
 +and ''​lsusb -t''​ tell you this:
 +<​code>​
 +|__ Port 2: Dev 6, If 0, class="​Vendor"​ Specific Class, Driver=, 480M
 +</​code>​
 +
 +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.