aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/dvb
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-16 18:20:36 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-16 18:20:36 -0400
commit1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch)
tree0bba044c4ce775e45a88a51686b5d9f90697ea9d /Documentation/dvb
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
Diffstat (limited to 'Documentation/dvb')
-rw-r--r--Documentation/dvb/README.dibusb285
-rw-r--r--Documentation/dvb/avermedia.txt304
-rw-r--r--Documentation/dvb/bt8xx.txt90
-rw-r--r--Documentation/dvb/cards.txt85
-rw-r--r--Documentation/dvb/contributors.txt79
-rw-r--r--Documentation/dvb/faq.txt160
-rw-r--r--Documentation/dvb/get_dvb_firmware397
-rw-r--r--Documentation/dvb/readme.txt52
-rw-r--r--Documentation/dvb/ttusb-dec.txt44
-rw-r--r--Documentation/dvb/udev.txt46
10 files changed, 1542 insertions, 0 deletions
diff --git a/Documentation/dvb/README.dibusb b/Documentation/dvb/README.dibusb
new file mode 100644
index 000000000000..7a9e958513f3
--- /dev/null
+++ b/Documentation/dvb/README.dibusb
@@ -0,0 +1,285 @@
1Documentation for dib3000* frontend drivers and dibusb device driver
2====================================================================
3
4Copyright (C) 2004-5 Patrick Boettcher (patrick.boettcher@desy.de),
5
6dibusb and dib3000mb/mc drivers based on GPL code, which has
7
8Copyright (C) 2004 Amaury Demol for DiBcom (ademol@dibcom.fr)
9
10This program is free software; you can redistribute it and/or
11modify it under the terms of the GNU General Public License as
12published by the Free Software Foundation, version 2.
13
14
15Supported devices USB1.1
16========================
17
18Produced and reselled by Twinhan:
19---------------------------------
20- TwinhanDTV USB-Ter DVB-T Device (VP7041)
21 http://www.twinhan.com/product_terrestrial_3.asp
22
23- TwinhanDTV Magic Box (VP7041e)
24 http://www.twinhan.com/product_terrestrial_4.asp
25
26- HAMA DVB-T USB device
27 http://www.hama.de/portal/articleId*110620/action*2598
28
29- CTS Portable (Chinese Television System) (2)
30 http://www.2cts.tv/ctsportable/
31
32- Unknown USB DVB-T device with vendor ID Hyper-Paltek
33
34
35Produced and reselled by KWorld:
36--------------------------------
37- KWorld V-Stream XPERT DTV DVB-T USB
38 http://www.kworld.com.tw/en/product/DVBT-USB/DVBT-USB.html
39
40- JetWay DTV DVB-T USB
41 http://www.jetway.com.tw/evisn/product/lcd-tv/DVT-USB/dtv-usb.htm
42
43- ADSTech Instant TV DVB-T USB
44 http://www.adstech.com/products/PTV-333/intro/PTV-333_intro.asp?pid=PTV-333
45
46
47Others:
48-------
49- Ultima Electronic/Artec T1 USB TVBOX (AN2135, AN2235, AN2235 with Panasonic Tuner)
50 http://82.161.246.249/products-tvbox.html
51
52- Compro Videomate DVB-U2000 - DVB-T USB (2)
53 http://www.comprousa.com/products/vmu2000.htm
54
55- Grandtec USB DVB-T
56 http://www.grand.com.tw/
57
58- Avermedia AverTV DVBT USB (2)
59 http://www.avermedia.com/
60
61- DiBcom USB DVB-T reference device (non-public)
62
63
64Supported devices USB2.0
65========================
66- Twinhan MagicBox II (2)
67 http://www.twinhan.com/product_terrestrial_7.asp
68
69- Hanftek UMT-010 (1)
70 http://www.globalsources.com/si/6008819757082/ProductDetail/Digital-TV/product_id-100046529
71
72- Typhoon/Yakumo/HAMA DVB-T mobile USB2.0 (1)
73 http://www.yakumo.de/produkte/index.php?pid=1&ag=DVB-T
74
75- Artec T1 USB TVBOX (FX2) (2)
76
77- Hauppauge WinTV NOVA-T USB2
78 http://www.hauppauge.com/
79
80- KWorld/ADSTech Instant DVB-T USB2.0 (DiB3000M-B)
81
82- DiBcom USB2.0 DVB-T reference device (non-public)
83
841) It is working almost.
852) No test reports received yet.
86
87
880. NEWS:
89 2005-02-11 - added support for the KWorld/ADSTech Instant DVB-T USB2.0. Thanks a lot to Joachim von Caron
90 2005-02-02 - added support for the Hauppauge Win-TV Nova-T USB2
91 2005-01-31 - distorted streaming is finally gone for USB1.1 devices
92 2005-01-13 - moved the mirrored pid_filter_table back to dvb-dibusb
93 - first almost working version for HanfTek UMT-010
94 - found out, that Yakumo/HAMA/Typhoon are predessors of the HanfTek UMT-010
95 2005-01-10 - refactoring completed, now everything is very delightful
96 - tuner quirks for some weird devices (Artec T1 AN2235 device has sometimes a
97 Panasonic Tuner assembled). Tunerprobing implemented. Thanks a lot to Gunnar Wittich.
98 2004-12-29 - after several days of struggling around bug of no returning URBs fixed.
99 2004-12-26 - refactored the dibusb-driver, splitted into separate files
100 - i2c-probing enabled
101 2004-12-06 - possibility for demod i2c-address probing
102 - new usb IDs (Compro,Artec)
103 2004-11-23 - merged changes from DiB3000MC_ver2.1
104 - revised the debugging
105 - possibility to deliver the complete TS for USB2.0
106 2004-11-21 - first working version of the dib3000mc/p frontend driver.
107 2004-11-12 - added additional remote control keys. Thanks to Uwe Hanke.
108 2004-11-07 - added remote control support. Thanks to David Matthews.
109 2004-11-05 - added support for a new devices (Grandtec/Avermedia/Artec)
110 - merged my changes (for dib3000mb/dibusb) to the FE_REFACTORING, because it became HEAD
111 - moved transfer control (pid filter, fifo control) from usb driver to frontend, it seems
112 better settled there (added xfer_ops-struct)
113 - created a common files for frontends (mc/p/mb)
114 2004-09-28 - added support for a new device (Unkown, vendor ID is Hyper-Paltek)
115 2004-09-20 - added support for a new device (Compro DVB-U2000), thanks
116 to Amaury Demol for reporting
117 - changed usb TS transfer method (several urbs, stopping transfer
118 before setting a new pid)
119 2004-09-13 - added support for a new device (Artec T1 USB TVBOX), thanks
120 to Christian Motschke for reporting
121 2004-09-05 - released the dibusb device and dib3000mb-frontend driver
122
123 (old news for vp7041.c)
124 2004-07-15 - found out, by accident, that the device has a TUA6010XS for
125 PLL
126 2004-07-12 - figured out, that the driver should also work with the
127 CTS Portable (Chinese Television System)
128 2004-07-08 - firmware-extraction-2.422-problem solved, driver is now working
129 properly with firmware extracted from 2.422
130 - #if for 2.6.4 (dvb), compile issue
131 - changed firmware handling, see vp7041.txt sec 1.1
132 2004-07-02 - some tuner modifications, v0.1, cleanups, first public
133 2004-06-28 - now using the dvb_dmx_swfilter_packets, everything
134 runs fine now
135 2004-06-27 - able to watch and switching channels (pre-alpha)
136 - no section filtering yet
137 2004-06-06 - first TS received, but kernel oops :/
138 2004-05-14 - firmware loader is working
139 2004-05-11 - start writing the driver
140
1411. How to use?
142NOTE: This driver was developed using Linux 2.6.6.,
143it is working with 2.6.7 and above.
144
145Linux 2.4.x support is not planned, but patches are very welcome.
146
147NOTE: I'm using Debian testing, so the following explaination (especially
148the hotplug-path) needn't match your system, but probably it will :).
149
150The driver is included in the kernel since Linux 2.6.10.
151
1521.1. Firmware
153
154The USB driver needs to download a firmware to start working.
155
156You can either use "get_dvb_firmware dibusb" to download the firmware or you
157can get it directly via
158
159for USB1.1 (AN2135)
160http://www.linuxtv.org/downloads/firmware/dvb-dibusb-5.0.0.11.fw
161
162for USB1.1 (AN2235) (a few Artec T1 devices)
163http://www.linuxtv.org/downloads/firmware/dvb-dibusb-an2235-1.fw
164
165for USB2.0 (FX2) Hauppauge, DiBcom
166http://www.linuxtv.org/downloads/firmware/dvb-dibusb-6.0.0.5.fw
167
168for USB2.0 ADSTech/Kworld USB2.0
169http://www.linuxtv.org/downloads/firmware/dvb-dibusb-adstech-usb2-1.fw
170
171for USB2.0 HanfTek
172http://www.linuxtv.org/downloads/firmware/dvb-dibusb-an2235-1.fw
173
174
1751.2. Compiling
176
177Since the driver is in the linux kernel, activating the driver in
178your favorite config-environment should sufficient. I recommend
179to compile the driver as module. Hotplug does the rest.
180
1811.3. Loading the drivers
182
183Hotplug is able to load the driver, when it is needed (because you plugged
184in the device).
185
186If you want to enable debug output, you have to load the driver manually and
187from withing the dvb-kernel cvs repository.
188
189first have a look, which debug level are available:
190
191modinfo dib3000mb
192modinfo dib3000-common
193modinfo dib3000mc
194modinfo dvb-dibusb
195
196modprobe dib3000-common debug=<level>
197modprobe dib3000mb debug=<level>
198modprobe dib3000mc debug=<level>
199modprobe dvb-dibusb debug=<level>
200
201should do the trick.
202
203When the driver is loaded successfully, the firmware file was in
204the right place and the device is connected, the "Power"-LED should be
205turned on.
206
207At this point you should be able to start a dvb-capable application. For myself
208I used mplayer, dvbscan, tzap and kaxtv, they are working. Using the device
209in vdr is working now also.
210
2112. Known problems and bugs
212
213- Don't remove the USB device while running an DVB application, your system will die.
214
2152.1. Adding support for devices
216
217It is not possible to determine the range of devices based on the DiBcom
218reference designs. This is because the reference design of DiBcom can be sold
219to thirds, without telling DiBcom (so done with the Twinhan VP7041 and
220the HAMA device).
221
222When you think you have a device like this and the driver does not recognizes it,
223please send the ****load*.inf and the ****cap*.inf of the Windows driver to me.
224
225Sometimes the Vendor or Product ID is identical to the ones of Twinhan, even
226though it is not a Twinhan device (e.g. HAMA), then please send me the name
227of the device. I will add it to this list in order to make this clear to
228others.
229
230If you are familar with C you can also add the VID and PID of the device to
231the dvb-dibusb-core.c-file and create a patch and send it over to me or to
232the linux-dvb mailing list, _after_ you have tried compiling and modprobing
233it.
234
2352.2. USB1.1 Bandwidth limitation
236
237Most of the currently supported devices are USB1.1 and thus they have a
238maximum bandwidth of about 5-6 MBit/s when connected to a USB2.0 hub.
239This is not enough for receiving the complete transport stream of a
240DVB-T channel (which can be about 16 MBit/s). Normally this is not a
241problem, if you only want to watch TV (this does not apply for HDTV),
242but watching a channel while recording another channel on the same
243frequency simply does not work very well. This applies to all USB1.1
244DVB-T devices, not just dibusb)
245
246Update: For the USB1.1 and VDR some work has been done (patches and comments
247are still very welcome). Maybe the problem is solved in the meantime because I
248now use the dmx_sw_filter function instead of dmx_sw_filter_packet. I hope the
249linux-dvb software filter is able to get the best of the garbled TS.
250
251The bug, where the TS is distorted by a heavy usage of the device is gone
252definitely. All dibusb-devices I was using (Twinhan, Kworld, DiBcom) are
253working like charm now with VDR. Sometimes I even was able to record a channel
254and watch another one.
255
2562.3. Comments
257
258Patches, comments and suggestions are very very welcome.
259
2603. Acknowledgements
261 Amaury Demol (ademol@dibcom.fr) and Francois Kanounnikoff from DiBcom for
262 providing specs, code and help, on which the dvb-dibusb, dib3000mb and
263 dib3000mc are based.
264
265 David Matthews for identifying a new device type (Artec T1 with AN2235)
266 and for extending dibusb with remote control event handling. Thank you.
267
268 Alex Woods for frequently answering question about usb and dvb
269 stuff, a big thank you.
270
271 Bernd Wagner for helping with huge bug reports and discussions.
272
273 Gunnar Wittich and Joachim von Caron for their trust for giving me
274 root-shells on their machines to implement support for new devices.
275
276 Some guys on the linux-dvb mailing list for encouraging me
277
278 Peter Schildmann >peter.schildmann-nospam-at-web.de< for his
279 user-level firmware loader, which saves a lot of time
280 (when writing the vp7041 driver)
281
282 Ulf Hermenau for helping me out with traditional chinese.
283
284 André Smoktun and Christian Frömmel for supporting me with
285 hardware and listening to my problems very patient
diff --git a/Documentation/dvb/avermedia.txt b/Documentation/dvb/avermedia.txt
new file mode 100644
index 000000000000..09020ebd202b
--- /dev/null
+++ b/Documentation/dvb/avermedia.txt
@@ -0,0 +1,304 @@
1
2HOWTO: Get An Avermedia DVB-T working under Linux
3 ______________________________________________
4
5 Table of Contents
6 Assumptions and Introduction
7 The Avermedia DVB-T
8 Getting the card going
9 Receiving DVB-T in Australia
10 Known Limitations
11 Further Update
12
13Assumptions and Introduction
14
15 It is assumed that the reader understands the basic structure
16 of the Linux Kernel DVB drivers and the general principles of
17 Digital TV.
18
19 One significant difference between Digital TV and Analogue TV
20 that the unwary (like myself) should consider is that,
21 although the component structure of budget DVB-T cards are
22 substantially similar to Analogue TV cards, they function in
23 substantially different ways.
24
25 The purpose of an Analogue TV is to receive and display an
26 Analogue Television signal. An Analogue TV signal (otherwise
27 known as composite video) is an analogue encoding of a
28 sequence of image frames (25 per second) rasterised using an
29 interlacing technique. Interlacing takes two fields to
30 represent one frame. Computers today are at their best when
31 dealing with digital signals, not analogue signals and a
32 composite video signal is about as far removed from a digital
33 data stream as you can get. Therefore, an Analogue TV card for
34 a PC has the following purpose:
35
36 * Tune the receiver to receive a broadcast signal
37 * demodulate the broadcast signal
38 * demultiplex the analogue video signal and analogue audio
39 signal (note some countries employ a digital audio signal
40 embedded within the modulated composite analogue signal -
41 NICAM.)
42 * digitize the analogue video signal and make the resulting
43 datastream available to the data bus.
44
45 The digital datastream from an Analogue TV card is generated
46 by circuitry on the card and is often presented uncompressed.
47 For a PAL TV signal encoded at a resolution of 768x576 24-bit
48 color pixels over 25 frames per second - a fair amount of data
49 is generated and must be proceesed by the PC before it can be
50 displayed on the video monitor screen. Some Analogue TV cards
51 for PC's have onboard MPEG2 encoders which permit the raw
52 digital data stream to be presented to the PC in an encoded
53 and compressed form - similar to the form that is used in
54 Digital TV.
55
56 The purpose of a simple budget digital TV card (DVB-T,C or S)
57 is to simply:
58
59 * Tune the received to receive a broadcast signal.
60 * Extract the encoded digital datastream from the broadcast
61 signal.
62 * Make the encoded digital datastream (MPEG2) available to
63 the data bus.
64
65 The significant difference between the two is that the tuner
66 on the analogue TV card spits out an Analogue signal, whereas
67 the tuner on the digital TV card spits out a compressed
68 encoded digital datastream. As the signal is already
69 digitised, it is trivial to pass this datastream to the PC
70 databus with minimal additional processing and then extract
71 the digital video and audio datastreams passing them to the
72 appropriate software or hardware for decoding and viewing.
73 _________________________________________________________
74
75The Avermedia DVB-T
76
77 The Avermedia DVB-T is a budget PCI DVB card. It has 3 inputs:
78
79 * RF Tuner Input
80 * Composite Video Input (RCA Jack)
81 * SVIDEO Input (Mini-DIN)
82
83 The RF Tuner Input is the input to the tuner module of the
84 card. The Tuner is otherwise known as the "Frontend" . The
85 Frontend of the Avermedia DVB-T is a Microtune 7202D. A timely
86 post to the linux-dvb mailing list ascertained that the
87 Microtune 7202D is supported by the sp887x driver which is
88 found in the dvb-hw CVS module.
89
90 The DVB-T card is based around the BT878 chip which is a very
91 common multimedia bridge and often found on Analogue TV cards.
92 There is no on-board MPEG2 decoder, which means that all MPEG2
93 decoding must be done in software, or if you have one, on an
94 MPEG2 hardware decoding card or chipset.
95 _________________________________________________________
96
97Getting the card going
98
99 In order to fire up the card, it is necessary to load a number
100 of modules from the DVB driver set. Prior to this it will have
101 been necessary to download these drivers from the linuxtv CVS
102 server and compile them successfully.
103
104 Depending on the card's feature set, the Device Driver API for
105 DVB under Linux will expose some of the following device files
106 in the /dev tree:
107
108 * /dev/dvb/adapter0/audio0
109 * /dev/dvb/adapter0/ca0
110 * /dev/dvb/adapter0/demux0
111 * /dev/dvb/adapter0/dvr0
112 * /dev/dvb/adapter0/frontend0
113 * /dev/dvb/adapter0/net0
114 * /dev/dvb/adapter0/osd0
115 * /dev/dvb/adapter0/video0
116
117 The primary device nodes that we are interested in (at this
118 stage) for the Avermedia DVB-T are:
119
120 * /dev/dvb/adapter0/dvr0
121 * /dev/dvb/adapter0/frontend0
122
123 The dvr0 device node is used to read the MPEG2 Data Stream and
124 the frontend0 node is used to tune the frontend tuner module.
125
126 At this stage, it has not been able to ascertain the
127 functionality of the remaining device nodes in respect of the
128 Avermedia DVBT. However, full functionality in respect of
129 tuning, receiving and supplying the MPEG2 data stream is
130 possible with the currently available versions of the driver.
131 It may be possible that additional functionality is available
132 from the card (i.e. viewing the additional analogue inputs
133 that the card presents), but this has not been tested yet. If
134 I get around to this, I'll update the document with whatever I
135 find.
136
137 To power up the card, load the following modules in the
138 following order:
139
140 * insmod dvb-core.o
141 * modprobe bttv.o
142 * insmod bt878.o
143 * insmod dvb-bt8xx.o
144 * insmod sp887x.o
145
146 Insertion of these modules into the running kernel will
147 activate the appropriate DVB device nodes. It is then possible
148 to start accessing the card with utilities such as scan, tzap,
149 dvbstream etc.
150
151 The frontend module sp887x.o, requires an external firmware.
152 Please use the command "get_dvb_firmware sp887x" to download
153 it. Then copy it to /usr/lib/hotplug/firmware.
154
155Receiving DVB-T in Australia
156
157 I have no experience of DVB-T in other countries other than
158 Australia, so I will attempt to explain how it works here in
159 Melbourne and how this affects the configuration of the DVB-T
160 card.
161
162 The Digital Broadcasting Australia website has a Reception
163 locatortool which provides information on transponder channels
164 and frequencies. My local transmitter happens to be Mount
165 Dandenong.
166
167 The frequencies broadcast by Mount Dandenong are:
168
169 Table 1. Transponder Frequencies Mount Dandenong, Vic, Aus.
170 Broadcaster Channel Frequency
171 ABC VHF 12 226.5 MHz
172 TEN VHF 11 219.5 MHz
173 NINE VHF 8 191.625 MHz
174 SEVEN VHF 6 177.5 MHz
175 SBS UHF 29 536.5 MHz
176
177 The Scan utility has a set of compiled-in defaults for various
178 countries and regions, but if they do not suit, or if you have
179 a pre-compiled scan binary, you can specify a data file on the
180 command line which contains the transponder frequencies. Here
181 is a sample file for the above channel transponders:
182# Data file for DVB scan program
183#
184# C Frequency SymbolRate FEC QAM
185# S Frequency Polarisation SymbolRate FEC
186# T Frequency Bandwidth FEC FEC2 QAM Mode Guard Hier
187T 226500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
188T 191625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
189T 219500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
190T 177500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
191T 536500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
192
193 The defaults for the transponder frequency and other
194 modulation parameters were obtained from www.dba.org.au.
195
196 When Scan runs, it will output channels.conf information for
197 any channel's transponders which the card's frontend can lock
198 onto. (i.e. any whose signal is strong enough at your
199 antenna).
200
201 Here's my channels.conf file for anyone who's interested:
202ABC HDTV:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64
203:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:2307:0:560
204ABC TV Melbourne:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_
2054:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:65
2060:561
207ABC TV 2:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64
208:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:562
209ABC TV 3:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64
210:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:563
211ABC TV 4:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64
212:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:564
213ABC DiG Radio:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:Q
214AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:0:2311:56
2156
216TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM
217_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:158
2185
219TEN Digital 1:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q
220AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1
221586
222TEN Digital 2:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q
223AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1
224587
225TEN Digital 3:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q
226AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1
227588
228TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM
229_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:158
2309
231TEN Digital 4:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q
232AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1
233590
234TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM
235_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:159
2361
237TEN HD:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:T
238RANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:514:0:1592
239TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM
240_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:159
2413
242Nine Digital:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QA
243M_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:513:660:10
24472
245Nine Digital HD:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2
246:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:0:1
247073
248Nine Guide:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_
24964:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:514:670:1074
2507 Digital:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_6
2514:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1328
2527 Digital 1:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM
253_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1329
2547 Digital 2:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM
255_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1330
2567 Digital 3:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM
257_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1331
2587 HD Digital:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QA
259M_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:833:834:133
2602
2617 Program Guide:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3
262:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:865:866:
2631334
264SBS HD:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:T
265RANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:102:103:784
266SBS DIGITAL 1:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:Q
267AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:81:785
268SBS DIGITAL 2:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:Q
269AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:162:83:786
270SBS EPG:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:
271TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:163:85:787
272SBS RADIO 1:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM
273_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:201:798
274SBS RADIO 2:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM
275_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:202:799
276 _________________________________________________________
277
278Known Limitations
279
280 At present I can say with confidence that the frontend tunes
281 via /dev/dvb/adapter{x}/frontend0 and supplies an MPEG2 stream
282 via /dev/dvb/adapter{x}/dvr0. I have not tested the
283 functionality of any other part of the card yet. I will do so
284 over time and update this document.
285
286 There are some limitations in the i2c layer due to a returned
287 error message inconsistency. Although this generates errors in
288 dmesg and the system logs, it does not appear to affect the
289 ability of the frontend to function correctly.
290 _________________________________________________________
291
292Further Update
293
294 dvbstream and VideoLAN Client on windows works a treat with
295 DVB, in fact this is currently serving as my main way of
296 viewing DVB-T at the moment. Additionally, VLC is happily
297 decoding HDTV signals, although the PC is dropping the odd
298 frame here and there - I assume due to processing capability -
299 as all the decoding is being done under windows in software.
300
301 Many thanks to Nigel Pearson for the updates to this document
302 since the recent revision of the driver.
303
304 January 29th 2004
diff --git a/Documentation/dvb/bt8xx.txt b/Documentation/dvb/bt8xx.txt
new file mode 100644
index 000000000000..e3cacf4f2345
--- /dev/null
+++ b/Documentation/dvb/bt8xx.txt
@@ -0,0 +1,90 @@
1How to get the Nebula, PCTV and Twinhan DST cards working
2=========================================================
3
4This class of cards has a bt878a as the PCI interface, and
5require the bttv driver.
6
7Please pay close attention to the warning about the bttv module
8options below for the DST card.
9
101) General informations
11=======================
12
13These drivers require the bttv driver to provide the means to access
14the i2c bus and the gpio pins of the bt8xx chipset.
15
16Because of this, you need to enable
17"Device drivers" => "Multimedia devices"
18 => "Video For Linux" => "BT848 Video For Linux"
19
202) Loading Modules
21==================
22
23In general you need to load the bttv driver, which will handle the gpio and
24i2c communication for us. Next you need the common dvb-bt8xx device driver
25and one frontend driver.
26
27The bttv driver will HANG YOUR SYSTEM IF YOU DO NOT SPECIFY THE CORRECT
28CARD ID!
29
30(If you don't get your card running and you suspect that the card id you're
31using is wrong, have a look at "bttv-cards.c" for a list of possible card
32ids.)
33
34Pay attention to failures when you load the frontend drivers
35(e.g. dmesg, /var/log/messages).
36
373a) Nebula / Pinnacle PCTV
38--------------------------
39
40 $ modprobe bttv i2c_hw=1 card=0x68
41 $ modprobe dvb-bt8xx
42
43For Nebula cards use the "nxt6000" frontend driver:
44 $ modprobe nxt6000
45
46For Pinnacle PCTV cards use the "cx24110" frontend driver:
47 $ modprobe cx24110
48
493b) TwinHan
50-----------
51
52 $ modprobe bttv i2c_hw=1 card=0x71
53 $ modprobe dvb-bt8xx
54 $ modprobe dst
55
56The value 0x71 will override the PCI type detection for dvb-bt8xx, which
57is necessary for TwinHan cards.#
58
59If you're having an older card (blue color circuit) and card=0x71 locks your
60machine, try using 0x68, too. If that does not work, ask on the DVB mailing list.
61
62The DST module takes a couple of useful parameters, in case the
63dst drivers fails to detect your type of card correctly.
64
65dst_type takes values 0 (satellite), 1 (terrestial TV), 2 (cable).
66
67dst_type_flags takes bit combined values:
681 = new tuner type packets. You can use this if your card is detected
69 and you have debug and you continually see the tuner packets not
70 working (make sure not a basic problem like dish alignment etc.)
71
722 = TS 204. If your card tunes OK, but the picture is terrible, seemingly
73 breaking up in one half continually, and crc fails a lot, then
74 this is worth a try (or trying to turn off)
75
764 = has symdiv. Some cards, mostly without new tuner packets, require
77 a symbol division algorithm. Doesn't apply to terrestial TV.
78
79You can also specify a value to have the autodetected values turned off
80(e.g. 0). The autodected values are determined bythe cards 'response
81string' which you can see in your logs e.g.
82
83dst_check_ci: recognize DST-MOT
84
85or
86
87dst_check_ci: unable to recognize DSTXCI or STXCI
88
89--
90Authors: Richard Walker, Jamie Honan, Michael Hunold
diff --git a/Documentation/dvb/cards.txt b/Documentation/dvb/cards.txt
new file mode 100644
index 000000000000..efdc4ee9d40c
--- /dev/null
+++ b/Documentation/dvb/cards.txt
@@ -0,0 +1,85 @@
1Hardware supported by the linuxtv.org DVB drivers
2=================================================
3
4 Generally, the DVB hardware manufacturers frequently change the
5 frontends (i.e. tuner / demodulator units) used, usually without
6 changing the product name, revision number or specs. Some cards
7 are also available in versions with different frontends for
8 DVB-S/DVB-C/DVB-T. Thus the frontend drivers are listed seperately.
9
10 Note 1: There is no guarantee that every frontend driver works
11 out of the box with every card, because of different wiring.
12
13 Note 2: The demodulator chips can be used with a variety of
14 tuner/PLL chips, and not all combinations are supported. Often
15 the demodulator and tuner/PLL chip are inside a metal box for
16 shielding, and the whole metal box has its own part number.
17
18
19o Frontends drivers:
20 - dvb_dummy_fe: for testing...
21 DVB-S:
22 - ves1x93 : Alps BSRV2 (ves1893 demodulator) and dbox2 (ves1993)
23 - cx24110 : Conexant HM1221/HM1811 (cx24110 or cx24106 demod, cx24108 PLL)
24 - grundig_29504-491 : Grundig 29504-491 (Philips TDA8083 demodulator), tsa5522 PLL
25 - mt312 : Zarlink mt312 or Mitel vp310 demodulator, sl1935 or tsa5059 PLL
26 - stv0299 : Alps BSRU6 (tsa5059 PLL), LG TDQB-S00x (tsa5059 PLL),
27 LG TDQF-S001F (sl1935 PLL), Philips SU1278 (tua6100 PLL),
28 Philips SU1278SH (tsa5059 PLL), Samsung TBMU24112IMB
29 DVB-C:
30 - ves1820 : various (ves1820 demodulator, sp5659c or spXXXX PLL)
31 - at76c651 : Atmel AT76c651(B) with DAT7021 PLL
32 DVB-T:
33 - alps_tdlb7 : Alps TDLB7 (sp8870 demodulator, sp5659 PLL)
34 - alps_tdmb7 : Alps TDMB7 (cx22700 demodulator)
35 - grundig_29504-401 : Grundig 29504-401 (LSI L64781 demodulator), tsa5060 PLL
36 - tda1004x : Philips tda10045h (td1344 or tdm1316l PLL)
37 - nxt6000 : Alps TDME7 (MITEL SP5659 PLL), Alps TDED4 (TI ALP510 PLL),
38 Comtech DVBT-6k07 (SP5730 PLL)
39 (NxtWave Communications NXT6000 demodulator)
40 - sp887x : Microtune 7202D
41 - dib3000mb : DiBcom 3000-MB demodulator
42 DVB-S/C/T:
43 - dst : TwinHan DST Frontend
44
45
46o Cards based on the Phillips saa7146 multimedia PCI bridge chip:
47 - TI AV7110 based cards (i.e. with hardware MPEG decoder):
48 - Siemens/Technotrend/Hauppauge PCI DVB card revision 1.1, 1.3, 1.5, 1.6, 2.1
49 (aka Hauppauge Nexus)
50 - "budget" cards (i.e. without hardware MPEG decoder):
51 - Technotrend Budget / Hauppauge WinTV-Nova PCI Cards
52 - SATELCO Multimedia PCI
53 - KNC1 DVB-S, Typhoon DVB-S, Terratec Cinergy 1200 DVB-S (no CI support)
54 - Typhoon DVB-S budget
55 - Fujitsu-Siemens Activy DVB-S budget card
56
57o Cards based on the B2C2 Inc. FlexCopII/IIb/III:
58 - Technisat SkyStar2 PCI DVB card revision 2.3, 2.6B, 2.6C
59
60o Cards based on the Conexant Bt8xx PCI bridge:
61 - Pinnacle PCTV Sat DVB
62 - Nebula Electronics DigiTV
63 - TwinHan DST
64 - Avermedia DVB-T
65
66o Technotrend / Hauppauge DVB USB devices:
67 - Nova USB
68 - DEC 2000-T, 3000-S, 2540-T
69
70o DiBcom DVB-T USB based devices:
71 - Twinhan VisionPlus VisionDTV USB-Ter DVB-T Device
72 - HAMA DVB-T USB device
73 - CTS Portable (Chinese Television System)
74 - KWorld V-Stream XPERT DTV DVB-T USB
75 - JetWay DTV DVB-T USB
76 - ADSTech Instant TV DVB-T USB
77 - Ultima Electronic/Artec T1 USB TVBOX (AN2135 and AN2235)
78 - Compro Videomate DVB-U2000 - DVB-T USB
79 - Grandtec USB DVB-T
80 - Avermedia AverTV DVBT USB
81 - DiBcom USB DVB-T reference device (non-public)
82 - Yakumo DVB-T mobile USB2.0
83 - DiBcom USB2.0 DVB-T reference device (non-public)
84
85o Experimental support for the analog module of the Siemens DVB-C PCI card
diff --git a/Documentation/dvb/contributors.txt b/Documentation/dvb/contributors.txt
new file mode 100644
index 000000000000..c9d5ce370701
--- /dev/null
+++ b/Documentation/dvb/contributors.txt
@@ -0,0 +1,79 @@
1Thanks go to the following people for patches and contributions:
2
3Michael Hunold <m.hunold@gmx.de>
4 for the initial saa7146 driver and it's recent overhaul
5
6Christian Theiss
7 for his work on the initial Linux DVB driver
8
9Marcus Metzler <mocm@metzlerbros.de>
10Ralph Metzler <rjkm@metzlerbros.de>
11 for their continuing work on the DVB driver
12
13Michael Holzt <kju@debian.org>
14 for his contributions to the dvb-net driver
15
16Diego Picciani <d.picciani@novacomp.it>
17 for CyberLogin for Linux which allows logging onto EON
18 (in case you are wondering where CyberLogin is, EON changed its login
19 procedure and CyberLogin is no longer used.)
20
21Martin Schaller <martin@smurf.franken.de>
22 for patching the cable card decoder driver
23
24Klaus Schmidinger <Klaus.Schmidinger@cadsoft.de>
25 for various fixes regarding tuning, OSD and CI stuff and his work on VDR
26
27Steve Brown <sbrown@cortland.com>
28 for his AFC kernel thread
29
30Christoph Martin <martin@uni-mainz.de>
31 for his LIRC infrared handler
32
33Andreas Oberritter <obi@linuxtv.org>
34Dennis Noermann <dennis.noermann@noernet.de>
35Felix Domke <tmbinc@elitedvb.net>
36Florian Schirmer <jolt@tuxbox.org>
37Ronny Strutz <3des@elitedvb.de>
38Wolfram Joost <dbox2@frokaschwei.de>
39...and all the other dbox2 people
40 for many bugfixes in the generic DVB Core, frontend drivers and
41 their work on the dbox2 port of the DVB driver
42
43Oliver Endriss <o.endriss@gmx.de>
44 for many bugfixes
45
46Andrew de Quincey <adq_dvb@lidskialf.net>
47 for the tda1004x frontend driver, and various bugfixes
48
49Peter Schildmann <peter.schildmann@web.de>
50 for the driver for the Technisat SkyStar2 PCI DVB card
51
52Vadim Catana <skystar@moldova.cc>
53Roberto Ragusa <r.ragusa@libero.it>
54Augusto Cardoso <augusto@carhil.net>
55 for all the work for the FlexCopII chipset by B2C2,Inc.
56
57Davor Emard <emard@softhome.net>
58 for his work on the budget drivers, the demux code,
59 the module unloading problems, ...
60
61Hans-Frieder Vogt <hfvogt@arcor.de>
62 for his work on calculating and checking the crc's for the
63 TechnoTrend/Hauppauge DEC driver firmware
64
65Michael Dreher <michael@5dot1.de>
66Andreas 'randy' Weinberger
67 for the support of the Fujitsu-Siemens Activy budget DVB-S
68
69Kenneth Aafløy <ke-aa@frisurf.no>
70 for adding support for Typhoon DVB-S budget card
71
72Ernst Peinlich <e.peinlich@inode.at>
73 for tuning/DiSEqC support for the DEC 3000-s
74
75Peter Beutner <p.beutner@gmx.net>
76 for the IR code for the ttusb-dec driver
77
78(If you think you should be in this list, but you are not, drop a
79 line to the DVB mailing list)
diff --git a/Documentation/dvb/faq.txt b/Documentation/dvb/faq.txt
new file mode 100644
index 000000000000..3bf51e45c972
--- /dev/null
+++ b/Documentation/dvb/faq.txt
@@ -0,0 +1,160 @@
1Some very frequently asked questions about linuxtv-dvb
2
31. The signal seems to die a few seconds after tuning.
4
5 It's not a bug, it's a feature. Because the frontends have
6 significant power requirements (and hence get very hot), they
7 are powered down if they are unused (i.e. if the frontend device
8 is closed). The dvb-core.o module paramter "dvb_shutdown_timeout"
9 allow you to change the timeout (default 5 seconds). Setting the
10 timeout to 0 disables the timeout feature.
11
122. How can I watch TV?
13
14 The driver distribution includes some simple utilities which
15 are mainly intended for testing and to demonstrate how the
16 DVB API works.
17
18 Depending on whether you have a DVB-S, DVB-C or DVB-T card, use
19 apps/szap/szap, czap or tzap. You must supply a channel list
20 in ~/.[sct]zap/channels.conf. If you are lucky you can just copy
21 one of the supplied channel lists, or you can create a new one
22 by running apps/scan/scan. If you run scan on an unknown network
23 you might have to supply some start data in apps/scan/initial.h.
24
25 If you have a card with a built-in hardware MPEG-decoder the
26 drivers create a video4linux device (/dev/v4l/video0) which
27 you can use to watch TV with any v4l application. xawtv is known
28 to work. Note that you cannot change channels with xawtv, you
29 have to zap using [sct]zap. If you want a nice application for
30 TV watching and record/playback, have a look at VDR.
31
32 If your card does not have a hardware MPEG decoder you need
33 a software MPEG decoder. Mplayer or xine are known to work.
34 Newsflash: MythTV also has DVB support now.
35 Note: Only very recent versions of Mplayer and xine can decode.
36 MPEG2 transport streams (TS) directly. Then, run
37 '[sct]zap channelname -r' in one xterm, and keep it running,
38 and start 'mplayer - < /dev/dvb/adapter0/dvr0' or
39 'xine stdin://mpeg2 < /dev/dvb/adapter0/dvr0' in a second xterm.
40 That's all far from perfect, but it seems no one has written
41 a nice DVB application which includes a builtin software MPEG
42 decoder yet.
43
44 Newsflash: Newest xine directly supports DVB. Just copy your
45 channels.conf to ~/.xine and start 'xine dvb://', or select
46 the DVB button in the xine GUI. Channel switching works using the
47 numpad pgup/pgdown (NP9 / NP3) keys to scroll through the channel osd
48 menu and pressing numpad-enter to switch to the selected channel.
49
50 Note: Older versions of xine and mplayer understand MPEG program
51 streams (PS) only, and can be used in conjunction with the
52 ts2ps tool from the Metzler Brother's dvb-mpegtools package.
53
543. Which other DVB applications exist?
55
56 http://www.cadsoft.de/people/kls/vdr/
57 Klaus Schmidinger's Video Disk Recorder
58
59 http://www.metzlerbros.org/dvb/
60 Metzler Bros. DVB development; alternate drivers and
61 DVB utilities, include dvb-mpegtools and tuxzap.
62
63 http://www.linuxstb.org/
64 http://sourceforge.net/projects/dvbtools/
65 Dave Chapman's dvbtools package, including
66 dvbstream and dvbtune
67
68 http://www.linuxdvb.tv/
69 Henning Holtschneider's site with many interesting
70 links and docs
71
72 http://www.dbox2.info/
73 LinuxDVB on the dBox2
74
75 http://www.tuxbox.org/
76 http://cvs.tuxbox.org/
77 the TuxBox CVS many interesting DVB applications and the dBox2
78 DVB source
79
80 http://sourceforge.net/projects/dvbsak/
81 DVB Swiss Army Knife library and utilities
82
83 http://www.nenie.org/misc/mpsys/
84 MPSYS: a MPEG2 system library and tools
85
86 http://mplayerhq.hu/
87 mplayer
88
89 http://xine.sourceforge.net/
90 http://xinehq.de/
91 xine
92
93 http://www.mythtv.org/
94 MythTV - analog TV PVR, but now with DVB support, too
95 (with software MPEG decode)
96
97 http://dvbsnoop.sourceforge.net/
98 DVB sniffer program to monitor, analyze, debug, dump
99 or view dvb/mpeg/dsm-cc/mhp stream information (TS,
100 PES, SECTION)
101
1024. Can't get a signal tuned correctly
103
104 If you are using a Technotrend/Hauppauge DVB-C card *without* analog
105 module, you might have to use module parameter adac=-1 (dvb-ttpci.o).
106
1075. The dvb_net device doesn't give me any packets at all
108
109 Run tcpdump on the dvb0_0 interface. This sets the interface
110 into promiscous mode so it accepts any packets from the PID
111 you have configured with the dvbnet utility. Check if there
112 are any packets with the IP addr and MAC addr you have
113 configured with ifconfig.
114
115 If tcpdump doesn't give you any output, check the statistics
116 which ifconfig outputs. (Note: If the MAC address is wrong,
117 dvb_net won't get any input; thus you have to run tcpdump
118 before checking the statistics.) If there are no packets at
119 all then maybe the PID is wrong. If there are error packets,
120 then either the PID is wrong or the stream does not conform to
121 the MPE standard (EN 301 192, http://www.etsi.org/). You can
122 use e.g. dvbsnoop for debugging.
123
1246. The dvb_net device doesn't give me any multicast packets
125
126 Check your routes if they include the multicast address range.
127 Additionally make sure that "source validation by reversed path
128 lookup" is disabled:
129 $ "echo 0 > /proc/sys/net/ipv4/conf/dvb0/rp_filter"
130
1317. What the hell are all those modules that need to be loaded?
132
133 For a dvb-ttpci av7110 based full-featured card the following
134 modules are loaded:
135
136 - videodev: Video4Linux core module. This is the base module that
137 gives you access to the "analog" tv picture of the av7110 mpeg2
138 decoder.
139
140 - v4l2-common: common functions for Video4Linux-2 drivers
141
142 - v4l1-compat: backward compatiblity layer for Video4Linux-1 legacy
143 applications
144
145 - dvb-core: DVB core module. This provides you with the
146 /dev/dvb/adapter entries
147
148 - saa7146: SAA7146 core driver. This is need to access any SAA7146
149 based card in your system.
150
151 - saa7146_vv: SAA7146 video and vbi functions. These are only needed
152 for full-featured cards.
153
154 - video-buf: capture helper module for the saa7146_vv driver. This
155 one is responsible to handle capture buffers.
156
157 - dvb-ttpci: The main driver for AV7110 based, full-featued
158 DVB-S/C/T cards
159
160eof
diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware
new file mode 100644
index 000000000000..3ffdcb394299
--- /dev/null
+++ b/Documentation/dvb/get_dvb_firmware
@@ -0,0 +1,397 @@
1#!/usr/bin/perl
2# DVB firmware extractor
3#
4# (c) 2004 Andrew de Quincey
5#
6# This program is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation; either version 2 of the License, or
9# (at your option) any later version.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14#
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with this program; if not, write to the Free Software
19# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20
21use File::Temp qw/ tempdir /;
22use IO::Handle;
23
24@components = ( "sp8870", "sp887x", "tda10045", "tda10046", "av7110", "dec2000t",
25 "dec2540t", "dec3000s", "vp7041", "dibusb", "nxt2002",
26 "or51211", "or51132_qam", "or51132_vsb");
27
28# Check args
29syntax() if (scalar(@ARGV) != 1);
30$cid = $ARGV[0];
31
32# Do it!
33for ($i=0; $i < scalar(@components); $i++) {
34 if ($cid eq $components[$i]) {
35 $outfile = eval($cid);
36 die $@ if $@;
37 print STDERR "Firmware $outfile extracted successfully. Now copy it to either /lib/firmware or /usr/lib/hotplug/firmware/ (depending on your hotplug version).\n";
38 exit(0);
39 }
40}
41
42# If we get here, it wasn't found
43print STDERR "Unknown component \"$cid\"\n";
44syntax();
45
46
47
48
49# ---------------------------------------------------------------
50# Firmware-specific extraction subroutines
51
52sub sp8870 {
53 my $sourcefile = "tt_Premium_217g.zip";
54 my $url = "http://www.technotrend.de/new/217g/$sourcefile";
55 my $hash = "53970ec17a538945a6d8cb608a7b3899";
56 my $outfile = "dvb-fe-sp8870.fw";
57 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
58
59 checkstandard();
60
61 wgetfile($sourcefile, $url);
62 unzip($sourcefile, $tmpdir);
63 verify("$tmpdir/software/OEM/HE/App/boot/SC_MAIN.MC", $hash);
64 copy("$tmpdir/software/OEM/HE/App/boot/SC_MAIN.MC", $outfile);
65
66 $outfile;
67}
68
69sub sp887x {
70 my $sourcefile = "Dvbt1.3.57.6.zip";
71 my $url = "http://www.avermedia.com/software/$sourcefile";
72 my $cabfile = "DVBT Net Ver1.3.57.6/disk1/data1.cab";
73 my $hash = "237938d53a7f834c05c42b894ca68ac3";
74 my $outfile = "dvb-fe-sp887x.fw";
75 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
76
77 checkstandard();
78 checkunshield();
79
80 wgetfile($sourcefile, $url);
81 unzip($sourcefile, $tmpdir);
82 unshield("$tmpdir/$cabfile", $tmpdir);
83 verify("$tmpdir/ZEnglish/sc_main.mc", $hash);
84 copy("$tmpdir/ZEnglish/sc_main.mc", $outfile);
85
86 $outfile;
87}
88
89sub tda10045 {
90 my $sourcefile = "tt_budget_217g.zip";
91 my $url = "http://www.technotrend.de/new/217g/$sourcefile";
92 my $hash = "2105fd5bf37842fbcdfa4bfd58f3594a";
93 my $outfile = "dvb-fe-tda10045.fw";
94 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
95
96 checkstandard();
97
98 wgetfile($sourcefile, $url);
99 unzip($sourcefile, $tmpdir);
100 extract("$tmpdir/software/OEM/PCI/App/ttlcdacc.dll", 0x37ef9, 30555, "$tmpdir/fwtmp");
101 verify("$tmpdir/fwtmp", $hash);
102 copy("$tmpdir/fwtmp", $outfile);
103
104 $outfile;
105}
106
107sub tda10046 {
108 my $sourcefile = "tt_budget_217g.zip";
109 my $url = "http://www.technotrend.de/new/217g/$sourcefile";
110 my $hash = "a25b579e37109af60f4a36c37893957c";
111 my $outfile = "dvb-fe-tda10046.fw";
112 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
113
114 checkstandard();
115
116 wgetfile($sourcefile, $url);
117 unzip($sourcefile, $tmpdir);
118 extract("$tmpdir/software/OEM/PCI/App/ttlcdacc.dll", 0x3f731, 24479, "$tmpdir/fwtmp");
119 verify("$tmpdir/fwtmp", $hash);
120 copy("$tmpdir/fwtmp", $outfile);
121
122 $outfile;
123}
124
125sub av7110 {
126 my $sourcefile = "dvb-ttpci-01.fw-261d";
127 my $url = "http://www.linuxtv.org/downloads/firmware/$sourcefile";
128 my $hash = "603431b6259715a8e88f376a53b64e2f";
129 my $outfile = "dvb-ttpci-01.fw";
130
131 checkstandard();
132
133 wgetfile($sourcefile, $url);
134 verify($sourcefile, $hash);
135 copy($sourcefile, $outfile);
136
137 $outfile;
138}
139
140sub dec2000t {
141 my $sourcefile = "dec217g.exe";
142 my $url = "http://hauppauge.lightpath.net/de/$sourcefile";
143 my $hash = "bd86f458cee4a8f0a8ce2d20c66215a9";
144 my $outfile = "dvb-ttusb-dec-2000t.fw";
145 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
146
147 checkstandard();
148
149 wgetfile($sourcefile, $url);
150 unzip($sourcefile, $tmpdir);
151 verify("$tmpdir/software/OEM/STB/App/Boot/STB_PC_T.bin", $hash);
152 copy("$tmpdir/software/OEM/STB/App/Boot/STB_PC_T.bin", $outfile);
153
154 $outfile;
155}
156
157sub dec2540t {
158 my $sourcefile = "dec217g.exe";
159 my $url = "http://hauppauge.lightpath.net/de/$sourcefile";
160 my $hash = "53e58f4f5b5c2930beee74a7681fed92";
161 my $outfile = "dvb-ttusb-dec-2540t.fw";
162 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
163
164 checkstandard();
165
166 wgetfile($sourcefile, $url);
167 unzip($sourcefile, $tmpdir);
168 verify("$tmpdir/software/OEM/STB/App/Boot/STB_PC_X.bin", $hash);
169 copy("$tmpdir/software/OEM/STB/App/Boot/STB_PC_X.bin", $outfile);
170
171 $outfile;
172}
173
174sub dec3000s {
175 my $sourcefile = "dec217g.exe";
176 my $url = "http://hauppauge.lightpath.net/de/$sourcefile";
177 my $hash = "b013ececea83f4d6d8d2a29ac7c1b448";
178 my $outfile = "dvb-ttusb-dec-3000s.fw";
179 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
180
181 checkstandard();
182
183 wgetfile($sourcefile, $url);
184 unzip($sourcefile, $tmpdir);
185 verify("$tmpdir/software/OEM/STB/App/Boot/STB_PC_S.bin", $hash);
186 copy("$tmpdir/software/OEM/STB/App/Boot/STB_PC_S.bin", $outfile);
187
188 $outfile;
189}
190
191sub vp7041 {
192 my $sourcefile = "2.422.zip";
193 my $url = "http://www.twinhan.com/files/driver/USB-Ter/$sourcefile";
194 my $hash = "e88c9372d1f66609a3e7b072c53fbcfe";
195 my $outfile = "dvb-vp7041-2.422.fw";
196 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
197
198 checkstandard();
199
200 wgetfile($sourcefile, $url);
201 unzip($sourcefile, $tmpdir);
202 extract("$tmpdir/VisionDTV/Drivers/Win2K&XP/UDTTload.sys", 12503, 3036, "$tmpdir/fwtmp1");
203 extract("$tmpdir/VisionDTV/Drivers/Win2K&XP/UDTTload.sys", 2207, 10274, "$tmpdir/fwtmp2");
204
205 my $CMD = "\000\001\000\222\177\000";
206 my $PAD = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000";
207 my ($FW);
208 open $FW, ">$tmpdir/fwtmp3";
209 print $FW "$CMD\001$PAD";
210 print $FW "$CMD\001$PAD";
211 appendfile($FW, "$tmpdir/fwtmp1");
212 print $FW "$CMD\000$PAD";
213 print $FW "$CMD\001$PAD";
214 appendfile($FW, "$tmpdir/fwtmp2");
215 print $FW "$CMD\001$PAD";
216 print $FW "$CMD\000$PAD";
217 close($FW);
218
219 verify("$tmpdir/fwtmp3", $hash);
220 copy("$tmpdir/fwtmp3", $outfile);
221
222 $outfile;
223}
224
225sub dibusb {
226 my $url = "http://www.linuxtv.org/downloads/firmware/dvb-dibusb-5.0.0.11.fw";
227 my $outfile = "dvb-dibusb-5.0.0.11.fw";
228 my $hash = "fa490295a527360ca16dcdf3224ca243";
229
230 checkstandard();
231
232 wgetfile($outfile, $url);
233 verify($outfile,$hash);
234
235 $outfile;
236}
237
238sub nxt2002 {
239 my $sourcefile = "Broadband4PC_4_2_11.zip";
240 my $url = "http://www.bbti.us/download/windows/$sourcefile";
241 my $hash = "c6d2ea47a8f456d887ada0cfb718ff2a";
242 my $outfile = "dvb-fe-nxt2002.fw";
243 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
244
245 checkstandard();
246
247 wgetfile($sourcefile, $url);
248 unzip($sourcefile, $tmpdir);
249 verify("$tmpdir/SkyNETU.sys", $hash);
250 extract("$tmpdir/SkyNETU.sys", 375832, 5908, $outfile);
251
252 $outfile;
253}
254
255sub or51211 {
256 my $fwfile = "dvb-fe-or51211.fw";
257 my $url = "http://linuxtv.org/downloads/firmware/$fwfile";
258 my $hash = "d830949c771a289505bf9eafc225d491";
259
260 checkstandard();
261
262 wgetfile($fwfile, $url);
263 verify($fwfile, $hash);
264
265 $fwfile;
266}
267
268sub or51132_qam {
269 my $fwfile = "dvb-fe-or51132-qam.fw";
270 my $url = "http://linuxtv.org/downloads/firmware/$fwfile";
271 my $hash = "7702e8938612de46ccadfe9b413cb3b5";
272
273 checkstandard();
274
275 wgetfile($fwfile, $url);
276 verify($fwfile, $hash);
277
278 $fwfile;
279}
280
281sub or51132_vsb {
282 my $fwfile = "dvb-fe-or51132-vsb.fw";
283 my $url = "http://linuxtv.org/downloads/firmware/$fwfile";
284 my $hash = "c16208e02f36fc439a557ad4c613364a";
285
286 checkstandard();
287
288 wgetfile($fwfile, $url);
289 verify($fwfile, $hash);
290
291 $fwfile;
292}
293
294# ---------------------------------------------------------------
295# Utilities
296
297sub checkstandard {
298 if (system("which unzip > /dev/null 2>&1")) {
299 die "This firmware requires the unzip command - see ftp://ftp.info-zip.org/pub/infozip/UnZip.html\n";
300 }
301 if (system("which md5sum > /dev/null 2>&1")) {
302 die "This firmware requires the md5sum command - see http://www.gnu.org/software/coreutils/\n";
303 }
304 if (system("which wget > /dev/null 2>&1")) {
305 die "This firmware requires the wget command - see http://wget.sunsite.dk/\n";
306 }
307}
308
309sub checkunshield {
310 if (system("which unshield > /dev/null 2>&1")) {
311 die "This firmware requires the unshield command - see http://sourceforge.net/projects/synce/\n";
312 }
313}
314
315sub wgetfile {
316 my ($sourcefile, $url) = @_;
317
318 if (! -f $sourcefile) {
319 system("wget -O \"$sourcefile\" \"$url\"") and die "wget failed - unable to download firmware";
320 }
321}
322
323sub unzip {
324 my ($sourcefile, $todir) = @_;
325
326 $status = system("unzip -q -o -d \"$todir\" \"$sourcefile\" 2>/dev/null" );
327 if ((($status >> 8) > 2) || (($status & 0xff) != 0)) {
328 die ("unzip failed - unable to extract firmware");
329 }
330}
331
332sub unshield {
333 my ($sourcefile, $todir) = @_;
334
335 system("unshield x -d \"$todir\" \"$sourcefile\" > /dev/null" ) and die ("unshield failed - unable to extract firmware");
336}
337
338sub verify {
339 my ($filename, $hash) = @_;
340 my ($testhash);
341
342 open(CMD, "md5sum \"$filename\"|");
343 $testhash = <CMD>;
344 $testhash =~ /([a-zA-Z0-9]*)/;
345 $testhash = $1;
346 close CMD;
347 die "Hash of extracted file does not match!\n" if ($testhash ne $hash);
348}
349
350sub copy {
351 my ($from, $to) = @_;
352
353 system("cp -f \"$from\" \"$to\"") and die ("cp failed");
354}
355
356sub extract {
357 my ($infile, $offset, $length, $outfile) = @_;
358 my ($chunklength, $buf, $rcount);
359
360 open INFILE, "<$infile";
361 open OUTFILE, ">$outfile";
362 sysseek(INFILE, $offset, SEEK_SET);
363 while($length > 0) {
364 # Calc chunk size
365 $chunklength = 2048;
366 $chunklength = $length if ($chunklength > $length);
367
368 $rcount = sysread(INFILE, $buf, $chunklength);
369 die "Ran out of data\n" if ($rcount != $chunklength);
370 syswrite(OUTFILE, $buf);
371 $length -= $rcount;
372 }
373 close INFILE;
374 close OUTFILE;
375}
376
377sub appendfile {
378 my ($FH, $infile) = @_;
379 my ($buf);
380
381 open INFILE, "<$infile";
382 while(1) {
383 $rcount = sysread(INFILE, $buf, 2048);
384 last if ($rcount == 0);
385 print $FH $buf;
386 }
387 close(INFILE);
388}
389
390sub syntax() {
391 print STDERR "syntax: get_dvb_firmware <component>\n";
392 print STDERR "Supported components:\n";
393 for($i=0; $i < scalar(@components); $i++) {
394 print STDERR "\t" . $components[$i] . "\n";
395 }
396 exit(1);
397}
diff --git a/Documentation/dvb/readme.txt b/Documentation/dvb/readme.txt
new file mode 100644
index 000000000000..754c98c6ad94
--- /dev/null
+++ b/Documentation/dvb/readme.txt
@@ -0,0 +1,52 @@
1Linux Digital Video Broadcast (DVB) subsystem
2=============================================
3
4The main development site and CVS repository for these
5drivers is http://linuxtv.org/.
6
7The developer mailing list linux-dvb is also hosted there,
8see http://linuxtv.org/lists.php. Please check
9the archive http://linuxtv.org/pipermail/linux-dvb/
10and the Wiki http://linuxtv.org/wiki/
11before asking newbie questions on the list.
12
13API documentation, utilities and test/example programs
14are available as part of the old driver package for Linux 2.4
15(linuxtv-dvb-1.0.x.tar.gz), or from CVS (module DVB).
16We plan to split this into separate packages, but it's not
17been done yet.
18
19http://linuxtv.org/downloads/
20
21What's inside this directory:
22
23"cards.txt"
24contains a list of supported hardware.
25
26"contributors.txt"
27is the who-is-who of DVB development
28
29"faq.txt"
30contains frequently asked questions and their answers.
31
32"get_dvb_firmware"
33script to download and extract firmware for those devices
34that require it.
35
36"ttusb-dec.txt"
37contains detailed informations about the
38TT DEC2000/DEC3000 USB DVB hardware.
39
40"bt8xx.txt"
41contains detailed installation instructions for the
42various bt8xx based "budget" DVB cards
43(Nebula, Pinnacle PCTV, Twinhan DST)
44
45"README.dibusb"
46contains detailed information about adapters
47based on DiBcom reference design.
48
49"udev.txt"
50how to get DVB and udev up and running.
51
52Good luck and have fun!
diff --git a/Documentation/dvb/ttusb-dec.txt b/Documentation/dvb/ttusb-dec.txt
new file mode 100644
index 000000000000..5c1e984c26a7
--- /dev/null
+++ b/Documentation/dvb/ttusb-dec.txt
@@ -0,0 +1,44 @@
1TechnoTrend/Hauppauge DEC USB Driver
2====================================
3
4Driver Status
5-------------
6
7Supported:
8 DEC2000-t
9 DEC2450-t
10 DEC3000-s
11 Linux Kernels 2.4 and 2.6
12 Video Streaming
13 Audio Streaming
14 Section Filters
15 Channel Zapping
16 Hotplug firmware loader under 2.6 kernels
17
18To Do:
19 Tuner status information
20 DVB network interface
21 Streaming video PC->DEC
22 Conax support for 2450-t
23
24Getting the Firmware
25--------------------
26To download the firmware, use the following commands:
27"get_dvb_firmware dec2000t"
28"get_dvb_firmware dec2540t"
29"get_dvb_firmware dec3000s"
30
31
32Compilation Notes for 2.4 kernels
33---------------------------------
34For 2.4 kernels the firmware for the DECs is compiled into the driver itself.
35
36Copy the three files downloaded above into the build-2.4 directory.
37
38
39Hotplug Firmware Loading for 2.6 kernels
40----------------------------------------
41For 2.6 kernels the firmware is loaded at the point that the driver module is
42loaded. See linux/Documentation/dvb/firmware.txt for more information.
43
44Copy the three files downloaded above into the /usr/lib/hotplug/firmware directory.
diff --git a/Documentation/dvb/udev.txt b/Documentation/dvb/udev.txt
new file mode 100644
index 000000000000..68ee224b6aae
--- /dev/null
+++ b/Documentation/dvb/udev.txt
@@ -0,0 +1,46 @@
1The DVB subsystem currently registers to the sysfs subsystem using the
2"class_simple" interface.
3
4This means that only the basic informations like module loading parameters
5are presented through sysfs. Other things that might be interesting are
6currently *not* available.
7
8Nevertheless it's now possible to add proper udev rules so that the
9DVB device nodes are created automatically.
10
11We assume that you have udev already up and running and that have been
12creating the DVB device nodes manually up to now due to the missing sysfs
13support.
14
150. Don't forget to disable your current method of creating the
16device nodes manually.
17
181. Unfortunately, you'll need a helper script to transform the kernel
19sysfs device name into the well known dvb adapter / device naming scheme.
20The script should be called "dvb.sh" and should be placed into a script
21dir where udev can execute it, most likely /etc/udev/scripts/
22
23So, create a new file /etc/udev/scripts/dvb.sh and add the following:
24------------------------------schnipp------------------------------------------------
25#!/bin/sh
26/bin/echo $1 | /bin/sed -e 's,dvb\([0-9]\)\.\([^0-9]*\)\([0-9]\),dvb/adapter\1/\2\3,'
27------------------------------schnipp------------------------------------------------
28
29Don't forget to make the script executable with "chmod".
30
311. You need to create a proper udev rule that will create the device nodes
32like you know them. All real distributions out there scan the /etc/udev/rules.d
33directory for rule files. The main udev configuration file /etc/udev/udev.conf
34will tell you the directory where the rules are, most likely it's /etc/udev/rules.d/
35
36Create a new rule file in that directory called "dvb.rule" and add the following line:
37------------------------------schnipp------------------------------------------------
38KERNEL="dvb*", PROGRAM="/etc/udev/scripts/dvb.sh %k", NAME="%c"
39------------------------------schnipp------------------------------------------------
40
41If you want more control over the device nodes (for example a special group membership)
42have a look at "man udev".
43
44For every device that registers to the sysfs subsystem with a "dvb" prefix,
45the helper script /etc/udev/scripts/dvb.sh is invoked, which will then
46create the proper device node in your /dev/ directory.