Documentation for dvb-usb-framework module and its devices

Idea behind the dvb-usb-framework
=================================

In March 2005 I got the new Twinhan USB2.0 DVB-T device. They provided specs and a firmware.

Quite keen I wanted to put the driver (with some quirks of course) into dibusb.
After reading some specs and doing some USB snooping, it realized, that the
dibusb-driver would be a complete mess afterwards. So I decided to do it in a
different way: With the help of a dvb-usb-framework.

The framework provides generic functions (mostly kernel API calls), such as:

- Transport Stream URB handling in conjunction with dvb-demux-feed-control
  (bulk and isoc are supported)
- registering the device for the DVB-API
- registering an I2C-adapter if applicable
- remote-control/input-device handling
- firmware requesting and loading (currently just for the Cypress USB
  controllers)
- other functions/methods which can be shared by several drivers (such as
  functions for bulk-control-commands)
- TODO: a I2C-chunker. It creates device-specific chunks of register-accesses
  depending on length of a register and the number of values that can be
  multi-written and multi-read.

The source code of the particular DVB USB devices does just the communication
with the device via the bus. The connection between the DVB-API-functionality
is done via callbacks, assigned in a static device-description (struct
dvb_usb_device) each device-driver has to have.

For an example have a look in drivers/media/dvb/dvb-usb/vp7045*.

Objective is to migrate all the usb-devices (dibusb, cinergyT2, maybe the
ttusb; flexcop-usb already benefits from the generic flexcop-device) to use
the dvb-usb-lib.

TODO: dynamic enabling and disabling of the pid-filter in regard to number of
feeds requested.

Supported devices
========================

See the LinuxTV DVB Wiki at www.linuxtv.org for a complete list of
cards/drivers/firmwares:

http://www.linuxtv.org/wiki/index.php/DVB_USB

0. History & News:
  2005-06-30 - added support for WideView WT-220U (Thanks to Steve Chang)
  2005-05-30 - added basic isochronous support to the dvb-usb-framework
	       added support for Conexant Hybrid reference design and Nebula DigiTV USB
  2005-04-17 - all dibusb devices ported to make use of the dvb-usb-framework
  2005-04-02 - re-enabled and improved remote control code.
  2005-03-31 - ported the Yakumo/Hama/Typhoon DVB-T USB2.0 device to dvb-usb.
  2005-03-30 - first commit of the dvb-usb-module based on the dibusb-source. First device is a new driver for the
	       TwinhanDTV Alpha / MagicBox II USB2.0-only DVB-T device.

  (change from dvb-dibusb to dvb-usb)
  2005-03-28 - added support for the AVerMedia AverTV DVB-T USB2.0 device (Thanks to Glen Harris and Jiun-Kuei Jung, AVerMedia)
  2005-03-14 - added support for the Typhoon/Yakumo/HAMA DVB-T mobile USB2.0
  2005-02-11 - added support for the KWorld/ADSTech Instant DVB-T USB2.0. Thanks a lot to Joachim von Caron
  2005-02-02 - added support for the Hauppauge Win-TV Nova-T USB2
  2005-01-31 - distorted streaming is gone for USB1.1 devices
  2005-01-13 - moved the mirrored pid_filter_table back to dvb-dibusb
	     - first almost working version for HanfTek UMT-010
	     - found out, that Yakumo/HAMA/Typhoon are predecessors of the HanfTek UMT-010
  2005-01-10 - refactoring completed, now everything is very delightful
	     - tuner quirks for some weird devices (Artec T1 AN2235 device has sometimes a
	       Panasonic Tuner assembled). Tunerprobing implemented. Thanks a lot to Gunnar Wittich.
  2004-12-29 - after several days of struggling around bug of no returning URBs fixed.
  2004-12-26 - refactored the dibusb-driver, splitted into separate files
	     - i2c-probing enabled
  2004-12-06 - possibility for demod i2c-address probing
	     - new usb IDs (Compro, Artec)
  2004-11-23 - merged changes from DiB3000MC_ver2.1
	     - revised the debugging
	     - possibility to deliver the complete TS for USB2.0
  2004-11-21 - first working version of the dib3000mc/p frontend driver.
  2004-11-12 - added additional remote control keys. Thanks to Uwe Hanke.
  2004-11-07 - added remote control support. Thanks to David Matthews.
  2004-11-05 - added support for a new devices (Grandtec/Avermedia/Artec)
	     - merged my changes (for dib3000mb/dibusb) to the FE_REFACTORING, because it became HEAD
	     - moved transfer control (pid filter, fifo control) from usb driver to frontend, it seems
	       better settled there (added xfer_ops-struct)
	     - created a common files for frontends (mc/p/mb)
  2004-09-28 - added support for a new device (Unknown, vendor ID is Hyper-Paltek)
  2004-09-20 - added support for a new device (Compro DVB-U2000), thanks
	       to Amaury Demol for reporting
	     - changed usb TS transfer method (several urbs, stopping transfer
	       before setting a new pid)
  2004-09-13 - added support for a new device (Artec T1 USB TVBOX), thanks
	       to Christian Motschke for reporting
  2004-09-05 - released the dibusb device and dib3000mb-frontend driver

  (old news for vp7041.c)
  2004-07-15 - found out, by accident, that the device has a TUA6010XS for
	       PLL
  2004-07-12 - figured out, that the driver should also work with the
	       CTS Portable (Chinese Television System)
  2004-07-08 - firmware-extraction-2.422-problem solved, driver is now working
	       properly with firmware extracted from 2.422
	     - #if for 2.6.4 (dvb), compile issue
	     - changed firmware handling, see vp7041.txt sec 1.1
  2004-07-02 - some tuner modifications, v0.1, cleanups, first public
  2004-06-28 - now using the dvb_dmx_swfilter_packets, everything
	       runs fine now
  2004-06-27 - able to watch and switching channels (pre-alpha)
	     - no section filtering yet
  2004-06-06 - first TS received, but kernel oops :/
  2004-05-14 - firmware loader is working
  2004-05-11 - start writing the driver

