summaryrefslogtreecommitdiff
path: root/linux/Documentation/dvb/avermedia.txt
diff options
context:
space:
mode:
authorJohannes Stezenbach <devnull@localhost>2004-01-26 11:59:36 +0000
committerJohannes Stezenbach <devnull@localhost>2004-01-26 11:59:36 +0000
commit79a0122a3496f9276eb29e5e30afd9899473efc1 (patch)
treed8d51e6b77b1f762d9a99a6479fb9f3e157fca51 /linux/Documentation/dvb/avermedia.txt
parent822f5c874f99909a9e91e264ad0f71daf54ce01c (diff)
downloadmediapointer-dvb-s2-79a0122a3496f9276eb29e5e30afd9899473efc1.tar.gz
mediapointer-dvb-s2-79a0122a3496f9276eb29e5e30afd9899473efc1.tar.bz2
rename HOWTO-get-a-new-card-running-avermedia to avermedia.txt
Diffstat (limited to 'linux/Documentation/dvb/avermedia.txt')
-rw-r--r--linux/Documentation/dvb/avermedia.txt449
1 files changed, 449 insertions, 0 deletions
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.