
HOWTO: Get An Avermedia DVB-T working under Linux
	   ______________________________________________

   Table of Contents
   Assumptions and Introduction
   The Avermedia DVB-T
   Getting the card going
   Receiving DVB-T in Australia
   Known Limitations
   Further Update

Assumptions and Introduction

   It  is assumed that the reader understands the basic structure
   of  the Linux Kernel DVB drivers and the general principles of
   Digital TV.

   One  significant difference between Digital TV and Analogue TV
   that  the  unwary  (like  myself)  should  consider  is  that,
   although  the  component  structure  of budget DVB-T cards are
   substantially  similar  to Analogue TV cards, they function in
   substantially different ways.

   The  purpose  of  an  Analogue TV is to receive and display an
   Analogue  Television  signal. An Analogue TV signal (otherwise
   known  as  composite  video)  is  an  analogue  encoding  of a
   sequence  of  image frames (25 per second) rasterised using an
   interlacing   technique.   Interlacing  takes  two  fields  to
   represent  one  frame.  Computers today are at their best when
   dealing  with  digital  signals,  not  analogue  signals and a
   composite  video signal is about as far removed from a digital
   data stream as you can get. Therefore, an Analogue TV card for
   a PC has the following purpose:

     * Tune the receiver to receive a broadcast signal
     * demodulate the broadcast signal
     * demultiplex  the  analogue video signal and analogue audio
       signal  (note some countries employ a digital audio signal
       embedded  within the modulated composite analogue signal -
       NICAM.)
     * digitize  the analogue video signal and make the resulting
       datastream available to the data bus.

   The  digital  datastream from an Analogue TV card is generated
   by  circuitry on the card and is often presented uncompressed.
   For  a PAL TV signal encoded at a resolution of 768x576 24-bit
   color pixels over 25 frames per second - a fair amount of data
   is  generated and must be proceesed by the PC before it can be
   displayed  on the video monitor screen. Some Analogue TV cards
   for  PC's  have  onboard  MPEG2  encoders which permit the raw
   digital  data  stream  to be presented to the PC in an encoded
   and  compressed  form  -  similar  to the form that is used in
   Digital TV.

   The  purpose of a simple budget digital TV card (DVB-T,C or S)
   is to simply:

     * Tune the received to receive a broadcast signal.
     * Extract  the encoded digital datastream from the broadcast
       signal.
     * Make  the  encoded digital datastream (MPEG2) available to
       the data bus.

   The  significant  difference between the two is that the tuner
   on  the analogue TV card spits out an Analogue signal, whereas
   the  tuner  on  the  digital  TV  card  spits out a compressed
   encoded   digital   datastream.   As  the  signal  is  already
   digitised,  it  is  trivial  to pass this datastream to the PC
   databus  with  minimal  additional processing and then extract
   the  digital  video  and audio datastreams passing them to the
   appropriate software or hardware for decoding and viewing.
     _________________________________________________________

The Avermedia DVB-T

   The Avermedia DVB-T is a budget PCI DVB card. It has 3 inputs:

     * RF Tuner Input
     * Composite Video Input (RCA Jack)
     * SVIDEO Input (Mini-DIN)

   The  RF  Tuner  Input  is the input to the tuner module of the
   card.  The  Tuner  is  otherwise known as the "Frontend" . The
   Frontend of the Avermedia DVB-T is a Microtune 7202D. A timely
   post  to  the  linux-dvb  mailing  list  ascertained  that the
   Microtune  7202D  is  supported  by the sp887x driver which is
   found in the dvb-hw CVS module.

   The  DVB-T card is based around the BT878 chip which is a very
   common multimedia bridge and often found on Analogue TV cards.
   There is no on-board MPEG2 decoder, which means that all MPEG2
   decoding  must  be done in software, or if you have one, on an
   MPEG2 hardware decoding card or chipset.
     _________________________________________________________