1. How to use?
1.1. Firmware

Most of the USB drivers need to download a firmware to the device before start
working.

Have a look at the Wikipage for the DVB-USB-drivers to find out, which firmware
you need for your device:

http://www.linuxtv.org/wiki/index.php/DVB_USB

1.2. Compiling

Since the driver is in the linux kernel, activating the driver in
your favorite config-environment should sufficient. I recommend
to compile the driver as module. Hotplug does the rest.

If you use dvb-kernel enter the build-2.6 directory run 'make' and 'insmod.sh
load' afterwards.

1.3. Loading the drivers

Hotplug is able to load the driver, when it is needed (because you plugged
in the device).

If you want to enable debug output, you have to load the driver manually and
from withing the dvb-kernel cvs repository.

first have a look, which debug level are available:

modinfo dvb-usb
modinfo dvb-usb-vp7045
etc.

modprobe dvb-usb debug=<level>
modprobe dvb-usb-vp7045 debug=<level>
etc.

should do the trick.

When the driver is loaded successfully, the firmware file was in
the right place and the device is connected, the "Power"-LED should be
turned on.

At this point you should be able to start a dvb-capable application. I'm use
(t|s)zap, mplayer and dvbscan to test the basics. VDR-xine provides the
long-term test scenario.

2. Known problems and bugs

- Don't remove the USB device while running an DVB application, your system
  will go crazy or die most likely.

2.1. Adding support for devices

TODO

2.2. USB1.1 Bandwidth limitation

A lot of the currently supported devices are USB1.1 and thus they have a
maximum bandwidth of about 5-6 MBit/s when connected to a USB2.0 hub.
This is not enough for receiving the complete transport stream of a
DVB-T channel (which is about 16 MBit/s). Normally this is not a
problem, if you only want to watch TV (this does not apply for HDTV),
but watching a channel while recording another channel on the same
frequency simply does not work very well. This applies to all USB1.1
DVB-T devices, not just the dvb-usb-devices)

The bug, where the TS is distorted by a heavy usage of the device is gone
definitely. All dvb-usb-devices I was using (Twinhan, Kworld, DiBcom) are
working like charm now with VDR. Sometimes I even was able to record a channel
and watch another one.

2.3. Comments

Patches, comments and suggestions are very very welcome.

3. Acknowledgements
   Amaury Demol (ademol@dibcom.fr) and Francois Kanounnikoff from DiBcom for
    providing specs, code and help, on which the dvb-dibusb, dib3000mb and
    dib3000mc are based.

   David Matthews for identifying a new device type (Artec T1 with AN2235)
    and for extending dibusb with remote control event handling. Thank you.

   Alex Woods for frequently answering question about usb and dvb
    stuff, a big thank you.

   Bernd Wagner for helping with huge bug reports and discussions.

   Gunnar Wittich and Joachim von Caron for their trust for providing
    root-shells on their machines to implement support for new devices.

   Allan Third and Michael Hutchinson for their help to write the Nebula
    digitv-driver.

   Glen Harris for bringing up, that there is a new dibusb-device and Jiun-Kuei
    Jung from AVerMedia who kindly provided a special firmware to get the device
    up and running in Linux.

   Jennifer Chen, Jeff and Jack from Twinhan for kindly supporting by
	writing the vp7045-driver.

   Steve Chang from WideView for providing information for new devices and
	firmware files.

   Michael Paxton for submitting remote control keymaps.

   Some guys on the linux-dvb mailing list for encouraging me.

   Peter Schildmann >peter.schildmann-nospam-at-web.de< for his
    user-level firmware loader, which saves a lot of time
    (when writing the vp7041 driver)

   Ulf Hermenau for helping me out with traditional chinese.

   André Smoktun and Christian Frömmel for supporting me with
    hardware and listening to my problems very patiently.
