annotate Documentation/dvb/README.dvb-usb @ 854:950b9eb27661

usbback: fix urb interval value for interrupt urbs.

Signed-off-by: Noboru Iwamatsu <n_iwamatsu@jp.fujitsu.com>
author Keir Fraser <keir.fraser@citrix.com>
date Mon Apr 06 13:51:20 2009 +0100 (2009-04-06)
parents 831230e53067
rev   line source
ian@0 1 Documentation for dvb-usb-framework module and its devices
ian@0 2
ian@0 3 Idea behind the dvb-usb-framework
ian@0 4 =================================
ian@0 5
ian@0 6 In March 2005 I got the new Twinhan USB2.0 DVB-T device. They provided specs and a firmware.
ian@0 7
ian@0 8 Quite keen I wanted to put the driver (with some quirks of course) into dibusb.
ian@0 9 After reading some specs and doing some USB snooping, it realized, that the
ian@0 10 dibusb-driver would be a complete mess afterwards. So I decided to do it in a
ian@0 11 different way: With the help of a dvb-usb-framework.
ian@0 12
ian@0 13 The framework provides generic functions (mostly kernel API calls), such as:
ian@0 14
ian@0 15 - Transport Stream URB handling in conjunction with dvb-demux-feed-control
ian@0 16 (bulk and isoc are supported)
ian@0 17 - registering the device for the DVB-API
ian@0 18 - registering an I2C-adapter if applicable
ian@0 19 - remote-control/input-device handling
ian@0 20 - firmware requesting and loading (currently just for the Cypress USB
ian@0 21 controllers)
ian@0 22 - other functions/methods which can be shared by several drivers (such as
ian@0 23 functions for bulk-control-commands)
ian@0 24 - TODO: a I2C-chunker. It creates device-specific chunks of register-accesses
ian@0 25 depending on length of a register and the number of values that can be
ian@0 26 multi-written and multi-read.
ian@0 27
ian@0 28 The source code of the particular DVB USB devices does just the communication
ian@0 29 with the device via the bus. The connection between the DVB-API-functionality
ian@0 30 is done via callbacks, assigned in a static device-description (struct
ian@0 31 dvb_usb_device) each device-driver has to have.
ian@0 32
ian@0 33 For an example have a look in drivers/media/dvb/dvb-usb/vp7045*.
ian@0 34
ian@0 35 Objective is to migrate all the usb-devices (dibusb, cinergyT2, maybe the
ian@0 36 ttusb; flexcop-usb already benefits from the generic flexcop-device) to use
ian@0 37 the dvb-usb-lib.
ian@0 38
ian@0 39 TODO: dynamic enabling and disabling of the pid-filter in regard to number of
ian@0 40 feeds requested.
ian@0 41
ian@0 42 Supported devices
ian@0 43 ========================
ian@0 44
ian@0 45 See the LinuxTV DVB Wiki at www.linuxtv.org for a complete list of
ian@0 46 cards/drivers/firmwares:
ian@0 47
ian@0 48 http://www.linuxtv.org/wiki/index.php/DVB_USB
ian@0 49
ian@0 50 0. History & News:
ian@0 51 2005-06-30 - added support for WideView WT-220U (Thanks to Steve Chang)
ian@0 52 2005-05-30 - added basic isochronous support to the dvb-usb-framework
ian@0 53 added support for Conexant Hybrid reference design and Nebula DigiTV USB
ian@0 54 2005-04-17 - all dibusb devices ported to make use of the dvb-usb-framework
ian@0 55 2005-04-02 - re-enabled and improved remote control code.
ian@0 56 2005-03-31 - ported the Yakumo/Hama/Typhoon DVB-T USB2.0 device to dvb-usb.
ian@0 57 2005-03-30 - first commit of the dvb-usb-module based on the dibusb-source. First device is a new driver for the
ian@0 58 TwinhanDTV Alpha / MagicBox II USB2.0-only DVB-T device.
ian@0 59
ian@0 60 (change from dvb-dibusb to dvb-usb)
ian@0 61 2005-03-28 - added support for the AVerMedia AverTV DVB-T USB2.0 device (Thanks to Glen Harris and Jiun-Kuei Jung, AVerMedia)
ian@0 62 2005-03-14 - added support for the Typhoon/Yakumo/HAMA DVB-T mobile USB2.0
ian@0 63 2005-02-11 - added support for the KWorld/ADSTech Instant DVB-T USB2.0. Thanks a lot to Joachim von Caron
ian@0 64 2005-02-02 - added support for the Hauppauge Win-TV Nova-T USB2
ian@0 65 2005-01-31 - distorted streaming is gone for USB1.1 devices
ian@0 66 2005-01-13 - moved the mirrored pid_filter_table back to dvb-dibusb
ian@0 67 - first almost working version for HanfTek UMT-010
ian@0 68 - found out, that Yakumo/HAMA/Typhoon are predecessors of the HanfTek UMT-010
ian@0 69 2005-01-10 - refactoring completed, now everything is very delightful
ian@0 70 - tuner quirks for some weird devices (Artec T1 AN2235 device has sometimes a
ian@0 71 Panasonic Tuner assembled). Tunerprobing implemented. Thanks a lot to Gunnar Wittich.
ian@0 72 2004-12-29 - after several days of struggling around bug of no returning URBs fixed.
ian@0 73 2004-12-26 - refactored the dibusb-driver, splitted into separate files
ian@0 74 - i2c-probing enabled
ian@0 75 2004-12-06 - possibility for demod i2c-address probing
ian@0 76 - new usb IDs (Compro, Artec)
ian@0 77 2004-11-23 - merged changes from DiB3000MC_ver2.1
ian@0 78 - revised the debugging
ian@0 79 - possibility to deliver the complete TS for USB2.0
ian@0 80 2004-11-21 - first working version of the dib3000mc/p frontend driver.
ian@0 81 2004-11-12 - added additional remote control keys. Thanks to Uwe Hanke.
ian@0 82 2004-11-07 - added remote control support. Thanks to David Matthews.
ian@0 83 2004-11-05 - added support for a new devices (Grandtec/Avermedia/Artec)
ian@0 84 - merged my changes (for dib3000mb/dibusb) to the FE_REFACTORING, because it became HEAD
ian@0 85 - moved transfer control (pid filter, fifo control) from usb driver to frontend, it seems
ian@0 86 better settled there (added xfer_ops-struct)
ian@0 87 - created a common files for frontends (mc/p/mb)
ian@0 88 2004-09-28 - added support for a new device (Unkown, vendor ID is Hyper-Paltek)
ian@0 89 2004-09-20 - added support for a new device (Compro DVB-U2000), thanks
ian@0 90 to Amaury Demol for reporting
ian@0 91 - changed usb TS transfer method (several urbs, stopping transfer
ian@0 92 before setting a new pid)
ian@0 93 2004-09-13 - added support for a new device (Artec T1 USB TVBOX), thanks
ian@0 94 to Christian Motschke for reporting
ian@0 95 2004-09-05 - released the dibusb device and dib3000mb-frontend driver
ian@0 96
ian@0 97 (old news for vp7041.c)
ian@0 98 2004-07-15 - found out, by accident, that the device has a TUA6010XS for
ian@0 99 PLL
ian@0 100 2004-07-12 - figured out, that the driver should also work with the
ian@0 101 CTS Portable (Chinese Television System)
ian@0 102 2004-07-08 - firmware-extraction-2.422-problem solved, driver is now working
ian@0 103 properly with firmware extracted from 2.422
ian@0 104 - #if for 2.6.4 (dvb), compile issue
ian@0 105 - changed firmware handling, see vp7041.txt sec 1.1
ian@0 106 2004-07-02 - some tuner modifications, v0.1, cleanups, first public
ian@0 107 2004-06-28 - now using the dvb_dmx_swfilter_packets, everything
ian@0 108 runs fine now
ian@0 109 2004-06-27 - able to watch and switching channels (pre-alpha)
ian@0 110 - no section filtering yet
ian@0 111 2004-06-06 - first TS received, but kernel oops :/
ian@0 112 2004-05-14 - firmware loader is working
ian@0 113 2004-05-11 - start writing the driver
ian@0 114
ian@0 115 1. How to use?
ian@0 116 1.1. Firmware
ian@0 117
ian@0 118 Most of the USB drivers need to download a firmware to the device before start
ian@0 119 working.
ian@0 120
ian@0 121 Have a look at the Wikipage for the DVB-USB-drivers to find out, which firmware
ian@0 122 you need for your device:
ian@0 123
ian@0 124 http://www.linuxtv.org/wiki/index.php/DVB_USB
ian@0 125
ian@0 126 1.2. Compiling
ian@0 127
ian@0 128 Since the driver is in the linux kernel, activating the driver in
ian@0 129 your favorite config-environment should sufficient. I recommend
ian@0 130 to compile the driver as module. Hotplug does the rest.
ian@0 131
ian@0 132 If you use dvb-kernel enter the build-2.6 directory run 'make' and 'insmod.sh
ian@0 133 load' afterwards.
ian@0 134
ian@0 135 1.3. Loading the drivers
ian@0 136
ian@0 137 Hotplug is able to load the driver, when it is needed (because you plugged
ian@0 138 in the device).
ian@0 139
ian@0 140 If you want to enable debug output, you have to load the driver manually and
ian@0 141 from withing the dvb-kernel cvs repository.
ian@0 142
ian@0 143 first have a look, which debug level are available:
ian@0 144
ian@0 145 modinfo dvb-usb
ian@0 146 modinfo dvb-usb-vp7045
ian@0 147 etc.
ian@0 148
ian@0 149 modprobe dvb-usb debug=<level>
ian@0 150 modprobe dvb-usb-vp7045 debug=<level>
ian@0 151 etc.
ian@0 152
ian@0 153 should do the trick.
ian@0 154
ian@0 155 When the driver is loaded successfully, the firmware file was in
ian@0 156 the right place and the device is connected, the "Power"-LED should be
ian@0 157 turned on.
ian@0 158
ian@0 159 At this point you should be able to start a dvb-capable application. I'm use
ian@0 160 (t|s)zap, mplayer and dvbscan to test the basics. VDR-xine provides the
ian@0 161 long-term test scenario.
ian@0 162
ian@0 163 2. Known problems and bugs
ian@0 164
ian@0 165 - Don't remove the USB device while running an DVB application, your system
ian@0 166 will go crazy or die most likely.
ian@0 167
ian@0 168 2.1. Adding support for devices
ian@0 169
ian@0 170 TODO
ian@0 171
ian@0 172 2.2. USB1.1 Bandwidth limitation
ian@0 173
ian@0 174 A lot of the currently supported devices are USB1.1 and thus they have a
ian@0 175 maximum bandwidth of about 5-6 MBit/s when connected to a USB2.0 hub.
ian@0 176 This is not enough for receiving the complete transport stream of a
ian@0 177 DVB-T channel (which is about 16 MBit/s). Normally this is not a
ian@0 178 problem, if you only want to watch TV (this does not apply for HDTV),
ian@0 179 but watching a channel while recording another channel on the same
ian@0 180 frequency simply does not work very well. This applies to all USB1.1
ian@0 181 DVB-T devices, not just the dvb-usb-devices)
ian@0 182
ian@0 183 The bug, where the TS is distorted by a heavy usage of the device is gone
ian@0 184 definitely. All dvb-usb-devices I was using (Twinhan, Kworld, DiBcom) are
ian@0 185 working like charm now with VDR. Sometimes I even was able to record a channel
ian@0 186 and watch another one.
ian@0 187
ian@0 188 2.3. Comments
ian@0 189
ian@0 190 Patches, comments and suggestions are very very welcome.
ian@0 191
ian@0 192 3. Acknowledgements
ian@0 193 Amaury Demol (ademol@dibcom.fr) and Francois Kanounnikoff from DiBcom for
ian@0 194 providing specs, code and help, on which the dvb-dibusb, dib3000mb and
ian@0 195 dib3000mc are based.
ian@0 196
ian@0 197 David Matthews for identifying a new device type (Artec T1 with AN2235)
ian@0 198 and for extending dibusb with remote control event handling. Thank you.
ian@0 199
ian@0 200 Alex Woods for frequently answering question about usb and dvb
ian@0 201 stuff, a big thank you.
ian@0 202
ian@0 203 Bernd Wagner for helping with huge bug reports and discussions.
ian@0 204
ian@0 205 Gunnar Wittich and Joachim von Caron for their trust for providing
ian@0 206 root-shells on their machines to implement support for new devices.
ian@0 207
ian@0 208 Allan Third and Michael Hutchinson for their help to write the Nebula
ian@0 209 digitv-driver.
ian@0 210
ian@0 211 Glen Harris for bringing up, that there is a new dibusb-device and Jiun-Kuei
ian@0 212 Jung from AVerMedia who kindly provided a special firmware to get the device
ian@0 213 up and running in Linux.
ian@0 214
ian@0 215 Jennifer Chen, Jeff and Jack from Twinhan for kindly supporting by
ian@0 216 writing the vp7045-driver.
ian@0 217
ian@0 218 Steve Chang from WideView for providing information for new devices and
ian@0 219 firmware files.
ian@0 220
ian@0 221 Michael Paxton for submitting remote control keymaps.
ian@0 222
ian@0 223 Some guys on the linux-dvb mailing list for encouraging me.
ian@0 224
ian@0 225 Peter Schildmann >peter.schildmann-nospam-at-web.de< for his
ian@0 226 user-level firmware loader, which saves a lot of time
ian@0 227 (when writing the vp7041 driver)
ian@0 228
ian@0 229 Ulf Hermenau for helping me out with traditional chinese.
ian@0 230
ian@0 231 André Smoktun and Christian Frömmel for supporting me with
ian@0 232 hardware and listening to my problems very patiently.