
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.

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
