From 79a0122a3496f9276eb29e5e30afd9899473efc1 Mon Sep 17 00:00:00 2001 From: Johannes Stezenbach Date: Mon, 26 Jan 2004 11:59:36 +0000 Subject: rename HOWTO-get-a-new-card-running-avermedia to avermedia.txt --- .../dvb/HOWTO-get-a-new-card-running-avermedia | 449 --------------------- linux/Documentation/dvb/avermedia.txt | 449 +++++++++++++++++++++ 2 files changed, 449 insertions(+), 449 deletions(-) delete mode 100644 linux/Documentation/dvb/HOWTO-get-a-new-card-running-avermedia create mode 100644 linux/Documentation/dvb/avermedia.txt (limited to 'linux') diff --git a/linux/Documentation/dvb/HOWTO-get-a-new-card-running-avermedia b/linux/Documentation/dvb/HOWTO-get-a-new-card-running-avermedia deleted file mode 100644 index 050e72be8..000000000 --- a/linux/Documentation/dvb/HOWTO-get-a-new-card-running-avermedia +++ /dev/null @@ -1,449 +0,0 @@ -Hi all, - -Mark Edwards was so kind to describe the steps he did to get his (at this time -unsupported) Avermedia DVB-T card running. Since this is a nice introduction -to the DVB infrastructure I added the file to the LinuxDVB CVS repository. - -We hope it can help you to get your new unsupported card running or it's just -an interesting lecture if you are new to the DVB stuff and want to know how -things work together. - -The mentioned patches are now part of the LinuxDVB CVS, you don't have to apply -them again. - -have fun, - -Holger - - --------------------------------------------------------------------------------- - - -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 - Patching dvb-bt8xx - Known Limitations - -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 720x576 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. - _________________________________________________________ - -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. - - The Device Driver API for DVB under Linux exposes 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. - _________________________________________________________ - -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 - - Documentation for DVB/apps/scan indicates that it is necesary - to alter the initial.h file for the local transponders. I - didn't spend too much time trying to work out how scan worked, - so I recompiled a new version of scan for each transponder - listed above and piped the output to a 'channels.conf' file. - It was necessary to alter the initial.h file in the following - way: -static -struct transponder ofdm_probes [] = { - /** - * Australia ABC - */ - { - .type = FE_OFDM, - .param = { - .frequency = 226500000, - .inversion = INVERSION_OFF, - { ofdm: - { - .bandwidth = BANDWIDTH_7_MHZ, - .code_rate_HP = FEC_2_3, - .code_rate_LP = FEC_NONE, - .constellation = QAM_64, - .transmission_mode = TRANSMISSION_MODE_8K, - .guard_interval = GUARD_INTERVAL_1_8, - .hierarchy_information = HIERARCHY_NONE - } - } - } - }, - /** - * Australia TEN - */ - { - .type = FE_OFDM, - .param = { - .frequency = 219500000, - .inversion = INVERSION_OFF, - { ofdm: - { - .bandwidth = BANDWIDTH_7_MHZ, - .code_rate_HP = FEC_2_3, - .code_rate_LP = FEC_NONE, - .constellation = QAM_64, - .transmission_mode = TRANSMISSION_MODE_8K, - .guard_interval = GUARD_INTERVAL_1_8, - .hierarchy_information = HIERARCHY_NONE - } - } - } - }, - /** - * Australia NINE - */ - { - .type = FE_OFDM, - .param = { - .frequency = 191625000, - .inversion = INVERSION_OFF, - { ofdm: - { - .bandwidth = BANDWIDTH_7_MHZ, - .code_rate_HP = FEC_2_3, - .code_rate_LP = FEC_NONE, - .constellation = QAM_64, - .transmission_mode = TRANSMISSION_MODE_8K, - .guard_interval = GUARD_INTERVAL_1_8, - .hierarchy_information = HIERARCHY_NONE - } - } - } - }, - /** - * Australia SEVEN - */ - { - .type = FE_OFDM, - .param = { - .frequency = 177500000, - .inversion = INVERSION_OFF, - { ofdm: - { - .bandwidth = BANDWIDTH_7_MHZ, - .code_rate_HP = FEC_2_3, - .code_rate_LP = FEC_NONE, - .constellation = QAM_64, - .transmission_mode = TRANSMISSION_MODE_8K, - .guard_interval = GUARD_INTERVAL_1_8, - .hierarchy_information = HIERARCHY_NONE - } - } - } - }, - /** - * Australia SBS - */ - { - .type = FE_OFDM, - .param = { - .frequency = 536500000, - .inversion = INVERSION_OFF, - { ofdm: - { - .bandwidth = BANDWIDTH_7_MHZ, - .code_rate_HP = FEC_2_3, - .code_rate_LP = FEC_NONE, - .constellation = QAM_64, - .transmission_mode = TRANSMISSION_MODE_8K, - .guard_interval = GUARD_INTERVAL_1_8, - .hierarchy_information = HIERARCHY_NONE - } - } - } - }, -}; - - -#endif - - 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 - the first successful transponder. In Australia, where each - hannel has it's own transponder, it's necessary to then - comment out the last transponder that was scanned and - recompile scan. This is a dreadful kludge I know, but all I - want with scan is to be able to create a working channels.conf - file. Now I have a working channels.conf file, I don't need - scan any more. - - 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 - _________________________________________________________ - -Patching dvb-bt8xx - - The following patch to dvb-bt8xx is required to be applied - against the code prior to file date 5th September 2003. It may - have been applied to CVS by the time this HOWTO gets - published. -Index: dvb-bt8xx.c -=================================================================== -RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/bt8xx/dvb-bt8 -xx.c,v -retrieving revision 1.10 -diff -u -r1.10 dvb-bt8xx.c ---- dvb-bt8xx.c 15 Jul 2003 09:30:02 -0000 1.10 -+++ dvb-bt8xx.c 6 Sep 2003 02:06:20 -0000 -@@ -302,6 +302,14 @@ - case 0x01010071: - dvb_bt8xx_load(card_nr, "Nebula DigiTV -DVB-T", (1 << 26) | (1 << 14) | (1 << 5)); - break; -+ case 0x07611461: -+ dvb_bt8xx_load(card_nr, "Avermedia DVB- -T", (1 << 26) | (1 << 14) | (1 << 5)); -+ break; -+ default: -+ dprintk("dvb_bt8xx: card_nr found %0X \n",card_nr); -+ dprintk("dvb_bt8xx: card_id found %0X \n",card_id); -+ dprintk("dvb_bt8xx: card_type found %0X \n",card_type) -; -+ break;; - } - } - _________________________________________________________ - -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. - - So far, I have only been able to decode SDTV MPEG2 data - streams from ABC, Channel 7, Channel 9 and SBS. For some - reason, the HDTV and all Channel 10 streams cause xine to die - on me. I am pursuing this particular limitation at the moment. diff --git a/linux/Documentation/dvb/avermedia.txt b/linux/Documentation/dvb/avermedia.txt new file mode 100644 index 000000000..050e72be8 --- /dev/null +++ b/linux/Documentation/dvb/avermedia.txt @@ -0,0 +1,449 @@ +Hi all, + +Mark Edwards was so kind to describe the steps he did to get his (at this time +unsupported) Avermedia DVB-T card running. Since this is a nice introduction +to the DVB infrastructure I added the file to the LinuxDVB CVS repository. + +We hope it can help you to get your new unsupported card running or it's just +an interesting lecture if you are new to the DVB stuff and want to know how +things work together. + +The mentioned patches are now part of the LinuxDVB CVS, you don't have to apply +them again. + +have fun, + +Holger + + +-------------------------------------------------------------------------------- + + +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 + Patching dvb-bt8xx + Known Limitations + +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 720x576 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. + _________________________________________________________ + +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. + + The Device Driver API for DVB under Linux exposes 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. + _________________________________________________________ + +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 + + Documentation for DVB/apps/scan indicates that it is necesary + to alter the initial.h file for the local transponders. I + didn't spend too much time trying to work out how scan worked, + so I recompiled a new version of scan for each transponder + listed above and piped the output to a 'channels.conf' file. + It was necessary to alter the initial.h file in the following + way: +static +struct transponder ofdm_probes [] = { + /** + * Australia ABC + */ + { + .type = FE_OFDM, + .param = { + .frequency = 226500000, + .inversion = INVERSION_OFF, + { ofdm: + { + .bandwidth = BANDWIDTH_7_MHZ, + .code_rate_HP = FEC_2_3, + .code_rate_LP = FEC_NONE, + .constellation = QAM_64, + .transmission_mode = TRANSMISSION_MODE_8K, + .guard_interval = GUARD_INTERVAL_1_8, + .hierarchy_information = HIERARCHY_NONE + } + } + } + }, + /** + * Australia TEN + */ + { + .type = FE_OFDM, + .param = { + .frequency = 219500000, + .inversion = INVERSION_OFF, + { ofdm: + { + .bandwidth = BANDWIDTH_7_MHZ, + .code_rate_HP = FEC_2_3, + .code_rate_LP = FEC_NONE, + .constellation = QAM_64, + .transmission_mode = TRANSMISSION_MODE_8K, + .guard_interval = GUARD_INTERVAL_1_8, + .hierarchy_information = HIERARCHY_NONE + } + } + } + }, + /** + * Australia NINE + */ + { + .type = FE_OFDM, + .param = { + .frequency = 191625000, + .inversion = INVERSION_OFF, + { ofdm: + { + .bandwidth = BANDWIDTH_7_MHZ, + .code_rate_HP = FEC_2_3, + .code_rate_LP = FEC_NONE, + .constellation = QAM_64, + .transmission_mode = TRANSMISSION_MODE_8K, + .guard_interval = GUARD_INTERVAL_1_8, + .hierarchy_information = HIERARCHY_NONE + } + } + } + }, + /** + * Australia SEVEN + */ + { + .type = FE_OFDM, + .param = { + .frequency = 177500000, + .inversion = INVERSION_OFF, + { ofdm: + { + .bandwidth = BANDWIDTH_7_MHZ, + .code_rate_HP = FEC_2_3, + .code_rate_LP = FEC_NONE, + .constellation = QAM_64, + .transmission_mode = TRANSMISSION_MODE_8K, + .guard_interval = GUARD_INTERVAL_1_8, + .hierarchy_information = HIERARCHY_NONE + } + } + } + }, + /** + * Australia SBS + */ + { + .type = FE_OFDM, + .param = { + .frequency = 536500000, + .inversion = INVERSION_OFF, + { ofdm: + { + .bandwidth = BANDWIDTH_7_MHZ, + .code_rate_HP = FEC_2_3, + .code_rate_LP = FEC_NONE, + .constellation = QAM_64, + .transmission_mode = TRANSMISSION_MODE_8K, + .guard_interval = GUARD_INTERVAL_1_8, + .hierarchy_information = HIERARCHY_NONE + } + } + } + }, +}; + + +#endif + + 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 + the first successful transponder. In Australia, where each + hannel has it's own transponder, it's necessary to then + comment out the last transponder that was scanned and + recompile scan. This is a dreadful kludge I know, but all I + want with scan is to be able to create a working channels.conf + file. Now I have a working channels.conf file, I don't need + scan any more. + + 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 + _________________________________________________________ + +Patching dvb-bt8xx + + The following patch to dvb-bt8xx is required to be applied + against the code prior to file date 5th September 2003. It may + have been applied to CVS by the time this HOWTO gets + published. +Index: dvb-bt8xx.c +=================================================================== +RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/bt8xx/dvb-bt8 +xx.c,v +retrieving revision 1.10 +diff -u -r1.10 dvb-bt8xx.c +--- dvb-bt8xx.c 15 Jul 2003 09:30:02 -0000 1.10 ++++ dvb-bt8xx.c 6 Sep 2003 02:06:20 -0000 +@@ -302,6 +302,14 @@ + case 0x01010071: + dvb_bt8xx_load(card_nr, "Nebula DigiTV +DVB-T", (1 << 26) | (1 << 14) | (1 << 5)); + break; ++ case 0x07611461: ++ dvb_bt8xx_load(card_nr, "Avermedia DVB- +T", (1 << 26) | (1 << 14) | (1 << 5)); ++ break; ++ default: ++ dprintk("dvb_bt8xx: card_nr found %0X \n",card_nr); ++ dprintk("dvb_bt8xx: card_id found %0X \n",card_id); ++ dprintk("dvb_bt8xx: card_type found %0X \n",card_type) +; ++ break;; + } + } + _________________________________________________________ + +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. + + So far, I have only been able to decode SDTV MPEG2 data + streams from ABC, Channel 7, Channel 9 and SBS. For some + reason, the HDTV and all Channel 10 streams cause xine to die + on me. I am pursuing this particular limitation at the moment. -- cgit v1.2.3