DVB via USB: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
No edit summary
 
(360 intermediate revisions by 84 users not shown)
Line 1: Line 1:
For information about supported USB devices, see the appropriate device category: <BR>
== Introduction ==
* [[ATSC USB Devices]]
Here is a market overview of available DVB/ATSC USB devices sorted by its required LinuxTV driver (if supported - and yes - most of them are).
* [[DVB-C USB Devices]]
* [[DVB-S USB Devices]]
* [[DVB-S2 USB Devices]]
* [[DVB-T USB Devices]]
* [[DVB-T2 USB Devices]]
<BR>


__TOC__
Please help to keep this list up-to-date so that it is useful for everyone!
==Introduction==
'''For all DVB USB devices you will need to load (if not compiled into the kernel):'''
* i2c-core
* crc32
* firmware_class
* dvb-core.ko
* dvb-pll.ko
and maybe others too. If the loading fails for any particular module you'll get a "unknown symbol" message. Then have a look at dmesg to find out, which symbols (functions) are missing. After you've found out which module was absent, please come back here and add it to the list/device-entry.


The ''Type'' field specifies the USB standard(s) supported by the device.
'''For all devices shown below you need to load (if not compiled into the kernel):'''
- i2c-core
- crc32
- firmware_class
- dvb-core.ko
- dvb-pll.ko
and maybe others too. If the loading fails for any particular module you'll get a "unkown symbol"-message. Then take a look at dmesg to find out, which symbols (functions) are missing. After you've found out which module was absent, please come back here and add it to the list/device-entry.


