Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 77b2555b52a894a2e39a42e43d993df875c46a6a 304 lines 14 kB view raw
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