Root/
1 | HOWTO: Get An Avermedia DVB-T working under Linux |
2 | ______________________________________________ |
3 | |
4 | Table of Contents |
5 | Assumptions and Introduction |
6 | The Avermedia DVB-T |
7 | Getting the card going |
8 | Receiving DVB-T in Australia |
9 | Known Limitations |
10 | Further Update |
11 | |
12 | Assumptions and Introduction |
13 | |
14 | It is assumed that the reader understands the basic structure |
15 | of the Linux Kernel DVB drivers and the general principles of |
16 | Digital TV. |
17 | |
18 | One significant difference between Digital TV and Analogue TV |
19 | that the unwary (like myself) should consider is that, |
20 | although the component structure of budget DVB-T cards are |
21 | substantially similar to Analogue TV cards, they function in |
22 | substantially different ways. |
23 | |
24 | The purpose of an Analogue TV is to receive and display an |
25 | Analogue Television signal. An Analogue TV signal (otherwise |
26 | known as composite video) is an analogue encoding of a |
27 | sequence of image frames (25 per second) rasterised using an |
28 | interlacing technique. Interlacing takes two fields to |
29 | represent one frame. Computers today are at their best when |
30 | dealing with digital signals, not analogue signals and a |
31 | composite video signal is about as far removed from a digital |
32 | data stream as you can get. Therefore, an Analogue TV card for |
33 | a PC has the following purpose: |
34 | |
35 | * Tune the receiver to receive a broadcast signal |
36 | * demodulate the broadcast signal |
37 | * demultiplex the analogue video signal and analogue audio |
38 | signal (note some countries employ a digital audio signal |
39 | embedded within the modulated composite analogue signal - |
40 | NICAM.) |
41 | * digitize the analogue video signal and make the resulting |
42 | datastream available to the data bus. |
43 | |
44 | The digital datastream from an Analogue TV card is generated |
45 | by circuitry on the card and is often presented uncompressed. |
46 | For a PAL TV signal encoded at a resolution of 768x576 24-bit |
47 | color pixels over 25 frames per second - a fair amount of data |
48 | is generated and must be processed by the PC before it can be |
49 | displayed on the video monitor screen. Some Analogue TV cards |
50 | for PCs have onboard MPEG2 encoders which permit the raw |
51 | digital data stream to be presented to the PC in an encoded |
52 | and compressed form - similar to the form that is used in |
53 | Digital TV. |
54 | |
55 | The purpose of a simple budget digital TV card (DVB-T,C or S) |
56 | is to simply: |
57 | |
58 | * Tune the received to receive a broadcast signal. |
59 | * Extract the encoded digital datastream from the broadcast |
60 | signal. |
61 | * Make the encoded digital datastream (MPEG2) available to |
62 | the data bus. |
63 | |
64 | The significant difference between the two is that the tuner |
65 | on the analogue TV card spits out an Analogue signal, whereas |
66 | the tuner on the digital TV card spits out a compressed |
67 | encoded digital datastream. As the signal is already |
68 | digitised, it is trivial to pass this datastream to the PC |
69 | databus with minimal additional processing and then extract |
70 | the digital video and audio datastreams passing them to the |
71 | appropriate software or hardware for decoding and viewing. |
72 | _________________________________________________________ |
73 | |
74 | The Avermedia DVB-T |
75 | |
76 | The Avermedia DVB-T is a budget PCI DVB card. It has 3 inputs: |
77 | |
78 | * RF Tuner Input |
79 | * Composite Video Input (RCA Jack) |
80 | * SVIDEO Input (Mini-DIN) |
81 | |
82 | The RF Tuner Input is the input to the tuner module of the |
83 | card. The Tuner is otherwise known as the "Frontend" . The |
84 | Frontend of the Avermedia DVB-T is a Microtune 7202D. A timely |
85 | post to the linux-dvb mailing list ascertained that the |
86 | Microtune 7202D is supported by the sp887x driver which is |
87 | found in the dvb-hw CVS module. |
88 | |
89 | The DVB-T card is based around the BT878 chip which is a very |
90 | common multimedia bridge and often found on Analogue TV cards. |
91 | There is no on-board MPEG2 decoder, which means that all MPEG2 |
92 | decoding must be done in software, or if you have one, on an |
93 | MPEG2 hardware decoding card or chipset. |
94 | _________________________________________________________ |
95 | |
96 | Getting the card going |
97 | |
98 | In order to fire up the card, it is necessary to load a number |
99 | of modules from the DVB driver set. Prior to this it will have |
100 | been necessary to download these drivers from the linuxtv CVS |
101 | server and compile them successfully. |
102 | |
103 | Depending on the card's feature set, the Device Driver API for |
104 | DVB under Linux will expose some of the following device files |
105 | in the /dev tree: |
106 | |
107 | * /dev/dvb/adapter0/audio0 |
108 | * /dev/dvb/adapter0/ca0 |
109 | * /dev/dvb/adapter0/demux0 |
110 | * /dev/dvb/adapter0/dvr0 |
111 | * /dev/dvb/adapter0/frontend0 |
112 | * /dev/dvb/adapter0/net0 |
113 | * /dev/dvb/adapter0/osd0 |
114 | * /dev/dvb/adapter0/video0 |
115 | |
116 | The primary device nodes that we are interested in (at this |
117 | stage) for the Avermedia DVB-T are: |
118 | |
119 | * /dev/dvb/adapter0/dvr0 |
120 | * /dev/dvb/adapter0/frontend0 |
121 | |
122 | The dvr0 device node is used to read the MPEG2 Data Stream and |
123 | the frontend0 node is used to tune the frontend tuner module. |
124 | |
125 | At this stage, it has not been able to ascertain the |
126 | functionality of the remaining device nodes in respect of the |
127 | Avermedia DVBT. However, full functionality in respect of |
128 | tuning, receiving and supplying the MPEG2 data stream is |
129 | possible with the currently available versions of the driver. |
130 | It may be possible that additional functionality is available |
131 | from the card (i.e. viewing the additional analogue inputs |
132 | that the card presents), but this has not been tested yet. If |
133 | I get around to this, I'll update the document with whatever I |
134 | find. |
135 | |
136 | To power up the card, load the following modules in the |
137 | following order: |
138 | |
139 | * modprobe bttv (normally loaded automatically) |
140 | * modprobe dvb-bt8xx (or place dvb-bt8xx in /etc/modules) |
141 | |
142 | Insertion of these modules into the running kernel will |
143 | activate the appropriate DVB device nodes. It is then possible |
144 | to start accessing the card with utilities such as scan, tzap, |
145 | dvbstream etc. |
146 | |
147 | The frontend module sp887x.o, requires an external firmware. |
148 | Please use the command "get_dvb_firmware sp887x" to download |
149 | it. Then copy it to /usr/lib/hotplug/firmware or /lib/firmware/ |
150 | (depending on configuration of firmware hotplug). |
151 | |
152 | Receiving DVB-T in Australia |
153 | |
154 | I have no experience of DVB-T in other countries other than |
155 | Australia, so I will attempt to explain how it works here in |
156 | Melbourne and how this affects the configuration of the DVB-T |
157 | card. |
158 | |
159 | The Digital Broadcasting Australia website has a Reception |
160 | locatortool which provides information on transponder channels |
161 | and frequencies. My local transmitter happens to be Mount |
162 | Dandenong. |
163 | |
164 | The frequencies broadcast by Mount Dandenong are: |
165 | |
166 | Table 1. Transponder Frequencies Mount Dandenong, Vic, Aus. |
167 | Broadcaster Channel Frequency |
168 | ABC VHF 12 226.5 MHz |
169 | TEN VHF 11 219.5 MHz |
170 | NINE VHF 8 191.625 MHz |
171 | SEVEN VHF 6 177.5 MHz |
172 | SBS UHF 29 536.5 MHz |
173 | |
174 | The Scan utility has a set of compiled-in defaults for various |
175 | countries and regions, but if they do not suit, or if you have |
176 | a pre-compiled scan binary, you can specify a data file on the |
177 | command line which contains the transponder frequencies. Here |
178 | is a sample file for the above channel transponders: |
179 | # Data file for DVB scan program |
180 | # |
181 | # C Frequency SymbolRate FEC QAM |
182 | # S Frequency Polarisation SymbolRate FEC |
183 | # T Frequency Bandwidth FEC FEC2 QAM Mode Guard Hier |
184 | T 226500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE |
185 | T 191625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE |
186 | T 219500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE |
187 | T 177500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE |
188 | T 536500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE |
189 | |
190 | The defaults for the transponder frequency and other |
191 | modulation parameters were obtained from www.dba.org.au. |
192 | |
193 | When Scan runs, it will output channels.conf information for |
194 | any channel's transponders which the card's frontend can lock |
195 | onto. (i.e. any whose signal is strong enough at your |
196 | antenna). |
197 | |
198 | Here's my channels.conf file for anyone who's interested: |
199 | ABC HDTV:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64 |
200 | :TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:2307:0:560 |
201 | ABC TV Melbourne:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_ |
202 | 4:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:65 |
203 | 0:561 |
204 | ABC TV 2:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64 |
205 | :TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:562 |
206 | ABC TV 3:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64 |
207 | :TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:563 |
208 | ABC TV 4: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:564 |
210 | ABC DiG Radio:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:Q |
211 | AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:0:2311:56 |
212 | 6 |
213 | TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM |
214 | _64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:158 |
215 | 5 |
216 | TEN Digital 1:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q |
217 | AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1 |
218 | 586 |
219 | TEN Digital 2:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q |
220 | AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1 |
221 | 587 |
222 | TEN Digital 3:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q |
223 | AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1 |
224 | 588 |
225 | TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM |
226 | _64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:158 |
227 | 9 |
228 | TEN Digital 4:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q |
229 | AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1 |
230 | 590 |
231 | TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM |
232 | _64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:159 |
233 | 1 |
234 | TEN HD:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:T |
235 | RANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:514:0:1592 |
236 | TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM |
237 | _64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:159 |
238 | 3 |
239 | Nine Digital:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QA |
240 | M_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:513:660:10 |
241 | 72 |
242 | Nine Digital HD:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2 |
243 | :QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:0:1 |
244 | 073 |
245 | Nine Guide:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_ |
246 | 64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:514:670:1074 |
247 | 7 Digital:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_6 |
248 | 4:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1328 |
249 | 7 Digital 1:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM |
250 | _64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1329 |
251 | 7 Digital 2:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM |
252 | _64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1330 |
253 | 7 Digital 3: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:1331 |
255 | 7 HD Digital:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QA |
256 | M_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:833:834:133 |
257 | 2 |
258 | 7 Program Guide:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3 |
259 | :QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:865:866: |
260 | 1334 |
261 | SBS HD:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:T |
262 | RANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:102:103:784 |
263 | SBS DIGITAL 1:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:Q |
264 | AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:81:785 |
265 | SBS DIGITAL 2:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:Q |
266 | AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:162:83:786 |
267 | SBS EPG:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64: |
268 | TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:163:85:787 |
269 | SBS RADIO 1:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM |
270 | _64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:201:798 |
271 | SBS RADIO 2:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM |
272 | _64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:202:799 |
273 | _________________________________________________________ |
274 | |
275 | Known Limitations |
276 | |
277 | At present I can say with confidence that the frontend tunes |
278 | via /dev/dvb/adapter{x}/frontend0 and supplies an MPEG2 stream |
279 | via /dev/dvb/adapter{x}/dvr0. I have not tested the |
280 | functionality of any other part of the card yet. I will do so |
281 | over time and update this document. |
282 | |
283 | There are some limitations in the i2c layer due to a returned |
284 | error message inconsistency. Although this generates errors in |
285 | dmesg and the system logs, it does not appear to affect the |
286 | ability of the frontend to function correctly. |
287 | _________________________________________________________ |
288 | |
289 | Further Update |
290 | |
291 | dvbstream and VideoLAN Client on windows works a treat with |
292 | DVB, in fact this is currently serving as my main way of |
293 | viewing DVB-T at the moment. Additionally, VLC is happily |
294 | decoding HDTV signals, although the PC is dropping the odd |
295 | frame here and there - I assume due to processing capability - |
296 | as all the decoding is being done under windows in software. |
297 | |
298 | Many thanks to Nigel Pearson for the updates to this document |
299 | since the recent revision of the driver. |
300 | |
301 | February 14th 2006 |
302 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9