[PATCH] savagefb: Fix kfree before use
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / Documentation / dvb / avermedia.txt
blob068070ff13cd0a4673d9333341b39ea5b77daf41
2 HOWTO: Get An Avermedia DVB-T working under Linux
3            ______________________________________________
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
13 Assumptions and Introduction
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.
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.
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:
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.
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.
56    The  purpose of a simple budget digital TV card (DVB-T,C or S)
57    is to simply:
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.
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      _________________________________________________________
75 The Avermedia DVB-T
77    The Avermedia DVB-T is a budget PCI DVB card. It has 3 inputs:
79      * RF Tuner Input
80      * Composite Video Input (RCA Jack)
81      * SVIDEO Input (Mini-DIN)
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.
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      _________________________________________________________
97 Getting the card going
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.
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:
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
117    The  primary  device  nodes that we are interested in (at this
118    stage) for the Avermedia DVB-T are:
120      * /dev/dvb/adapter0/dvr0
121      * /dev/dvb/adapter0/frontend0
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.
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.
137    To  power  up  the  card,  load  the  following modules in the
138    following order:
140      * insmod dvb-core.o
141      * modprobe bttv.o
142      * insmod bt878.o
143      * insmod dvb-bt8xx.o
144      * insmod sp887x.o
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.
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 or /lib/firmware/
154    (depending on configuration of firmware hotplug).
156 Receiving DVB-T in Australia
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.
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.
168    The frequencies broadcast by Mount Dandenong are:
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
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
185 # C Frequency SymbolRate FEC QAM
186 # S Frequency Polarisation SymbolRate FEC
187 # T Frequency Bandwidth FEC FEC2 QAM Mode Guard Hier
188 T 226500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
189 T 191625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
190 T 219500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
191 T 177500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
192 T 536500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
194    The   defaults   for   the  transponder  frequency  and  other
195    modulation parameters were obtained from www.dba.org.au.
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).
202    Here's my channels.conf file for anyone who's interested:
203 ABC 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
205 ABC TV Melbourne:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_
206 4:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:65
207 0:561
208 ABC 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
210 ABC 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
212 ABC 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
214 ABC DiG Radio:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:Q
215 AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:0:2311:56
217 TEN 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
220 TEN Digital 1:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q
221 AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1
223 TEN Digital 2:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q
224 AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1
226 TEN Digital 3:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q
227 AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1
229 TEN 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
232 TEN Digital 4:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q
233 AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1
235 TEN 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
238 TEN HD:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:T
239 RANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:514:0:1592
240 TEN 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
243 Nine Digital:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QA
244 M_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:513:660:10
246 Nine 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
249 Nine Guide:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_
250 64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:514:670:1074
251 7 Digital:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_6
252 4:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1328
253 7 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
255 7 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
257 7 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
259 7 HD Digital:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QA
260 M_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:833:834:133
262 7 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:
264 1334
265 SBS HD:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:T
266 RANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:102:103:784
267 SBS DIGITAL 1:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:Q
268 AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:81:785
269 SBS DIGITAL 2:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:Q
270 AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:162:83:786
271 SBS EPG:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:
272 TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:163:85:787
273 SBS 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
275 SBS 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      _________________________________________________________
279 Known Limitations
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.
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      _________________________________________________________
293 Further Update
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.
302    Many  thanks to Nigel Pearson for the updates to this document
303    since the recent revision of the driver.
305    January 29th 2004