1HOWTO: 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 12Assumptions 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 74The 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 96Getting 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 152Receiving 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 184T 226500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE 185T 191625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE 186T 219500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE 187T 177500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE 188T 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: 199ABC 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 201ABC TV Melbourne:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_ 2024:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:65 2030:561 204ABC 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 206ABC 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 208ABC 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 210ABC DiG Radio:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:Q 211AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:0:2311:56 2126 213TEN 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 2155 216TEN Digital 1:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q 217AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1 218586 219TEN Digital 2: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 221587 222TEN Digital 3: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 224588 225TEN 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 2279 228TEN Digital 4:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q 229AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1 230590 231TEN 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 2331 234TEN HD:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:T 235RANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:514:0:1592 236TEN 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 2383 239Nine Digital:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QA 240M_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:513:660:10 24172 242Nine 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 244073 245Nine Guide:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_ 24664:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:514:670:1074 2477 Digital:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_6 2484:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1328 2497 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 2517 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 2537 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 2557 HD Digital:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QA 256M_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:833:834:133 2572 2587 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: 2601334 261SBS HD:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:T 262RANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:102:103:784 263SBS DIGITAL 1:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:Q 264AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:81:785 265SBS DIGITAL 2:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:Q 266AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:162:83:786 267SBS EPG:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64: 268TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:163:85:787 269SBS 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 271SBS 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 275Known 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 289Further 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