; USB1.1
Most of the USB devices need a firmware to run. Some of the firmware files can be downloaded here: [http://www.linuxtv.org/downloads/firmware/].
: The device supports USB 1.1 only, and will work at 1.1 speeds when attached to a USB 2.0 port.
; USB2.0
: The device supports USB 2.0 only, and will not work when attached to a USB 1.1-only port. Such devices are normally capable of delivering the complete [[TS|Transport Stream]] to the software demuxer.
; USB2.0, USB1.1
: The device supports USB 1.1 and USB 2.0, and will work at any speed supported by 1.1 or 2.0. When running in USB 2.0 mode, such devices can deliver the complete [[TS|Transport Stream]] (unless specified otherwise).


== Firmware ==
'''Remark:''' the field type specifies the real USB-standard of the device
- '''USB1.1''': the device can be run on the USB1.1 and on the USB2.0 bus but only with USB1.1-speed.
- '''USB2.0''': the device can only be connected to a real USB2.0 port and runs with USB2.0-speed.
(delivering the complete [[Transport Stream]] to the software demuxer.)
- '''USB2.0/USB1.1''': the device is actually USB2.0, but can also be driven on a USB1.1 port. (if not
mentioned elsewhere, these boxes can deliver the complete [[Transport Stream]] when running in USB2.0
mode)


Most of the USB devices need firmware to run. Some of the firmware files can be downloaded from [http://www.linuxtv.org/downloads/firmware/ here].
== DVB-T ==


You need to copy the firmware to the correct place on your system. This will normally be /lib/firmware or a folder below it. Here is an example:
=== DiBcom USB1.1 DVB-T devices (based on the [[DiB3000M-B]]) ===


- $ cd /lib/firmware
All devices below are fully supported by the LinuxTV driver. The following drivers are needed for these devices:
- $ ls
- dib3000-common.ko
- 2.6.15-23-amd64-xeon
- dib3000mb.ko
- $ cd 2.6.15-23-amd64-xeon
- dvb-usb.ko
- dvb-usb-common.ko
- $ sudo cp ~/dvb-usb-umt-010-02.fw .
- dvb-usb-dibusb-mb.ko


Now, you need to unplug your USB device. Plug it in again, and then take a look at dmesg.
These [[frontend|frontend(s)]]/[[demodulator|demodulator(s)]] can be found in various revisions of this device:
- $ dmesg
- [[DiB3000M-B|DiBcom 3000M-B]]
- < ...... lines cut for clarity ..... >
- usb 5-2: USB disconnect, address 3
- usb 5-2: new high speed USB device using ehci_hcd and address 8
- dvb-usb: found a 'Hanftek UMT-010 DVB-T USB2.0' in cold state, will try to load a firmware
- dvb-usb: downloading firmware from file 'dvb-usb-umt-010-02.fw' to the 'Cypress FX2'
- dvb-usb: Hanftek UMT-010 DVB-T USB2.0 successfully initialized and connected.
- usb 5-2: USB disconnect, address 8
- dvb-usb: generic DVB-USB module successfully deinitialized and disconnected.


In this case, I have success, because the firmware was loaded.
'''Comment:''' Most of these device listed below are (sometimes slightly modified) clones of a DVB-T USB1.1 reference design made by [[DiBcom]].


Remember that on some system the firmware is loaded by udev, so if for some reason the firmware is not loaded you may check that
{| width="900" border=1 cellpadding=2 cellspacing=0 valign="top"
udev is acutally running.
|- bgcolor=#efefef valign="top"
To check you could for example issue the command:
! '''device/model'''
- $ ps -e | grep udev
! '''type'''
! '''firmware name'''
! '''comments/quirks'''
! '''URL/pictures'''
|- align="left"
! TwinhanDTV USB-Ter (VP7041)
! USB1.1
! dvb-usb-dibusb-5.0.0.11.fw
! first DVB-T USB box on the market with dib3000mb built-in
! [http://www.twinhan.com/product_terrestrial_3.asp]
|- align="left"
! TwinhanDTV Magic Box (VP7041e)
! USB1.1
! dvb-usb-dibusb-5.0.0.11.fw
! -
! [http://www.twinhan.com/product_terrestrial_4.asp]
|- align="left"
! HAMA DVB-T USB1.1 device
! USB1.1
! dvb-usb-dibusb-5.0.0.11.fw
! -
! -
|- align="left"
! CTS Portable (Chinese Television System)
! USB1.1
! dvb-usb-dibusb-5.0.0.11.fw
! -
! [http://www.2cts.tv/ctsportable/]
|- align="left"
! KWorld V-Stream XPERT DTV DVB-T USB
! USB1.1
! dvb-usb-dibusb-5.0.0.11.fw
! -
! [http://www.kworld.com.tw/en/product/DVBT-USB/DVBT-USB.html]
|- align="left"
! JetWay DTV DVB-T USB
! USB1.1
! dvb-usb-dibusb-5.0.0.11.fw
! -
! [http://www.jetway.com.tw/evisn/product/lcd-tv/DVT-USB/dtv-usb.htm]
|- align="left"
! ADSTech Instant TV DVB-T USB
! USB1.1
! dvb-usb-dibusb-5.0.0.11.fw
! -
! [http://www.adstech.com/products/PTV-333/intro/PTV-333_intro.asp?pid=PTV-333]
|- align="left"
! Ultima Electronic/Artec T1 USB TVBOX
! USB1.1
! dvb-usb-dibusb-5.0.0.11.fw or <br />dvb-usb-dibusb-an2235-01.fw
! There are several clones of this device: some have the AN2235 USB controller instead of the AN2135. Some using a Panasonic tuner instead of the default Thomson Cable tuner. Most of the Boxes have standard Cypress USB IDs which makes it very hard to identify them. A HowTo for this devices can be found [[Artec T1 USB TV Box|here]].
! [http://www.ultima-elec.nl/]
|- align="left"
! Compro Videomate DVB-U2000
! USB1.1
! dvb-usb-dibusb-5.0.0.11.fw
! -
! [http://www.comprousa.com/products/vmu2000.htm]
|- align="left"
! Grandtec DVB-T USB1.1
! USB1.1
! dvb-usb-dibusb-5.0.0.11.fw
! -
! [http://www.grand.com.tw/en/product_form.asp?lwk_series=54&lwk_product=h-030&lwk_page=]
|- align="left"
! AVerMedia AverTV DVBT USB
! USB1.1
! dvb-usb-dibusb-5.0.0.11.fw
! -
! [http://www.avermedia.com/cgi-bin/products_digitvtuner_dvbtusb.asp?show=2]
|- align="left"
! ADSTech Instant TV DVB-T USB2.0 (dark blue)
! USB2.0/USB1.1
! dvb-usb-adstech-usb2-02.fw
! The only known USB2.0 device with a [[DiB3000M-B]] demodulator.
! [http://www.adstech.com/products/PTV-333/intro/PTV-333_intro.asp?pid=PTV-333]
|-
|}


If the output is empty, then you have to restart the udev daemon. For example in a Debian based system you may try with:
=== DiBcom USB2.0 DVB-T devices (based on the [[DiB3000M-C/P]]) ===
- $ sudo /etc/init.d/udev restart


then try again, removing and inserting the module again with modprobe.
All devices below are fully supported by the LinuxTV driver. The following drivers are needed for these devices:
- dib3000-common.ko
- dib3000mc.ko
- dvb-usb.ko
- dvb-usb-common.ko
- dvb-usb-dibusb-mc.ko


== Additional Technical Information ==
These [[frontend|frontend(s)]]/[[demodulator|demodulator(s)]] can be found in various revisions of this device:
- [[DiB3000M-C|DiBcom 3000M-C]]
- [[DiB3000P|DiBcom 3000P]]


This section starts describing devices which hit the market beginning of spring 2004. It does not cover TTUSB-based devices.
'''Comment:''' Devices listed below are clones of a DVB-T USB2.0 reference design made by [[DiBcom]].


=== Host Controlled DVB USB Devices ===
{| width="900" border=1 cellpadding=2 cellspacing=0 valign="top"
|- bgcolor=#efefef valign="top"
! '''device/model'''
! '''type'''
! '''firmware name'''
! '''comments/quirks'''
! '''URL/pictures'''
|- align="left"
! Artec T1 USB2.0
! USB2.0/USB1.1
! dvb-usb-dibusb-6.0.0.8.fw
! not confirmed yet.
! [http://www.ultima-elec.nl/]
|-
|}


When first AC-Adapter-free USB devices (with the capability of receiving DVB Signals) hit the market, every vendor was using the generic USB-device-controller from Cypress (FX1 (AN2135/AN2235), FX2) as an interface between the DVB-hardware and the host.
=== HanfTek UMT-010 ===


As those controllers are very generic, one has to create (and download) an (small or not so small) embedded software to those controller to give vendor-specific and the wanted functionality. After downloading the so-called firmware vendors used the reboot-feature of the controller to re-enumerate with new USB Vendor/Product-IDs and a new USB-layout. On the host this looks like a normal disconnect and connect of an USB device.
All devices below are fully supported by the LinuxTV driver. The following drivers are needed for these devices:
- mt352.ko
- dvb-usb.ko
- dvb-usb-common.ko
- dvb-usb-umt-010.ko


Because the memory for storing the firmware was limited, vendors decided not to put any DVB-demodulator and RF-tuner specific code into the firmware, but only to implement interface functionality. At that time, the common way to control other components was [[I²C Protocol|I²C]]. The other necessary feature was data-streaming. With such a firmware, every functionality is done from the host - mainly the driving of the demodulator and the tuner.
These [[frontend|frontend(s)]]/[[demodulator|demodulator(s)]] can be found in various revisions of this device:
- [[MT352|Zarlink MT352]]


Host-controlled devices are the ones based on DiBcom (dibusb, dib0700), Nebula (DigiTV), Hanftek and others. (see below)
'''Comment:''' The USB protocol which is used by this device is equal to the one used in DiBcom USB2.0 reference design. Thanks to Hanftek who especially wrote a firmware for easy Linux-Support.


=== Firmware Controlled DVB USB Devices===
{| width="900" border=1 cellpadding=2 cellspacing=0 valign="top"

|- bgcolor=#efefef valign="top"
Another approach was coming later: When it started, that putting more memory on a board/into an IC with almost no increase of the [[BOM]]. Vendors started to put the demodulator and tuner-driver into the firmware. This was simplifying the host-part dramatically, because if you have a new hardware, you just need to modify the (platform-independent) firmware part and, as long as the firmware-interface is not changing, the host-driver stays the same.
! '''device/model'''

! '''type'''
Firmware-controlled devices: Twinhan VP7045/VP7021, Terratec Cinergy T2, Wideview and others.
! '''firmware name'''

! '''comments/quirks'''
To be continued ...
! '''URL/pictures'''

|- align="left"

! Hanftek UMT-010
== lsusb -t ==
! USB2.0

! dvb-usb-umt-010-02.fw
=== Wrong ===
! Stick-sized. Different colors (blue, gray, red).
With this setup you will have bandwidth problems with no appropriate warning whatsoever on any log file. Except that video will look horrible.
! [http://www.hanftek.com/]
<pre>
|-
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci_hcd/8p, 12M <-- USB1.1, slow, don't us
|}
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/8p, 480M <-- one bus
|__ Port 2: Dev 2, If 0, Class=vend., Driver=dvb_usb_ttusb2, 480M <-- 1st DVB device, shares bandwidth
|__ Port 4: Dev 2, If 0, Class=vend., Driver=dvb_usb_ttusb2, 480M <-- 2nd DVB device, shares bandwidth
</pre>

=== OK ===
You can solve the above situation by adding a PCI-Express to USB3.0 card:
<pre>
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M <-- one bus
|__ Port 2: Dev 2, If 0, Class=vend., Driver=dvb_usb_ttusb2, 480M <-- one DVB device
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci_hcd/8p, 12M <-- USB1.1, slow, don't use
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/8p, 480M <-- one bus
|__ Port 4: Dev 2, If 0, Class=vend., Driver=dvb_usb_ttusb2, 480M <-- one DVB device
</pre>

'''''Rule''': One device per bus''


[[Category:Hardware| ]]

Latest revision as of 10:13, 3 December 2012

For information about supported USB devices, see the appropriate device category:


Introduction

For all DVB USB devices you will need to load (if not compiled into the kernel):

  • i2c-core
  • crc32
  • firmware_class
  • dvb-core.ko
  • dvb-pll.ko

and maybe others too. If the loading fails for any particular module you'll get a "unknown symbol" message. Then have a look at dmesg to find out, which symbols (functions) are missing. After you've found out which module was absent, please come back here and add it to the list/device-entry.

The Type field specifies the USB standard(s) supported by the device.

USB1.1
The device supports USB 1.1 only, and will work at 1.1 speeds when attached to a USB 2.0 port.
USB2.0
The device supports USB 2.0 only, and will not work when attached to a USB 1.1-only port. Such devices are normally capable of delivering the complete Transport Stream to the software demuxer.
USB2.0, USB1.1
The device supports USB 1.1 and USB 2.0, and will work at any speed supported by 1.1 or 2.0. When running in USB 2.0 mode, such devices can deliver the complete Transport Stream (unless specified otherwise).

Firmware

Most of the USB devices need firmware to run. Some of the firmware files can be downloaded from here.

You need to copy the firmware to the correct place on your system. This will normally be /lib/firmware or a folder below it. Here is an example:

- $ cd /lib/firmware
- $ ls
- 2.6.15-23-amd64-xeon
- $ cd 2.6.15-23-amd64-xeon
- $ sudo cp ~/dvb-usb-umt-010-02.fw .

Now, you need to unplug your USB device. Plug it in again, and then take a look at dmesg.

- $ dmesg
- < ...... lines cut for clarity ..... >
- usb 5-2: USB disconnect, address 3
- usb 5-2: new high speed USB device using ehci_hcd and address 8
- dvb-usb: found a 'Hanftek UMT-010 DVB-T USB2.0' in cold state, will try to load a firmware
- dvb-usb: downloading firmware from file 'dvb-usb-umt-010-02.fw' to the 'Cypress FX2'
- dvb-usb: Hanftek UMT-010 DVB-T USB2.0 successfully initialized and connected.
- usb 5-2: USB disconnect, address 8
- dvb-usb: generic DVB-USB module successfully deinitialized and disconnected.

In this case, I have success, because the firmware was loaded.

Remember that on some system the firmware is loaded by udev, so if for some reason the firmware is not loaded you may check that udev is acutally running. To check you could for example issue the command:

- $ ps -e | grep udev

If the output is empty, then you have to restart the udev daemon. For example in a Debian based system you may try with:

- $ sudo /etc/init.d/udev restart

then try again, removing and inserting the module again with modprobe.

Additional Technical Information

This section starts describing devices which hit the market beginning of spring 2004. It does not cover TTUSB-based devices.

Host Controlled DVB USB Devices

When first AC-Adapter-free USB devices (with the capability of receiving DVB Signals) hit the market, every vendor was using the generic USB-device-controller from Cypress (FX1 (AN2135/AN2235), FX2) as an interface between the DVB-hardware and the host.

As those controllers are very generic, one has to create (and download) an (small or not so small) embedded software to those controller to give vendor-specific and the wanted functionality. After downloading the so-called firmware vendors used the reboot-feature of the controller to re-enumerate with new USB Vendor/Product-IDs and a new USB-layout. On the host this looks like a normal disconnect and connect of an USB device.

Because the memory for storing the firmware was limited, vendors decided not to put any DVB-demodulator and RF-tuner specific code into the firmware, but only to implement interface functionality. At that time, the common way to control other components was I²C. The other necessary feature was data-streaming. With such a firmware, every functionality is done from the host - mainly the driving of the demodulator and the tuner.

Host-controlled devices are the ones based on DiBcom (dibusb, dib0700), Nebula (DigiTV), Hanftek and others. (see below)

Firmware Controlled DVB USB Devices

Another approach was coming later: When it started, that putting more memory on a board/into an IC with almost no increase of the BOM. Vendors started to put the demodulator and tuner-driver into the firmware. This was simplifying the host-part dramatically, because if you have a new hardware, you just need to modify the (platform-independent) firmware part and, as long as the firmware-interface is not changing, the host-driver stays the same.

Firmware-controlled devices: Twinhan VP7045/VP7021, Terratec Cinergy T2, Wideview and others.

To be continued ...


lsusb -t

Wrong

With this setup you will have bandwidth problems with no appropriate warning whatsoever on any log file. Except that video will look horrible.

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci_hcd/8p, 12M     <-- USB1.1,  slow, don't us
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/8p, 480M    <-- one bus
    |__ Port 2: Dev 2, If 0, Class=vend., Driver=dvb_usb_ttusb2, 480M <--  1st DVB device, shares bandwidth
    |__ Port 4: Dev 2, If 0, Class=vend., Driver=dvb_usb_ttusb2, 480M <--  2nd DVB device, shares bandwidth

OK

You can solve the above situation by adding a PCI-Express to USB3.0 card:

/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M    <-- one bus
    |__ Port 2: Dev 2, If 0, Class=vend., Driver=dvb_usb_ttusb2, 480M <--  one DVB device
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci_hcd/8p, 12M     <-- USB1.1,  slow, don't use
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/8p, 480M    <-- one bus
    |__ Port 4: Dev 2, If 0, Class=vend., Driver=dvb_usb_ttusb2, 480M <--  one DVB device

Rule: One device per bus