blob: 068070ff13cd0a4673d9333341b39ea5b77daf41 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001
2HOWTO: Get An Avermedia DVB-T working under Linux
Mauro Carvalho Chehab674434c2005-12-12 00:37:28 -08003 ______________________________________________
Linus Torvalds1da177e2005-04-16 15:20:36 -07004
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
Ville Skytt\รค12e66f62006-01-09 15:25:38 -0200153 it. Then copy it to /usr/lib/hotplug/firmware or /lib/firmware/
154 (depending on configuration of firmware hotplug).
Linus Torvalds1da177e2005-04-16 15:20:36 -0700155
156Receiving DVB-T in Australia
157
158 I have no experience of DVB-T in other countries other than
159 Australia, so I will attempt to explain how it works here in
160 Melbourne and how this affects the configuration of the DVB-T
161 card.
162
163 The Digital Broadcasting Australia website has a Reception
164 locatortool which provides information on transponder channels
165 and frequencies. My local transmitter happens to be Mount
166 Dandenong.
167
168 The frequencies broadcast by Mount Dandenong are:
169
170 Table 1. Transponder Frequencies Mount Dandenong, Vic, Aus.
171 Broadcaster Channel Frequency
172 ABC VHF 12 226.5 MHz
173 TEN VHF 11 219.5 MHz
174 NINE VHF 8 191.625 MHz
175 SEVEN VHF 6 177.5 MHz
176 SBS UHF 29 536.5 MHz
177
178 The Scan utility has a set of compiled-in defaults for various
179 countries and regions, but if they do not suit, or if you have
180 a pre-compiled scan binary, you can specify a data file on the
181 command line which contains the transponder frequencies. Here
182 is a sample file for the above channel transponders:
183# Data file for DVB scan program
184#
185# C Frequency SymbolRate FEC QAM
186# S Frequency Polarisation SymbolRate FEC
187# T Frequency Bandwidth FEC FEC2 QAM Mode Guard Hier
188T 226500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
189T 191625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
190T 219500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
191T 177500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
192T 536500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
193
194 The defaults for the transponder frequency and other
195 modulation parameters were obtained from www.dba.org.au.
196
197 When Scan runs, it will output channels.conf information for
198 any channel's transponders which the card's frontend can lock
199 onto. (i.e. any whose signal is strong enough at your
200 antenna).
201
202 Here's my channels.conf file for anyone who's interested:
203ABC HDTV:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64
204:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:2307:0:560
205ABC TV Melbourne:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_
2064:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:65
2070:561
208ABC TV 2:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64
209:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:562
210ABC TV 3:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64
211:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:563
212ABC TV 4:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64
213:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:564
214ABC DiG Radio:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:Q
215AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:0:2311:56
2166
217TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM
218_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:158
2195
220TEN Digital 1:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q
221AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1
222586
223TEN Digital 2:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q
224AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1
225587
226TEN Digital 3:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q
227AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1
228588
229TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM
230_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:158
2319
232TEN Digital 4:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q
233AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1
234590
235TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM
236_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:159
2371
238TEN HD:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:T
239RANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:514:0:1592
240TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM
241_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:159
2423
243Nine Digital:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QA
244M_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:513:660:10
24572
246Nine Digital HD:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2
247:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:0:1
248073
249Nine Guide:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_
25064:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:514:670:1074
2517 Digital:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_6
2524:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1328
2537 Digital 1:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM
254_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1329
2557 Digital 2:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM
256_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1330
2577 Digital 3:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM
258_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1331
2597 HD Digital:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QA
260M_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:833:834:133
2612
2627 Program Guide:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3
263:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:865:866:
2641334
265SBS HD:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:T
266RANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:102:103:784
267SBS DIGITAL 1:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:Q
268AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:81:785
269SBS DIGITAL 2:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:Q
270AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:162:83:786
271SBS EPG:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:
272TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:163:85:787
273SBS RADIO 1:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM
274_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:201:798
275SBS RADIO 2:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM
276_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:202:799
277 _________________________________________________________
278
279Known Limitations
280
281 At present I can say with confidence that the frontend tunes
282 via /dev/dvb/adapter{x}/frontend0 and supplies an MPEG2 stream
283 via /dev/dvb/adapter{x}/dvr0. I have not tested the
284 functionality of any other part of the card yet. I will do so
285 over time and update this document.
286
287 There are some limitations in the i2c layer due to a returned
288 error message inconsistency. Although this generates errors in
289 dmesg and the system logs, it does not appear to affect the
290 ability of the frontend to function correctly.
291 _________________________________________________________
292
293Further Update
294
295 dvbstream and VideoLAN Client on windows works a treat with
296 DVB, in fact this is currently serving as my main way of
297 viewing DVB-T at the moment. Additionally, VLC is happily
298 decoding HDTV signals, although the PC is dropping the odd
299 frame here and there - I assume due to processing capability -
300 as all the decoding is being done under windows in software.
301
302 Many thanks to Nigel Pearson for the updates to this document
303 since the recent revision of the driver.
304
305 January 29th 2004