| HOWTO: Get An Avermedia DVB-T working under Linux | |
| ------------------------------------------------- | |
| February 14th 2006 | |
| .. note:: | |
| This documentation is outdated. Please check at the DVB wiki | |
| at https://linuxtv.org/wiki for more updated info. | |
| There's a section there specific for Avermedia boards at: | |
| https://linuxtv.org/wiki/index.php/AVerMedia | |
| 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 processed by the PC before it can be | |
| displayed on the video monitor screen. Some Analogue TV cards | |
| for PCs 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: | |
| * modprobe bttv (normally loaded automatically) | |
| * modprobe dvb-bt8xx (or place dvb-bt8xx in /etc/modules) | |
| 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:650: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:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:0:2311:566 | |
| 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:1585 | |
| TEN Digital 1: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:1586 | |
| TEN Digital 2: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:1587 | |
| TEN Digital 3: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:1588 | |
| 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:1589 | |
| TEN Digital 4: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:1590 | |
| 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:1591 | |
| TEN HD:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_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:1593 | |
| Nine Digital:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:513:660:1072 | |
| 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:1073 | |
| 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_64: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:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:833:834:1332 | |
| 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:TRANSMISSION_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:QAM_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:QAM_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. |