1 HOWTO: Get An Avermedia DVB-T working under Linux
2 -------------------------------------------------
8 This documentation is outdated. Please check at the DVB wiki
9 at https://linuxtv.org/wiki for more updated info.
11 There's a section there specific for Avermedia boards at:
12 https://linuxtv.org/wiki/index.php/AVerMedia
15 Assumptions and Introduction
16 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
18 It is assumed that the reader understands the basic structure
19 of the Linux Kernel DVB drivers and the general principles of
22 One significant difference between Digital TV and Analogue TV
23 that the unwary (like myself) should consider is that,
24 although the component structure of budget DVB-T cards are
25 substantially similar to Analogue TV cards, they function in
26 substantially different ways.
28 The purpose of an Analogue TV is to receive and display an
29 Analogue Television signal. An Analogue TV signal (otherwise
30 known as composite video) is an analogue encoding of a
31 sequence of image frames (25 per second) rasterised using an
32 interlacing technique. Interlacing takes two fields to
33 represent one frame. Computers today are at their best when
34 dealing with digital signals, not analogue signals and a
35 composite video signal is about as far removed from a digital
36 data stream as you can get. Therefore, an Analogue TV card for
37 a PC has the following purpose:
39 * Tune the receiver to receive a broadcast signal
40 * demodulate the broadcast signal
41 * demultiplex the analogue video signal and analogue audio
42 signal. **NOTE:** some countries employ a digital audio signal
43 embedded within the modulated composite analogue signal -
45 * digitize the analogue video signal and make the resulting
46 datastream available to the data bus.
48 The digital datastream from an Analogue TV card is generated
49 by circuitry on the card and is often presented uncompressed.
50 For a PAL TV signal encoded at a resolution of 768x576 24-bit
51 color pixels over 25 frames per second - a fair amount of data
52 is generated and must be processed by the PC before it can be
53 displayed on the video monitor screen. Some Analogue TV cards
54 for PCs have onboard MPEG2 encoders which permit the raw
55 digital data stream to be presented to the PC in an encoded
56 and compressed form - similar to the form that is used in
59 The purpose of a simple budget digital TV card (DVB-T,C or S)
62 * Tune the received to receive a broadcast signal.
63 * Extract the encoded digital datastream from the broadcast
65 * Make the encoded digital datastream (MPEG2) available to
68 The significant difference between the two is that the tuner
69 on the analogue TV card spits out an Analogue signal, whereas
70 the tuner on the digital TV card spits out a compressed
71 encoded digital datastream. As the signal is already
72 digitised, it is trivial to pass this datastream to the PC
73 databus with minimal additional processing and then extract
74 the digital video and audio datastreams passing them to the
75 appropriate software or hardware for decoding and viewing.
80 The Avermedia DVB-T is a budget PCI DVB card. It has 3 inputs:
83 * Composite Video Input (RCA Jack)
84 * SVIDEO Input (Mini-DIN)
86 The RF Tuner Input is the input to the tuner module of the
87 card. The Tuner is otherwise known as the "Frontend" . The
88 Frontend of the Avermedia DVB-T is a Microtune 7202D. A timely
89 post to the linux-dvb mailing list ascertained that the
90 Microtune 7202D is supported by the sp887x driver which is
91 found in the dvb-hw CVS module.
93 The DVB-T card is based around the BT878 chip which is a very
94 common multimedia bridge and often found on Analogue TV cards.
95 There is no on-board MPEG2 decoder, which means that all MPEG2
96 decoding must be done in software, or if you have one, on an
97 MPEG2 hardware decoding card or chipset.
100 Getting the card going
101 ~~~~~~~~~~~~~~~~~~~~~~
103 In order to fire up the card, it is necessary to load a number
104 of modules from the DVB driver set. Prior to this it will have
105 been necessary to download these drivers from the linuxtv CVS
106 server and compile them successfully.
108 Depending on the card's feature set, the Device Driver API for
109 DVB under Linux will expose some of the following device files
112 * /dev/dvb/adapter0/audio0
113 * /dev/dvb/adapter0/ca0
114 * /dev/dvb/adapter0/demux0
115 * /dev/dvb/adapter0/dvr0
116 * /dev/dvb/adapter0/frontend0
117 * /dev/dvb/adapter0/net0
118 * /dev/dvb/adapter0/osd0
119 * /dev/dvb/adapter0/video0
121 The primary device nodes that we are interested in (at this
122 stage) for the Avermedia DVB-T are:
124 * /dev/dvb/adapter0/dvr0
125 * /dev/dvb/adapter0/frontend0
127 The dvr0 device node is used to read the MPEG2 Data Stream and
128 the frontend0 node is used to tune the frontend tuner module.
130 At this stage, it has not been able to ascertain the
131 functionality of the remaining device nodes in respect of the
132 Avermedia DVBT. However, full functionality in respect of
133 tuning, receiving and supplying the MPEG2 data stream is
134 possible with the currently available versions of the driver.
135 It may be possible that additional functionality is available
136 from the card (i.e. viewing the additional analogue inputs
137 that the card presents), but this has not been tested yet. If
138 I get around to this, I'll update the document with whatever I
141 To power up the card, load the following modules in the
144 * modprobe bttv (normally loaded automatically)
145 * modprobe dvb-bt8xx (or place dvb-bt8xx in /etc/modules)
147 Insertion of these modules into the running kernel will
148 activate the appropriate DVB device nodes. It is then possible
149 to start accessing the card with utilities such as scan, tzap,
152 The frontend module sp887x.o, requires an external firmware.
155 Receiving DVB-T in Australia
156 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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
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
168 The frequencies broadcast by Mount Dandenong are:
170 Table 1. Transponder Frequencies Mount Dandenong, Vic, Aus.
171 Broadcaster Channel Frequency
174 NINE VHF 8 191.625 MHz
175 SEVEN VHF 6 177.5 MHz
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:
186 # Data file for DVB scan program
188 # C Frequency SymbolRate FEC QAM
189 # S Frequency Polarisation SymbolRate FEC
190 # T Frequency Bandwidth FEC FEC2 QAM Mode Guard Hier
191 T 226500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
192 T 191625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
193 T 219500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
194 T 177500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
195 T 536500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
197 The defaults for the transponder frequency and other
198 modulation parameters were obtained from www.dba.org.au.
200 When Scan runs, it will output channels.conf information for
201 any channel's transponders which the card's frontend can lock
202 onto. (i.e. any whose signal is strong enough at your
205 Here's my channels.conf file for anyone who's interested:
209 ABC HDTV:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:2307:0:560
210 ABC TV Melbourne:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:561
211 ABC TV 2:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:562
212 ABC TV 3:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:563
213 ABC TV 4:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:564
214 ABC DiG Radio:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:0:2311:566
215 TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1585
216 TEN Digital 1:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1586
217 TEN Digital 2:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1587
218 TEN Digital 3:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1588
219 TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1589
220 TEN Digital 4:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1590
221 TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1591
222 TEN HD:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:514:0:1592
223 TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1593
224 Nine Digital:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:513:660:1072
225 Nine Digital HD:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:0:1073
226 Nine Guide:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:514:670:1074
227 7 Digital:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1328
228 7 Digital 1:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1329
229 7 Digital 2:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1330
230 7 Digital 3:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1331
231 7 HD Digital:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:833:834:1332
232 7 Program Guide:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:865:866:1334
233 SBS HD:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:102:103:784
234 SBS DIGITAL 1:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:81:785
235 SBS DIGITAL 2:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:162:83:786
236 SBS EPG:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:163:85:787
237 SBS RADIO 1:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:201:798
238 SBS RADIO 2:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:202:799
243 At present I can say with confidence that the frontend tunes
244 via /dev/dvb/adapter{x}/frontend0 and supplies an MPEG2 stream
245 via /dev/dvb/adapter{x}/dvr0. I have not tested the
246 functionality of any other part of the card yet. I will do so
247 over time and update this document.
249 There are some limitations in the i2c layer due to a returned
250 error message inconsistency. Although this generates errors in
251 dmesg and the system logs, it does not appear to affect the
252 ability of the frontend to function correctly.
257 dvbstream and VideoLAN Client on windows works a treat with
258 DVB, in fact this is currently serving as my main way of
259 viewing DVB-T at the moment. Additionally, VLC is happily
260 decoding HDTV signals, although the PC is dropping the odd
261 frame here and there - I assume due to processing capability -
262 as all the decoding is being done under windows in software.
264 Many thanks to Nigel Pearson for the updates to this document
265 since the recent revision of the driver.