Getting the card going

   In order to fire up the card, it is necessary to load a number
   of modules from the DVB driver set. Prior to this it will have
   been  necessary to download these drivers from the linuxtv CVS
   server and compile them successfully.

   Depending on the card's feature set, the Device Driver API for
   DVB under Linux will expose some of the following device files
   in the /dev tree:

     * /dev/dvb/adapter0/audio0
     * /dev/dvb/adapter0/ca0
     * /dev/dvb/adapter0/demux0
     * /dev/dvb/adapter0/dvr0
     * /dev/dvb/adapter0/frontend0
     * /dev/dvb/adapter0/net0
     * /dev/dvb/adapter0/osd0
     * /dev/dvb/adapter0/video0

   The  primary  device  nodes that we are interested in (at this
   stage) for the Avermedia DVB-T are:

     * /dev/dvb/adapter0/dvr0
     * /dev/dvb/adapter0/frontend0

   The dvr0 device node is used to read the MPEG2 Data Stream and
   the frontend0 node is used to tune the frontend tuner module.

   At  this  stage,  it  has  not  been  able  to  ascertain  the
   functionality  of the remaining device nodes in respect of the
   Avermedia  DVBT.  However,  full  functionality  in respect of
   tuning,  receiving  and  supplying  the  MPEG2  data stream is
   possible  with the currently available versions of the driver.
   It  may be possible that additional functionality is available
   from  the  card  (i.e.  viewing the additional analogue inputs
   that  the card presents), but this has not been tested yet. If
   I get around to this, I'll update the document with whatever I
   find.

   To  power  up  the  card,  load  the  following modules in the
   following order:

     * insmod dvb-core.o
     * modprobe bttv.o
     * insmod bt878.o
     * insmod dvb-bt8xx.o
     * insmod sp887x.o

   Insertion  of  these  modules  into  the  running  kernel will
   activate the appropriate DVB device nodes. It is then possible
   to start accessing the card with utilities such as scan, tzap,
   dvbstream etc.

   The frontend module sp887x.o, requires an external   firmware.
   Please use  the  command "get_dvb_firmware sp887x" to download
   it. Then copy it to /usr/lib/hotplug/firmware or /lib/firmware/
   (depending on configuration of firmware hotplug).

Receiving DVB-T in Australia

   I  have  no  experience of DVB-T in other countries other than
   Australia,  so  I will attempt to explain how it works here in
   Melbourne  and how this affects the configuration of the DVB-T
   card.

   The  Digital  Broadcasting  Australia  website has a Reception
   locatortool which provides information on transponder channels
   and  frequencies.  My  local  transmitter  happens to be Mount
   Dandenong.

   The frequencies broadcast by Mount Dandenong are:

   Table 1. Transponder Frequencies Mount Dandenong, Vic, Aus.
   Broadcaster Channel Frequency
   ABC         VHF 12  226.5 MHz
   TEN         VHF 11  219.5 MHz
   NINE        VHF 8   191.625 MHz
   SEVEN       VHF 6   177.5 MHz
   SBS         UHF 29  536.5 MHz

   The Scan utility has a set of compiled-in defaults for various
   countries and regions, but if they do not suit, or if you have
   a pre-compiled scan binary, you can specify a data file on the
   command  line which contains the transponder frequencies. Here
   is a sample file for the above channel transponders:
# Data file for DVB scan program
#
# C Frequency SymbolRate FEC QAM
# S Frequency Polarisation SymbolRate FEC
# T Frequency Bandwidth FEC FEC2 QAM Mode Guard Hier
T 226500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
T 191625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
T 219500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
T 177500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
T 536500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE

   The   defaults   for   the  transponder  frequency  and  other
   modulation parameters were obtained from www.dba.org.au.

   When  Scan  runs, it will output channels.conf information for
   any  channel's transponders which the card's frontend can lock
   onto.  (i.e.  any  whose  signal  is  strong  enough  at  your
   antenna).

   Here's my channels.conf file for anyone who's interested:
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
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:65
0:561
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
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
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
ABC DiG Radio:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:Q
AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:0:2311:56
6
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:158
5
TEN Digital 1:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q
AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1
586
TEN Digital 2:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q
AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1
587
TEN Digital 3:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q
AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1
588
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:158
9
TEN Digital 4:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:Q
AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1
590
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:159
1
TEN HD:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:T
RANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:514:0:1592
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:159
3
Nine Digital:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QA
M_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:513:660:10
72
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:1
073
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
7 Digital:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_6
4:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1328
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
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
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
7 HD Digital:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QA
M_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:833:834:133
2
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
SBS HD:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:T
RANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:102:103:784
SBS DIGITAL 1:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:Q
AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:81:785
SBS DIGITAL 2:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:Q
AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:162:83:786
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
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
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
     _________________________________________________________

Known Limitations

   At  present  I can say with confidence that the frontend tunes
   via /dev/dvb/adapter{x}/frontend0 and supplies an MPEG2 stream
   via   /dev/dvb/adapter{x}/dvr0.   I   have   not   tested  the
   functionality  of any other part of the card yet. I will do so
   over time and update this document.

   There  are some limitations in the i2c layer due to a returned
   error message inconsistency. Although this generates errors in
   dmesg  and  the  system logs, it does not appear to affect the
   ability of the frontend to function correctly.
     _________________________________________________________

Further Update

   dvbstream  and  VideoLAN  Client on windows works a treat with
   DVB,  in  fact  this  is  currently  serving as my main way of
   viewing  DVB-T  at  the  moment.  Additionally, VLC is happily
   decoding  HDTV  signals,  although  the PC is dropping the odd
   frame here and there - I assume due to processing capability -
   as all the decoding is being done under windows in software.

   Many  thanks to Nigel Pearson for the updates to this document
   since the recent revision of the driver.

   January 29th 2004
