Creation of Cybook 2416 (actually Gen4) repository
This commit is contained in:
232
Documentation/dvb/README.dvb-usb
Normal file
232
Documentation/dvb/README.dvb-usb
Normal file
@@ -0,0 +1,232 @@
|
||||
Documentation for dvb-usb-framework module and its devices
|
||||
|
||||
Idea behind the dvb-usb-framework
|
||||
=================================
|
||||
|
||||
In March 2005 I got the new Twinhan USB2.0 DVB-T device. They provided specs and a firmware.
|
||||
|
||||
Quite keen I wanted to put the driver (with some quirks of course) into dibusb.
|
||||
After reading some specs and doing some USB snooping, it realized, that the
|
||||
dibusb-driver would be a complete mess afterwards. So I decided to do it in a
|
||||
different way: With the help of a dvb-usb-framework.
|
||||
|
||||
The framework provides generic functions (mostly kernel API calls), such as:
|
||||
|
||||
- Transport Stream URB handling in conjunction with dvb-demux-feed-control
|
||||
(bulk and isoc are supported)
|
||||
- registering the device for the DVB-API
|
||||
- registering an I2C-adapter if applicable
|
||||
- remote-control/input-device handling
|
||||
- firmware requesting and loading (currently just for the Cypress USB
|
||||
controllers)
|
||||
- other functions/methods which can be shared by several drivers (such as
|
||||
functions for bulk-control-commands)
|
||||
- TODO: a I2C-chunker. It creates device-specific chunks of register-accesses
|
||||
depending on length of a register and the number of values that can be
|
||||
multi-written and multi-read.
|
||||
|
||||
The source code of the particular DVB USB devices does just the communication
|
||||
with the device via the bus. The connection between the DVB-API-functionality
|
||||
is done via callbacks, assigned in a static device-description (struct
|
||||
dvb_usb_device) each device-driver has to have.
|
||||
|
||||
For an example have a look in drivers/media/dvb/dvb-usb/vp7045*.
|
||||
|
||||
Objective is to migrate all the usb-devices (dibusb, cinergyT2, maybe the
|
||||
ttusb; flexcop-usb already benefits from the generic flexcop-device) to use
|
||||
the dvb-usb-lib.
|
||||
|
||||
TODO: dynamic enabling and disabling of the pid-filter in regard to number of
|
||||
feeds requested.
|
||||
|
||||
Supported devices
|
||||
========================
|
||||
|
||||
See the LinuxTV DVB Wiki at www.linuxtv.org for a complete list of
|
||||
cards/drivers/firmwares:
|
||||
|
||||
http://www.linuxtv.org/wiki/index.php/DVB_USB
|
||||
|
||||
0. History & News:
|
||||
2005-06-30 - added support for WideView WT-220U (Thanks to Steve Chang)
|
||||
2005-05-30 - added basic isochronous support to the dvb-usb-framework
|
||||
added support for Conexant Hybrid reference design and Nebula DigiTV USB
|
||||
2005-04-17 - all dibusb devices ported to make use of the dvb-usb-framework
|
||||
2005-04-02 - re-enabled and improved remote control code.
|
||||
2005-03-31 - ported the Yakumo/Hama/Typhoon DVB-T USB2.0 device to dvb-usb.
|
||||
2005-03-30 - first commit of the dvb-usb-module based on the dibusb-source. First device is a new driver for the
|
||||
TwinhanDTV Alpha / MagicBox II USB2.0-only DVB-T device.
|
||||
|
||||
(change from dvb-dibusb to dvb-usb)
|
||||
2005-03-28 - added support for the AVerMedia AverTV DVB-T USB2.0 device (Thanks to Glen Harris and Jiun-Kuei Jung, AVerMedia)
|
||||
2005-03-14 - added support for the Typhoon/Yakumo/HAMA DVB-T mobile USB2.0
|
||||
2005-02-11 - added support for the KWorld/ADSTech Instant DVB-T USB2.0. Thanks a lot to Joachim von Caron
|
||||
2005-02-02 - added support for the Hauppauge Win-TV Nova-T USB2
|
||||
2005-01-31 - distorted streaming is gone for USB1.1 devices
|
||||
2005-01-13 - moved the mirrored pid_filter_table back to dvb-dibusb
|
||||
- first almost working version for HanfTek UMT-010
|
||||
- found out, that Yakumo/HAMA/Typhoon are predecessors of the HanfTek UMT-010
|
||||
2005-01-10 - refactoring completed, now everything is very delightful
|
||||
- tuner quirks for some weird devices (Artec T1 AN2235 device has sometimes a
|
||||
Panasonic Tuner assembled). Tunerprobing implemented. Thanks a lot to Gunnar Wittich.
|
||||
2004-12-29 - after several days of struggling around bug of no returning URBs fixed.
|
||||
2004-12-26 - refactored the dibusb-driver, splitted into separate files
|
||||
- i2c-probing enabled
|
||||
2004-12-06 - possibility for demod i2c-address probing
|
||||
- new usb IDs (Compro, Artec)
|
||||
2004-11-23 - merged changes from DiB3000MC_ver2.1
|
||||
- revised the debugging
|
||||
- possibility to deliver the complete TS for USB2.0
|
||||
2004-11-21 - first working version of the dib3000mc/p frontend driver.
|
||||
2004-11-12 - added additional remote control keys. Thanks to Uwe Hanke.
|
||||
2004-11-07 - added remote control support. Thanks to David Matthews.
|
||||
2004-11-05 - added support for a new devices (Grandtec/Avermedia/Artec)
|
||||
- merged my changes (for dib3000mb/dibusb) to the FE_REFACTORING, because it became HEAD
|
||||
- moved transfer control (pid filter, fifo control) from usb driver to frontend, it seems
|
||||
better settled there (added xfer_ops-struct)
|
||||
- created a common files for frontends (mc/p/mb)
|
||||
2004-09-28 - added support for a new device (Unkown, vendor ID is Hyper-Paltek)
|
||||
2004-09-20 - added support for a new device (Compro DVB-U2000), thanks
|
||||
to Amaury Demol for reporting
|
||||
- changed usb TS transfer method (several urbs, stopping transfer
|
||||
before setting a new pid)
|
||||
2004-09-13 - added support for a new device (Artec T1 USB TVBOX), thanks
|
||||
to Christian Motschke for reporting
|
||||
2004-09-05 - released the dibusb device and dib3000mb-frontend driver
|
||||
|
||||
(old news for vp7041.c)
|
||||
2004-07-15 - found out, by accident, that the device has a TUA6010XS for
|
||||
PLL
|
||||
2004-07-12 - figured out, that the driver should also work with the
|
||||
CTS Portable (Chinese Television System)
|
||||
2004-07-08 - firmware-extraction-2.422-problem solved, driver is now working
|
||||
properly with firmware extracted from 2.422
|
||||
- #if for 2.6.4 (dvb), compile issue
|
||||
- changed firmware handling, see vp7041.txt sec 1.1
|
||||
2004-07-02 - some tuner modifications, v0.1, cleanups, first public
|
||||
2004-06-28 - now using the dvb_dmx_swfilter_packets, everything
|
||||
runs fine now
|
||||
2004-06-27 - able to watch and switching channels (pre-alpha)
|
||||
- no section filtering yet
|
||||
2004-06-06 - first TS received, but kernel oops :/
|
||||
2004-05-14 - firmware loader is working
|
||||
2004-05-11 - start writing the driver
|
||||
|
||||
1. How to use?
|
||||
1.1. Firmware
|
||||
|
||||
Most of the USB drivers need to download a firmware to the device before start
|
||||
working.
|
||||
|
||||
Have a look at the Wikipage for the DVB-USB-drivers to find out, which firmware
|
||||
you need for your device:
|
||||
|
||||
http://www.linuxtv.org/wiki/index.php/DVB_USB
|
||||
|
||||
1.2. Compiling
|
||||
|
||||
Since the driver is in the linux kernel, activating the driver in
|
||||
your favorite config-environment should sufficient. I recommend
|
||||
to compile the driver as module. Hotplug does the rest.
|
||||
|
||||
If you use dvb-kernel enter the build-2.6 directory run 'make' and 'insmod.sh
|
||||
load' afterwards.
|
||||
|
||||
1.3. Loading the drivers
|
||||
|
||||
Hotplug is able to load the driver, when it is needed (because you plugged
|
||||
in the device).
|
||||
|
||||
If you want to enable debug output, you have to load the driver manually and
|
||||
from withing the dvb-kernel cvs repository.
|
||||
|
||||
first have a look, which debug level are available:
|
||||
|
||||
modinfo dvb-usb
|
||||
modinfo dvb-usb-vp7045
|
||||
etc.
|
||||
|
||||
modprobe dvb-usb debug=<level>
|
||||
modprobe dvb-usb-vp7045 debug=<level>
|
||||
etc.
|
||||
|
||||
should do the trick.
|
||||
|
||||
When the driver is loaded successfully, the firmware file was in
|
||||
the right place and the device is connected, the "Power"-LED should be
|
||||
turned on.
|
||||
|
||||
At this point you should be able to start a dvb-capable application. I'm use
|
||||
(t|s)zap, mplayer and dvbscan to test the basics. VDR-xine provides the
|
||||
long-term test scenario.
|
||||
|
||||
2. Known problems and bugs
|
||||
|
||||
- Don't remove the USB device while running an DVB application, your system
|
||||
will go crazy or die most likely.
|
||||
|
||||
2.1. Adding support for devices
|
||||
|
||||
TODO
|
||||
|
||||
2.2. USB1.1 Bandwidth limitation
|
||||
|
||||
A lot of the currently supported devices are USB1.1 and thus they have a
|
||||
maximum bandwidth of about 5-6 MBit/s when connected to a USB2.0 hub.
|
||||
This is not enough for receiving the complete transport stream of a
|
||||
DVB-T channel (which is about 16 MBit/s). Normally this is not a
|
||||
problem, if you only want to watch TV (this does not apply for HDTV),
|
||||
but watching a channel while recording another channel on the same
|
||||
frequency simply does not work very well. This applies to all USB1.1
|
||||
DVB-T devices, not just the dvb-usb-devices)
|
||||
|
||||
The bug, where the TS is distorted by a heavy usage of the device is gone
|
||||
definitely. All dvb-usb-devices I was using (Twinhan, Kworld, DiBcom) are
|
||||
working like charm now with VDR. Sometimes I even was able to record a channel
|
||||
and watch another one.
|
||||
|
||||
2.3. Comments
|
||||
|
||||
Patches, comments and suggestions are very very welcome.
|
||||
|
||||
3. Acknowledgements
|
||||
Amaury Demol (ademol@dibcom.fr) and Francois Kanounnikoff from DiBcom for
|
||||
providing specs, code and help, on which the dvb-dibusb, dib3000mb and
|
||||
dib3000mc are based.
|
||||
|
||||
David Matthews for identifying a new device type (Artec T1 with AN2235)
|
||||
and for extending dibusb with remote control event handling. Thank you.
|
||||
|
||||
Alex Woods for frequently answering question about usb and dvb
|
||||
stuff, a big thank you.
|
||||
|
||||
Bernd Wagner for helping with huge bug reports and discussions.
|
||||
|
||||
Gunnar Wittich and Joachim von Caron for their trust for providing
|
||||
root-shells on their machines to implement support for new devices.
|
||||
|
||||
Allan Third and Michael Hutchinson for their help to write the Nebula
|
||||
digitv-driver.
|
||||
|
||||
Glen Harris for bringing up, that there is a new dibusb-device and Jiun-Kuei
|
||||
Jung from AVerMedia who kindly provided a special firmware to get the device
|
||||
up and running in Linux.
|
||||
|
||||
Jennifer Chen, Jeff and Jack from Twinhan for kindly supporting by
|
||||
writing the vp7045-driver.
|
||||
|
||||
Steve Chang from WideView for providing information for new devices and
|
||||
firmware files.
|
||||
|
||||
Michael Paxton for submitting remote control keymaps.
|
||||
|
||||
Some guys on the linux-dvb mailing list for encouraging me.
|
||||
|
||||
Peter Schildmann >peter.schildmann-nospam-at-web.de< for his
|
||||
user-level firmware loader, which saves a lot of time
|
||||
(when writing the vp7041 driver)
|
||||
|
||||
Ulf Hermenau for helping me out with traditional chinese.
|
||||
|
||||
Andr<64> Smoktun and Christian Fr<46>mmel for supporting me with
|
||||
hardware and listening to my problems very patiently.
|
||||
205
Documentation/dvb/README.flexcop
Normal file
205
Documentation/dvb/README.flexcop
Normal file
@@ -0,0 +1,205 @@
|
||||
This README escorted the skystar2-driver rewriting procedure. It describes the
|
||||
state of the new flexcop-driver set and some internals are written down here
|
||||
too.
|
||||
|
||||
This document hopefully describes things about the flexcop and its
|
||||
device-offsprings. Goal was to write an easy-to-write and easy-to-read set of
|
||||
drivers based on the skystar2.c and other information.
|
||||
|
||||
Remark: flexcop-pci.c was a copy of skystar2.c, but every line has been
|
||||
touched and rewritten.
|
||||
|
||||
History & News
|
||||
==============
|
||||
2005-04-01 - correct USB ISOC transfers (thanks to Vadim Catana)
|
||||
|
||||
|
||||
|
||||
|
||||
General coding processing
|
||||
=========================
|
||||
|
||||
We should proceed as follows (as long as no one complains):
|
||||
|
||||
0) Think before start writing code!
|
||||
|
||||
1) rewriting the skystar2.c with the help of the flexcop register descriptions
|
||||
and splitting up the files to a pci-bus-part and a flexcop-part.
|
||||
The new driver will be called b2c2-flexcop-pci.ko/b2c2-flexcop-usb.ko for the
|
||||
device-specific part and b2c2-flexcop.ko for the common flexcop-functions.
|
||||
|
||||
2) Search for errors in the leftover of flexcop-pci.c (compare with pluto2.c
|
||||
and other pci drivers)
|
||||
|
||||
3) make some beautification (see 'Improvements when rewriting (refactoring) is
|
||||
done')
|
||||
|
||||
4) Testing the new driver and maybe substitute the skystar2.c with it, to reach
|
||||
a wider tester audience.
|
||||
|
||||
5) creating an usb-bus-part using the already written flexcop code for the pci
|
||||
card.
|
||||
|
||||
Idea: create a kernel-object for the flexcop and export all important
|
||||
functions. This option saves kernel-memory, but maybe a lot of functions have
|
||||
to be exported to kernel namespace.
|
||||
|
||||
|
||||
Current situation
|
||||
=================
|
||||
|
||||
0) Done :)
|
||||
1) Done (some minor issues left)
|
||||
2) Done
|
||||
3) Not ready yet, more information is necessary
|
||||
4) next to be done (see the table below)
|
||||
5) USB driver is working (yes, there are some minor issues)
|
||||
|
||||
What seems to be ready?
|
||||
-----------------------
|
||||
|
||||
1) Rewriting
|
||||
1a) i2c is cut off from the flexcop-pci.c and seems to work
|
||||
1b) moved tuner and demod stuff from flexcop-pci.c to flexcop-tuner-fe.c
|
||||
1c) moved lnb and diseqc stuff from flexcop-pci.c to flexcop-tuner-fe.c
|
||||
1e) eeprom (reading MAC address)
|
||||
1d) sram (no dynamic sll size detection (commented out) (using default as JJ told me))
|
||||
1f) misc. register accesses for reading parameters (e.g. resetting, revision)
|
||||
1g) pid/mac filter (flexcop-hw-filter.c)
|
||||
1i) dvb-stuff initialization in flexcop.c (done)
|
||||
1h) dma stuff (now just using the size-irq, instead of all-together, to be done)
|
||||
1j) remove flexcop initialization from flexcop-pci.c completely (done)
|
||||
1l) use a well working dma IRQ method (done, see 'Known bugs and problems and TODO')
|
||||
1k) cleanup flexcop-files (remove unused EXPORT_SYMBOLs, make static from
|
||||
non-static where possible, moved code to proper places)
|
||||
|
||||
2) Search for errors in the leftover of flexcop-pci.c (partially done)
|
||||
5a) add MAC address reading
|
||||
5c) feeding of ISOC data to the software demux (format of the isochronous data
|
||||
and speed optimization, no real error) (thanks to Vadim Catana)
|
||||
|
||||
What to do in the near future?
|
||||
--------------------------------------
|
||||
(no special order here)
|
||||
|
||||
5) USB driver
|
||||
5b) optimize isoc-transfer (submitting/killing isoc URBs when transfer is starting)
|
||||
|
||||
Testing changes
|
||||
---------------
|
||||
|
||||
O = item is working
|
||||
P = item is partially working
|
||||
X = item is not working
|
||||
N = item does not apply here
|
||||
<empty field> = item need to be examined
|
||||
|
||||
| PCI | USB
|
||||
item | mt352 | nxt2002 | stv0299 | mt312 | mt352 | nxt2002 | stv0299 | mt312
|
||||
-------+-------+---------+---------+-------+-------+---------+---------+-------
|
||||
1a) | O | | | | N | N | N | N
|
||||
1b) | O | | | | | | O |
|
||||
1c) | N | N | | | N | N | O |
|
||||
1d) | O | O
|
||||
1e) | O | O
|
||||
1f) | P
|
||||
1g) | O
|
||||
1h) | P |
|
||||
1i) | O | N
|
||||
1j) | O | N
|
||||
1l) | O | N
|
||||
2) | O | N
|
||||
5a) | N | O
|
||||
5b)* | N |
|
||||
5c) | N | O
|
||||
|
||||
* - not done yet
|
||||
|
||||
Known bugs and problems and TODO
|
||||
--------------------------------
|
||||
|
||||
1g/h/l) when pid filtering is enabled on the pci card
|
||||
|
||||
DMA usage currently:
|
||||
The DMA is splitted in 2 equal-sized subbuffers. The Flexcop writes to first
|
||||
address and triggers an IRQ when it's full and starts writing to the second
|
||||
address. When the second address is full, the IRQ is triggered again, and
|
||||
the flexcop writes to first address again, and so on.
|
||||
The buffersize of each address is currently 640*188 bytes.
|
||||
|
||||
Problem is, when using hw-pid-filtering and doing some low-bandwidth
|
||||
operation (like scanning) the buffers won't be filled enough to trigger
|
||||
the IRQ. That's why:
|
||||
|
||||
When PID filtering is activated, the timer IRQ is used. Every 1.97 ms the IRQ
|
||||
is triggered. Is the current write address of DMA1 different to the one
|
||||
during the last IRQ, then the data is passed to the demuxer.
|
||||
|
||||
There is an additional DMA-IRQ-method: packet count IRQ. This isn't
|
||||
implemented correctly yet.
|
||||
|
||||
The solution is to disable HW PID filtering, but I don't know how the DVB
|
||||
API software demux behaves on slow systems with 45MBit/s TS.
|
||||
|
||||
Solved bugs :)
|
||||
--------------
|
||||
1g) pid-filtering (somehow pid index 4 and 5 (EMM_PID and ECM_PID) aren't
|
||||
working)
|
||||
SOLUTION: also index 0 was affected, because net_translation is done for
|
||||
these indexes by default
|
||||
|
||||
5b) isochronous transfer does only work in the first attempt (for the Sky2PC
|
||||
USB, Air2PC is working) SOLUTION: the flexcop was going asleep and never really
|
||||
woke up again (don't know if this need fixes, see
|
||||
flexcop-fe-tuner.c:flexcop_sleep)
|
||||
|
||||
NEWS: when the driver is loaded and unloaded and loaded again (w/o doing
|
||||
anything in the while the driver is loaded the first time), no transfers take
|
||||
place anymore.
|
||||
|
||||
Improvements when rewriting (refactoring) is done
|
||||
=================================================
|
||||
|
||||
- split sleeping of the flexcop (misc_204.ACPI3_sig = 1;) from lnb_control
|
||||
(enable sleeping for other demods than dvb-s)
|
||||
- add support for CableStar (stv0297 Microtune 203x/ALPS) (almost done, incompatibilities with the Nexus-CA)
|
||||
|
||||
Debugging
|
||||
---------
|
||||
- add verbose debugging to skystar2.c (dump the reg_dw_data) and compare it
|
||||
with this flexcop, this is important, because i2c is now using the
|
||||
flexcop_ibi_value union from flexcop-reg.h (do you have a better idea for
|
||||
that, please tell us so).
|
||||
|
||||
Everything which is identical in the following table, can be put into a common
|
||||
flexcop-module.
|
||||
|
||||
PCI USB
|
||||
-------------------------------------------------------------------------------
|
||||
Different:
|
||||
Register access: accessing IO memory USB control message
|
||||
I2C bus: I2C bus of the FC USB control message
|
||||
Data transfer: DMA isochronous transfer
|
||||
EEPROM transfer: through i2c bus not clear yet
|
||||
|
||||
Identical:
|
||||
Streaming: accessing registers
|
||||
PID Filtering: accessing registers
|
||||
Sram destinations: accessing registers
|
||||
Tuner/Demod: I2C bus
|
||||
DVB-stuff: can be written for common use
|
||||
|
||||
Acknowledgements (just for the rewriting part)
|
||||
================
|
||||
|
||||
Bjarne Steinsbo thought a lot in the first place of the pci part for this code
|
||||
sharing idea.
|
||||
|
||||
Andreas Oberritter for providing a recent PCI initialization template
|
||||
(pluto2.c).
|
||||
|
||||
Boleslaw Ciesielski for pointing out a problem with firmware loader.
|
||||
|
||||
Vadim Catana for correcting the USB transfer.
|
||||
|
||||
comments, critics and ideas to linux-dvb@linuxtv.org.
|
||||
301
Documentation/dvb/avermedia.txt
Normal file
301
Documentation/dvb/avermedia.txt
Normal file
@@ -0,0 +1,301 @@
|
||||
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 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: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.
|
||||
|
||||
February 14th 2006
|
||||
78
Documentation/dvb/bt8xx.txt
Normal file
78
Documentation/dvb/bt8xx.txt
Normal file
@@ -0,0 +1,78 @@
|
||||
How to get the bt8xx cards working
|
||||
==================================
|
||||
|
||||
1) General information
|
||||
======================
|
||||
|
||||
This class of cards has a bt878a as the PCI interface, and require the bttv driver
|
||||
for accessing the i2c bus and the gpio pins of the bt8xx chipset.
|
||||
Please see Documentation/dvb/cards.txt => o Cards based on the Conexant Bt8xx PCI bridge:
|
||||
|
||||
Compiling kernel please enable:
|
||||
a.)"Device drivers" => "Multimedia devices" => "Video For Linux" => "BT848 Video For Linux"
|
||||
b.)"Device drivers" => "Multimedia devices" => "Digital Video Broadcasting Devices"
|
||||
=> "DVB for Linux" "DVB Core Support" "Bt8xx based PCI Cards"
|
||||
|
||||
2) Loading Modules
|
||||
==================
|
||||
|
||||
In default cases bttv is loaded automatically.
|
||||
To load the backend either place dvb-bt8xx in etc/modules, or apply manually:
|
||||
|
||||
$ modprobe dvb-bt8xx
|
||||
|
||||
All frontends will be loaded automatically.
|
||||
People running udev please see Documentation/dvb/udev.txt.
|
||||
|
||||
In the following cases overriding the PCI type detection for dvb-bt8xx might be necessary:
|
||||
|
||||
2a) Running TwinHan and Clones
|
||||
------------------------------
|
||||
|
||||
$ modprobe bttv card=113
|
||||
$ modprobe dvb-bt8xx
|
||||
$ modprobe dst
|
||||
|
||||
Useful parameters for verbosity level and debugging the dst module:
|
||||
|
||||
verbose=0: messages are disabled
|
||||
1: only error messages are displayed
|
||||
2: notifications are displayed
|
||||
3: other useful messages are displayed
|
||||
4: debug setting
|
||||
dst_addons=0: card is a free to air (FTA) card only
|
||||
0x20: card has a conditional access slot for scrambled channels
|
||||
|
||||
The autodetected values are determined by the cards' "response string".
|
||||
In your logs see f. ex.: dst_get_device_id: Recognize [DSTMCI].
|
||||
For bug reports please send in a complete log with verbose=4 activated.
|
||||
Please also see Documentation/dvb/ci.txt.
|
||||
|
||||
2b) Running multiple cards
|
||||
--------------------------
|
||||
|
||||
Examples of card ID's:
|
||||
|
||||
Pinnacle PCTV Sat: 94
|
||||
Nebula Electronics Digi TV: 104
|
||||
pcHDTV HD-2000 TV: 112
|
||||
Twinhan DST and clones: 113
|
||||
Avermedia AverTV DVB-T 771: 123
|
||||
Avermedia AverTV DVB-T 761: 124
|
||||
DViCO FusionHDTV DVB-T Lite: 128
|
||||
DViCO FusionHDTV 5 Lite: 135
|
||||
|
||||
Notice: The order of the card ID should be uprising:
|
||||
Example:
|
||||
$ modprobe bttv card=113 card=135
|
||||
$ modprobe dvb-bt8xx
|
||||
|
||||
For a full list of card ID's please see Documentation/video4linux/CARDLIST.bttv.
|
||||
In case of further problems send questions to the mailing list: www.linuxdvb.org.
|
||||
|
||||
Authors: Richard Walker,
|
||||
Jamie Honan,
|
||||
Michael Hunold,
|
||||
Manu Abraham,
|
||||
Uwe Bugla,
|
||||
Michael Krufky
|
||||
122
Documentation/dvb/cards.txt
Normal file
122
Documentation/dvb/cards.txt
Normal file
@@ -0,0 +1,122 @@
|
||||
Hardware supported by the linuxtv.org DVB drivers
|
||||
=================================================
|
||||
|
||||
Generally, the DVB hardware manufacturers frequently change the
|
||||
frontends (i.e. tuner / demodulator units) used, usually without
|
||||
changing the product name, revision number or specs. Some cards
|
||||
are also available in versions with different frontends for
|
||||
DVB-S/DVB-C/DVB-T. Thus the frontend drivers are listed separately.
|
||||
|
||||
Note 1: There is no guarantee that every frontend driver works
|
||||
out of the box with every card, because of different wiring.
|
||||
|
||||
Note 2: The demodulator chips can be used with a variety of
|
||||
tuner/PLL chips, and not all combinations are supported. Often
|
||||
the demodulator and tuner/PLL chip are inside a metal box for
|
||||
shielding, and the whole metal box has its own part number.
|
||||
|
||||
|
||||
o Frontends drivers:
|
||||
- dvb_dummy_fe: for testing...
|
||||
DVB-S:
|
||||
- ves1x93 : Alps BSRV2 (ves1893 demodulator) and dbox2 (ves1993)
|
||||
- cx24110 : Conexant HM1221/HM1811 (cx24110 or cx24106 demod, cx24108 PLL)
|
||||
- grundig_29504-491 : Grundig 29504-491 (Philips TDA8083 demodulator), tsa5522 PLL
|
||||
- mt312 : Zarlink mt312 or Mitel vp310 demodulator, sl1935 or tsa5059 PLLi, Technisat Sky2Pc with bios Rev. 2.3
|
||||
- stv0299 : Alps BSRU6 (tsa5059 PLL), LG TDQB-S00x (tsa5059 PLL),
|
||||
LG TDQF-S001F (sl1935 PLL), Philips SU1278 (tua6100 PLL),
|
||||
Philips SU1278SH (tsa5059 PLL), Samsung TBMU24112IMB, Technisat Sky2Pc with bios Rev. 2.6
|
||||
DVB-C:
|
||||
- ves1820 : various (ves1820 demodulator, sp5659c or spXXXX PLL)
|
||||
- at76c651 : Atmel AT76c651(B) with DAT7021 PLL
|
||||
DVB-T:
|
||||
- alps_tdlb7 : Alps TDLB7 (sp8870 demodulator, sp5659 PLL)
|
||||
- alps_tdmb7 : Alps TDMB7 (cx22700 demodulator)
|
||||
- grundig_29504-401 : Grundig 29504-401 (LSI L64781 demodulator), tsa5060 PLL
|
||||
- tda1004x : Philips tda10045h (td1344 or tdm1316l PLL)
|
||||
- nxt6000 : Alps TDME7 (MITEL SP5659 PLL), Alps TDED4 (TI ALP510 PLL),
|
||||
Comtech DVBT-6k07 (SP5730 PLL)
|
||||
(NxtWave Communications NXT6000 demodulator)
|
||||
- sp887x : Microtune 7202D
|
||||
- dib3000mb : DiBcom 3000-MB demodulator
|
||||
DVB-S/C/T:
|
||||
- dst : TwinHan DST Frontend
|
||||
ATSC:
|
||||
- nxt200x : Nxtwave NXT2002 & NXT2004
|
||||
- or51211 : or51211 based (pcHDTV HD2000 card)
|
||||
- or51132 : or51132 based (pcHDTV HD3000 card)
|
||||
- bcm3510 : Broadcom BCM3510
|
||||
- lgdt330x : LG Electronics DT3302 & DT3303
|
||||
|
||||
|
||||
o Cards based on the Phillips saa7146 multimedia PCI bridge chip:
|
||||
- TI AV7110 based cards (i.e. with hardware MPEG decoder):
|
||||
- Siemens/Technotrend/Hauppauge PCI DVB card revision 1.1, 1.3, 1.5, 1.6, 2.1
|
||||
(aka Hauppauge Nexus)
|
||||
- "budget" cards (i.e. without hardware MPEG decoder):
|
||||
- Technotrend Budget / Hauppauge WinTV-Nova PCI Cards
|
||||
- SATELCO Multimedia PCI
|
||||
- KNC1 DVB-S, Typhoon DVB-S, Terratec Cinergy 1200 DVB-S (no CI support)
|
||||
- Typhoon DVB-S budget
|
||||
- Fujitsu-Siemens Activy DVB-S budget card
|
||||
|
||||
o Cards based on the B2C2 Inc. FlexCopII/IIb/III:
|
||||
- Technisat SkyStar2 PCI DVB card revision 2.3, 2.6B, 2.6C
|
||||
|
||||
o Cards based on the Conexant Bt8xx PCI bridge:
|
||||
- Pinnacle PCTV Sat DVB
|
||||
- Nebula Electronics DigiTV
|
||||
- TwinHan DST
|
||||
- Avermedia DVB-T
|
||||
- ChainTech digitop DST-1000 DVB-S
|
||||
- pcHDTV HD-2000 TV
|
||||
- DViCO FusionHDTV DVB-T Lite
|
||||
- DViCO FusionHDTV5 Lite
|
||||
|
||||
o Technotrend / Hauppauge DVB USB devices:
|
||||
- Nova USB
|
||||
- DEC 2000-T, 3000-S, 2540-T
|
||||
|
||||
o DiBcom DVB-T USB based devices:
|
||||
- Twinhan VisionPlus VisionDTV USB-Ter DVB-T Device
|
||||
- HAMA DVB-T USB device
|
||||
- CTS Portable (Chinese Television System)
|
||||
- KWorld V-Stream XPERT DTV DVB-T USB
|
||||
- JetWay DTV DVB-T USB
|
||||
- ADSTech Instant TV DVB-T USB
|
||||
- Ultima Electronic/Artec T1 USB TVBOX (AN2135 and AN2235)
|
||||
- Compro Videomate DVB-U2000 - DVB-T USB
|
||||
- Grandtec USB DVB-T
|
||||
- Avermedia AverTV DVBT USB
|
||||
- DiBcom USB DVB-T reference device (non-public)
|
||||
- Yakumo DVB-T mobile USB2.0
|
||||
- DiBcom USB2.0 DVB-T reference device (non-public)
|
||||
|
||||
o Experimental support for the analog module of the Siemens DVB-C PCI card
|
||||
|
||||
o Cards based on the Conexant cx2388x PCI bridge:
|
||||
- ADS Tech Instant TV DVB-T PCI
|
||||
- ATI HDTV Wonder
|
||||
- digitalnow DNTV Live! DVB-T
|
||||
- DViCO FusionHDTV DVB-T1
|
||||
- DViCO FusionHDTV DVB-T Plus
|
||||
- DViCO FusionHDTV3 Gold-Q
|
||||
- DViCO FusionHDTV3 Gold-T
|
||||
- DViCO FusionHDTV5 Gold
|
||||
- Hauppauge Nova-T DVB-T
|
||||
- KWorld/VStream XPert DVB-T
|
||||
- pcHDTV HD3000 HDTV
|
||||
- TerraTec Cinergy 1400 DVB-T
|
||||
- WinFast DTV1000-T
|
||||
|
||||
o Cards based on the Phillips saa7134 PCI bridge:
|
||||
- Medion 7134
|
||||
- Pinnacle PCTV 300i DVB-T + PAL
|
||||
- LifeView FlyDVB-T DUO
|
||||
- Typhoon DVB-T Duo Digital/Analog Cardbus
|
||||
- Philips TOUGH DVB-T reference design
|
||||
- Philips EUROPA V3 reference design
|
||||
- Compro Videomate DVB-T300
|
||||
- Compro Videomate DVB-T200
|
||||
- AVerMedia AVerTVHD MCE A180
|
||||
|
||||
212
Documentation/dvb/ci.txt
Normal file
212
Documentation/dvb/ci.txt
Normal file
@@ -0,0 +1,212 @@
|
||||
* For the user
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
NOTE: This document describes the usage of the high level CI API as
|
||||
in accordance to the Linux DVB API. This is a not a documentation for the,
|
||||
existing low level CI API.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To utilize the High Level CI capabilities,
|
||||
|
||||
(1*) This point is valid only for the Twinhan/clones
|
||||
For the Twinhan/Twinhan clones, the dst_ca module handles the CI
|
||||
hardware handling.This module is loaded automatically if a CI
|
||||
(Common Interface, that holds the CAM (Conditional Access Module)
|
||||
is detected.
|
||||
|
||||
(2) one requires a userspace application, ca_zap. This small userland
|
||||
application is in charge of sending the descrambling related information
|
||||
to the CAM.
|
||||
|
||||
This application requires the following to function properly as of now.
|
||||
|
||||
(a) Tune to a valid channel, with szap.
|
||||
eg: $ szap -c channels.conf -r "TMC" -x
|
||||
|
||||
(b) a channels.conf containing a valid PMT PID
|
||||
eg: TMC:11996:h:0:27500:278:512:650:321
|
||||
|
||||
here 278 is a valid PMT PID. the rest of the values are the
|
||||
same ones that szap uses.
|
||||
|
||||
(c) after running a szap, you have to run ca_zap, for the
|
||||
descrambler to function,
|
||||
eg: $ ca_zap channels.conf "TMC"
|
||||
|
||||
(d) Hopefully enjoy your favourite subscribed channel as you do with
|
||||
a FTA card.
|
||||
|
||||
(3) Currently ca_zap, and dst_test, both are meant for demonstration
|
||||
purposes only, they can become full fledged applications if necessary.
|
||||
|
||||
|
||||
* Cards that fall in this category
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
At present the cards that fall in this category are the Twinhan and it's
|
||||
clones, these cards are available as VVMER, Tomato, Hercules, Orange and
|
||||
so on.
|
||||
|
||||
* CI modules that are supported
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
The CI module support is largely dependant upon the firmware on the cards
|
||||
Some cards do support almost all of the available CI modules. There is
|
||||
nothing much that can be done in order to make additional CI modules
|
||||
working with these cards.
|
||||
|
||||
Modules that have been tested by this driver at present are
|
||||
|
||||
(1) Irdeto 1 and 2 from SCM
|
||||
(2) Viaccess from SCM
|
||||
(3) Dragoncam
|
||||
|
||||
* The High level CI API
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* For the programmer
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
With the High Level CI approach any new card with almost any random
|
||||
architecture can be implemented with this style, the definitions
|
||||
inside the switch statement can be easily adapted for any card, thereby
|
||||
eliminating the need for any additional ioctls.
|
||||
|
||||
The disadvantage is that the driver/hardware has to manage the rest. For
|
||||
the application programmer it would be as simple as sending/receiving an
|
||||
array to/from the CI ioctls as defined in the Linux DVB API. No changes
|
||||
have been made in the API to accommodate this feature.
|
||||
|
||||
|
||||
* Why the need for another CI interface ?
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
This is one of the most commonly asked question. Well a nice question.
|
||||
Strictly speaking this is not a new interface.
|
||||
|
||||
The CI interface is defined in the DVB API in ca.h as
|
||||
|
||||
typedef struct ca_slot_info {
|
||||
int num; /* slot number */
|
||||
|
||||
int type; /* CA interface this slot supports */
|
||||
#define CA_CI 1 /* CI high level interface */
|
||||
#define CA_CI_LINK 2 /* CI link layer level interface */
|
||||
#define CA_CI_PHYS 4 /* CI physical layer level interface */
|
||||
#define CA_DESCR 8 /* built-in descrambler */
|
||||
#define CA_SC 128 /* simple smart card interface */
|
||||
|
||||
unsigned int flags;
|
||||
#define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */
|
||||
#define CA_CI_MODULE_READY 2
|
||||
} ca_slot_info_t;
|
||||
|
||||
|
||||
|
||||
This CI interface follows the CI high level interface, which is not
|
||||
implemented by most applications. Hence this area is revisited.
|
||||
|
||||
This CI interface is quite different in the case that it tries to
|
||||
accommodate all other CI based devices, that fall into the other categories.
|
||||
|
||||
This means that this CI interface handles the EN50221 style tags in the
|
||||
Application layer only and no session management is taken care of by the
|
||||
application. The driver/hardware will take care of all that.
|
||||
|
||||
This interface is purely an EN50221 interface exchanging APDU's. This
|
||||
means that no session management, link layer or a transport layer do
|
||||
exist in this case in the application to driver communication. It is
|
||||
as simple as that. The driver/hardware has to take care of that.
|
||||
|
||||
|
||||
With this High Level CI interface, the interface can be defined with the
|
||||
regular ioctls.
|
||||
|
||||
All these ioctls are also valid for the High level CI interface
|
||||
|
||||
#define CA_RESET _IO('o', 128)
|
||||
#define CA_GET_CAP _IOR('o', 129, ca_caps_t)
|
||||
#define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t)
|
||||
#define CA_GET_DESCR_INFO _IOR('o', 131, ca_descr_info_t)
|
||||
#define CA_GET_MSG _IOR('o', 132, ca_msg_t)
|
||||
#define CA_SEND_MSG _IOW('o', 133, ca_msg_t)
|
||||
#define CA_SET_DESCR _IOW('o', 134, ca_descr_t)
|
||||
#define CA_SET_PID _IOW('o', 135, ca_pid_t)
|
||||
|
||||
|
||||
On querying the device, the device yields information thus
|
||||
|
||||
CA_GET_SLOT_INFO
|
||||
----------------------------
|
||||
Command = [info]
|
||||
APP: Number=[1]
|
||||
APP: Type=[1]
|
||||
APP: flags=[1]
|
||||
APP: CI High level interface
|
||||
APP: CA/CI Module Present
|
||||
|
||||
CA_GET_CAP
|
||||
----------------------------
|
||||
Command = [caps]
|
||||
APP: Slots=[1]
|
||||
APP: Type=[1]
|
||||
APP: Descrambler keys=[16]
|
||||
APP: Type=[1]
|
||||
|
||||
CA_SEND_MSG
|
||||
----------------------------
|
||||
Descriptors(Program Level)=[ 09 06 06 04 05 50 ff f1]
|
||||
Found CA descriptor @ program level
|
||||
|
||||
(20) ES type=[2] ES pid=[201] ES length =[0 (0x0)]
|
||||
(25) ES type=[4] ES pid=[301] ES length =[0 (0x0)]
|
||||
ca_message length is 25 (0x19) bytes
|
||||
EN50221 CA MSG=[ 9f 80 32 19 03 01 2d d1 f0 08 01 09 06 06 04 05 50 ff f1 02 e0 c9 00 00 04 e1 2d 00 00]
|
||||
|
||||
|
||||
Not all ioctl's are implemented in the driver from the API, the other
|
||||
features of the hardware that cannot be implemented by the API are achieved
|
||||
using the CA_GET_MSG and CA_SEND_MSG ioctls. An EN50221 style wrapper is
|
||||
used to exchange the data to maintain compatibility with other hardware.
|
||||
|
||||
|
||||
/* a message to/from a CI-CAM */
|
||||
typedef struct ca_msg {
|
||||
unsigned int index;
|
||||
unsigned int type;
|
||||
unsigned int length;
|
||||
unsigned char msg[256];
|
||||
} ca_msg_t;
|
||||
|
||||
|
||||
The flow of data can be described thus,
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
App (User)
|
||||
-----
|
||||
parse
|
||||
|
|
||||
|
|
||||
v
|
||||
en50221 APDU (package)
|
||||
--------------------------------------
|
||||
| | | High Level CI driver
|
||||
| | |
|
||||
| v |
|
||||
| en50221 APDU (unpackage) |
|
||||
| | |
|
||||
| | |
|
||||
| v |
|
||||
| sanity checks |
|
||||
| | |
|
||||
| | |
|
||||
| v |
|
||||
| do (H/W dep) |
|
||||
--------------------------------------
|
||||
| Hardware
|
||||
|
|
||||
v
|
||||
|
||||
|
||||
|
||||
|
||||
The High Level CI interface uses the EN50221 DVB standard, following a
|
||||
standard ensures futureproofness.
|
||||
96
Documentation/dvb/contributors.txt
Normal file
96
Documentation/dvb/contributors.txt
Normal file
@@ -0,0 +1,96 @@
|
||||
Thanks go to the following people for patches and contributions:
|
||||
|
||||
Michael Hunold <m.hunold@gmx.de>
|
||||
for the initial saa7146 driver and it's recent overhaul
|
||||
|
||||
Christian Theiss
|
||||
for his work on the initial Linux DVB driver
|
||||
|
||||
Marcus Metzler <mocm@metzlerbros.de>
|
||||
Ralph Metzler <rjkm@metzlerbros.de>
|
||||
for their continuing work on the DVB driver
|
||||
|
||||
Michael Holzt <kju@debian.org>
|
||||
for his contributions to the dvb-net driver
|
||||
|
||||
Diego Picciani <d.picciani@novacomp.it>
|
||||
for CyberLogin for Linux which allows logging onto EON
|
||||
(in case you are wondering where CyberLogin is, EON changed its login
|
||||
procedure and CyberLogin is no longer used.)
|
||||
|
||||
Martin Schaller <martin@smurf.franken.de>
|
||||
for patching the cable card decoder driver
|
||||
|
||||
Klaus Schmidinger <Klaus.Schmidinger@cadsoft.de>
|
||||
for various fixes regarding tuning, OSD and CI stuff and his work on VDR
|
||||
|
||||
Steve Brown <sbrown@cortland.com>
|
||||
for his AFC kernel thread
|
||||
|
||||
Christoph Martin <martin@uni-mainz.de>
|
||||
for his LIRC infrared handler
|
||||
|
||||
Andreas Oberritter <obi@linuxtv.org>
|
||||
Dennis Noermann <dennis.noermann@noernet.de>
|
||||
Felix Domke <tmbinc@elitedvb.net>
|
||||
Florian Schirmer <jolt@tuxbox.org>
|
||||
Ronny Strutz <3des@elitedvb.de>
|
||||
Wolfram Joost <dbox2@frokaschwei.de>
|
||||
...and all the other dbox2 people
|
||||
for many bugfixes in the generic DVB Core, frontend drivers and
|
||||
their work on the dbox2 port of the DVB driver
|
||||
|
||||
Oliver Endriss <o.endriss@gmx.de>
|
||||
for many bugfixes
|
||||
|
||||
Andrew de Quincey <adq_dvb@lidskialf.net>
|
||||
for the tda1004x frontend driver, and various bugfixes
|
||||
|
||||
Peter Schildmann <peter.schildmann@web.de>
|
||||
for the driver for the Technisat SkyStar2 PCI DVB card
|
||||
|
||||
Vadim Catana <skystar@moldova.cc>
|
||||
Roberto Ragusa <r.ragusa@libero.it>
|
||||
Augusto Cardoso <augusto@carhil.net>
|
||||
for all the work for the FlexCopII chipset by B2C2,Inc.
|
||||
|
||||
Davor Emard <emard@softhome.net>
|
||||
for his work on the budget drivers, the demux code,
|
||||
the module unloading problems, ...
|
||||
|
||||
Hans-Frieder Vogt <hfvogt@arcor.de>
|
||||
for his work on calculating and checking the crc's for the
|
||||
TechnoTrend/Hauppauge DEC driver firmware
|
||||
|
||||
Michael Dreher <michael@5dot1.de>
|
||||
Andreas 'randy' Weinberger
|
||||
for the support of the Fujitsu-Siemens Activy budget DVB-S
|
||||
|
||||
Kenneth Aafl<66>y <ke-aa@frisurf.no>
|
||||
for adding support for Typhoon DVB-S budget card
|
||||
|
||||
Ernst Peinlich <e.peinlich@inode.at>
|
||||
for tuning/DiSEqC support for the DEC 3000-s
|
||||
|
||||
Peter Beutner <p.beutner@gmx.net>
|
||||
for the IR code for the ttusb-dec driver
|
||||
|
||||
Wilson Michaels <wilsonmichaels@earthlink.net>
|
||||
for the lgdt330x frontend driver, and various bugfixes
|
||||
|
||||
Michael Krufky <mkrufky@m1k.net>
|
||||
for maintaining v4l/dvb inter-tree dependencies
|
||||
|
||||
Taylor Jacob <rtjacob@earthlink.net>
|
||||
for the nxt2002 frontend driver
|
||||
|
||||
Jean-Francois Thibert <jeanfrancois@sagetv.com>
|
||||
for the nxt2004 frontend driver
|
||||
|
||||
Kirk Lapray <kirk.lapray@gmail.com>
|
||||
for the or51211 and or51132 frontend drivers, and
|
||||
for merging the nxt2002 and nxt2004 modules into a
|
||||
single nxt200x frontend driver.
|
||||
|
||||
(If you think you should be in this list, but you are not, drop a
|
||||
line to the DVB mailing list)
|
||||
159
Documentation/dvb/faq.txt
Normal file
159
Documentation/dvb/faq.txt
Normal file
@@ -0,0 +1,159 @@
|
||||
Some very frequently asked questions about linuxtv-dvb
|
||||
|
||||
1. The signal seems to die a few seconds after tuning.
|
||||
|
||||
It's not a bug, it's a feature. Because the frontends have
|
||||
significant power requirements (and hence get very hot), they
|
||||
are powered down if they are unused (i.e. if the frontend device
|
||||
is closed). The dvb-core.o module parameter "dvb_shutdown_timeout"
|
||||
allow you to change the timeout (default 5 seconds). Setting the
|
||||
timeout to 0 disables the timeout feature.
|
||||
|
||||
2. How can I watch TV?
|
||||
|
||||
The driver distribution includes some simple utilities which
|
||||
are mainly intended for testing and to demonstrate how the
|
||||
DVB API works.
|
||||
|
||||
Depending on whether you have a DVB-S, DVB-C or DVB-T card, use
|
||||
apps/szap/szap, czap or tzap. You must supply a channel list
|
||||
in ~/.[sct]zap/channels.conf. If you are lucky you can just copy
|
||||
one of the supplied channel lists, or you can create a new one
|
||||
by running apps/scan/scan. If you run scan on an unknown network
|
||||
you might have to supply some start data in apps/scan/initial.h.
|
||||
|
||||
If you have a card with a built-in hardware MPEG-decoder the
|
||||
drivers create a video4linux device (/dev/v4l/video0) which
|
||||
you can use to watch TV with any v4l application. xawtv is known
|
||||
to work. Note that you cannot change channels with xawtv, you
|
||||
have to zap using [sct]zap. If you want a nice application for
|
||||
TV watching and record/playback, have a look at VDR.
|
||||
|
||||
If your card does not have a hardware MPEG decoder you need
|
||||
a software MPEG decoder. Mplayer or xine are known to work.
|
||||
Newsflash: MythTV also has DVB support now.
|
||||
Note: Only very recent versions of Mplayer and xine can decode.
|
||||
MPEG2 transport streams (TS) directly. Then, run
|
||||
'[sct]zap channelname -r' in one xterm, and keep it running,
|
||||
and start 'mplayer - < /dev/dvb/adapter0/dvr0' or
|
||||
'xine stdin://mpeg2 < /dev/dvb/adapter0/dvr0' in a second xterm.
|
||||
That's all far from perfect, but it seems no one has written
|
||||
a nice DVB application which includes a builtin software MPEG
|
||||
decoder yet.
|
||||
|
||||
Newsflash: Newest xine directly supports DVB. Just copy your
|
||||
channels.conf to ~/.xine and start 'xine dvb://', or select
|
||||
the DVB button in the xine GUI. Channel switching works using the
|
||||
numpad pgup/pgdown (NP9 / NP3) keys to scroll through the channel osd
|
||||
menu and pressing numpad-enter to switch to the selected channel.
|
||||
|
||||
Note: Older versions of xine and mplayer understand MPEG program
|
||||
streams (PS) only, and can be used in conjunction with the
|
||||
ts2ps tool from the Metzler Brother's dvb-mpegtools package.
|
||||
|
||||
3. Which other DVB applications exist?
|
||||
|
||||
http://www.cadsoft.de/people/kls/vdr/
|
||||
Klaus Schmidinger's Video Disk Recorder
|
||||
|
||||
http://www.metzlerbros.org/dvb/
|
||||
Metzler Bros. DVB development; alternate drivers and
|
||||
DVB utilities, include dvb-mpegtools and tuxzap.
|
||||
|
||||
http://sourceforge.net/projects/dvbtools/
|
||||
Dave Chapman's dvbtools package, including
|
||||
dvbstream and dvbtune
|
||||
|
||||
http://www.linuxdvb.tv/
|
||||
Henning Holtschneider's site with many interesting
|
||||
links and docs
|
||||
|
||||
http://www.dbox2.info/
|
||||
LinuxDVB on the dBox2
|
||||
|
||||
http://www.tuxbox.org/
|
||||
http://cvs.tuxbox.org/
|
||||
the TuxBox CVS many interesting DVB applications and the dBox2
|
||||
DVB source
|
||||
|
||||
http://sourceforge.net/projects/dvbsak/
|
||||
DVB Swiss Army Knife library and utilities
|
||||
|
||||
http://www.nenie.org/misc/mpsys/
|
||||
MPSYS: a MPEG2 system library and tools
|
||||
|
||||
http://mplayerhq.hu/
|
||||
mplayer
|
||||
|
||||
http://xine.sourceforge.net/
|
||||
http://xinehq.de/
|
||||
xine
|
||||
|
||||
http://www.mythtv.org/
|
||||
MythTV - analog TV PVR, but now with DVB support, too
|
||||
(with software MPEG decode)
|
||||
|
||||
http://dvbsnoop.sourceforge.net/
|
||||
DVB sniffer program to monitor, analyze, debug, dump
|
||||
or view dvb/mpeg/dsm-cc/mhp stream information (TS,
|
||||
PES, SECTION)
|
||||
|
||||
4. Can't get a signal tuned correctly
|
||||
|
||||
If you are using a Technotrend/Hauppauge DVB-C card *without* analog
|
||||
module, you might have to use module parameter adac=-1 (dvb-ttpci.o).
|
||||
|
||||
5. The dvb_net device doesn't give me any packets at all
|
||||
|
||||
Run tcpdump on the dvb0_0 interface. This sets the interface
|
||||
into promiscous mode so it accepts any packets from the PID
|
||||
you have configured with the dvbnet utility. Check if there
|
||||
are any packets with the IP addr and MAC addr you have
|
||||
configured with ifconfig.
|
||||
|
||||
If tcpdump doesn't give you any output, check the statistics
|
||||
which ifconfig outputs. (Note: If the MAC address is wrong,
|
||||
dvb_net won't get any input; thus you have to run tcpdump
|
||||
before checking the statistics.) If there are no packets at
|
||||
all then maybe the PID is wrong. If there are error packets,
|
||||
then either the PID is wrong or the stream does not conform to
|
||||
the MPE standard (EN 301 192, http://www.etsi.org/). You can
|
||||
use e.g. dvbsnoop for debugging.
|
||||
|
||||
6. The dvb_net device doesn't give me any multicast packets
|
||||
|
||||
Check your routes if they include the multicast address range.
|
||||
Additionally make sure that "source validation by reversed path
|
||||
lookup" is disabled:
|
||||
$ "echo 0 > /proc/sys/net/ipv4/conf/dvb0/rp_filter"
|
||||
|
||||
7. What the hell are all those modules that need to be loaded?
|
||||
|
||||
For a dvb-ttpci av7110 based full-featured card the following
|
||||
modules are loaded:
|
||||
|
||||
- videodev: Video4Linux core module. This is the base module that
|
||||
gives you access to the "analog" tv picture of the av7110 mpeg2
|
||||
decoder.
|
||||
|
||||
- v4l2-common: common functions for Video4Linux-2 drivers
|
||||
|
||||
- v4l1-compat: backward compatibility layer for Video4Linux-1 legacy
|
||||
applications
|
||||
|
||||
- dvb-core: DVB core module. This provides you with the
|
||||
/dev/dvb/adapter entries
|
||||
|
||||
- saa7146: SAA7146 core driver. This is need to access any SAA7146
|
||||
based card in your system.
|
||||
|
||||
- saa7146_vv: SAA7146 video and vbi functions. These are only needed
|
||||
for full-featured cards.
|
||||
|
||||
- video-buf: capture helper module for the saa7146_vv driver. This
|
||||
one is responsible to handle capture buffers.
|
||||
|
||||
- dvb-ttpci: The main driver for AV7110 based, full-featured
|
||||
DVB-S/C/T cards
|
||||
|
||||
eof
|
||||
450
Documentation/dvb/get_dvb_firmware
Normal file
450
Documentation/dvb/get_dvb_firmware
Normal file
@@ -0,0 +1,450 @@
|
||||
#!/usr/bin/perl
|
||||
# DVB firmware extractor
|
||||
#
|
||||
# (c) 2004 Andrew de Quincey
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
#
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
use File::Temp qw/ tempdir /;
|
||||
use IO::Handle;
|
||||
|
||||
@components = ( "sp8870", "sp887x", "tda10045", "tda10046",
|
||||
"tda10046lifeview", "av7110", "dec2000t", "dec2540t",
|
||||
"dec3000s", "vp7041", "dibusb", "nxt2002", "nxt2004",
|
||||
"or51211", "or51132_qam", "or51132_vsb", "bluebird");
|
||||
|
||||
# Check args
|
||||
syntax() if (scalar(@ARGV) != 1);
|
||||
$cid = $ARGV[0];
|
||||
|
||||
# Do it!
|
||||
for ($i=0; $i < scalar(@components); $i++) {
|
||||
if ($cid eq $components[$i]) {
|
||||
$outfile = eval($cid);
|
||||
die $@ if $@;
|
||||
print STDERR <<EOF;
|
||||
Firmware $outfile extracted successfully.
|
||||
Now copy it to either /usr/lib/hotplug/firmware or /lib/firmware
|
||||
(depending on configuration of firmware hotplug).
|
||||
EOF
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
# If we get here, it wasn't found
|
||||
print STDERR "Unknown component \"$cid\"\n";
|
||||
syntax();
|
||||
|
||||
|
||||
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
# Firmware-specific extraction subroutines
|
||||
|
||||
sub sp8870 {
|
||||
my $sourcefile = "tt_Premium_217g.zip";
|
||||
my $url = "http://www.technotrend.de/new/217g/$sourcefile";
|
||||
my $hash = "53970ec17a538945a6d8cb608a7b3899";
|
||||
my $outfile = "dvb-fe-sp8870.fw";
|
||||
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($sourcefile, $url);
|
||||
unzip($sourcefile, $tmpdir);
|
||||
verify("$tmpdir/software/OEM/HE/App/boot/SC_MAIN.MC", $hash);
|
||||
copy("$tmpdir/software/OEM/HE/App/boot/SC_MAIN.MC", $outfile);
|
||||
|
||||
$outfile;
|
||||
}
|
||||
|
||||
sub sp887x {
|
||||
my $sourcefile = "Dvbt1.3.57.6.zip";
|
||||
my $url = "http://www.avermedia.com/software/$sourcefile";
|
||||
my $cabfile = "DVBT Net Ver1.3.57.6/disk1/data1.cab";
|
||||
my $hash = "237938d53a7f834c05c42b894ca68ac3";
|
||||
my $outfile = "dvb-fe-sp887x.fw";
|
||||
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
|
||||
|
||||
checkstandard();
|
||||
checkunshield();
|
||||
|
||||
wgetfile($sourcefile, $url);
|
||||
unzip($sourcefile, $tmpdir);
|
||||
unshield("$tmpdir/$cabfile", $tmpdir);
|
||||
verify("$tmpdir/ZEnglish/sc_main.mc", $hash);
|
||||
copy("$tmpdir/ZEnglish/sc_main.mc", $outfile);
|
||||
|
||||
$outfile;
|
||||
}
|
||||
|
||||
sub tda10045 {
|
||||
my $sourcefile = "tt_budget_217g.zip";
|
||||
my $url = "http://www.technotrend.de/new/217g/$sourcefile";
|
||||
my $hash = "2105fd5bf37842fbcdfa4bfd58f3594a";
|
||||
my $outfile = "dvb-fe-tda10045.fw";
|
||||
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($sourcefile, $url);
|
||||
unzip($sourcefile, $tmpdir);
|
||||
extract("$tmpdir/software/OEM/PCI/App/ttlcdacc.dll", 0x37ef9, 30555, "$tmpdir/fwtmp");
|
||||
verify("$tmpdir/fwtmp", $hash);
|
||||
copy("$tmpdir/fwtmp", $outfile);
|
||||
|
||||
$outfile;
|
||||
}
|
||||
|
||||
sub tda10046 {
|
||||
my $sourcefile = "tt_budget_217g.zip";
|
||||
my $url = "http://www.technotrend.de/new/217g/$sourcefile";
|
||||
my $hash = "6a7e1e2f2644b162ff0502367553c72d";
|
||||
my $outfile = "dvb-fe-tda10046.fw";
|
||||
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($sourcefile, $url);
|
||||
unzip($sourcefile, $tmpdir);
|
||||
extract("$tmpdir/software/OEM/PCI/App/ttlcdacc.dll", 0x3f731, 24478, "$tmpdir/fwtmp");
|
||||
verify("$tmpdir/fwtmp", $hash);
|
||||
copy("$tmpdir/fwtmp", $outfile);
|
||||
|
||||
$outfile;
|
||||
}
|
||||
|
||||
sub tda10046lifeview {
|
||||
my $sourcefile = "Drv_2.11.02.zip";
|
||||
my $url = "http://www.lifeview.com.tw/drivers/pci_card/FlyDVB-T/$sourcefile";
|
||||
my $hash = "1ea24dee4eea8fe971686981f34fd2e0";
|
||||
my $outfile = "dvb-fe-tda10046.fw";
|
||||
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($sourcefile, $url);
|
||||
unzip($sourcefile, $tmpdir);
|
||||
extract("$tmpdir/LVHybrid.sys", 0x8b088, 24602, "$tmpdir/fwtmp");
|
||||
verify("$tmpdir/fwtmp", $hash);
|
||||
copy("$tmpdir/fwtmp", $outfile);
|
||||
|
||||
$outfile;
|
||||
}
|
||||
|
||||
sub av7110 {
|
||||
my $sourcefile = "dvb-ttpci-01.fw-261d";
|
||||
my $url = "http://www.linuxtv.org/downloads/firmware/$sourcefile";
|
||||
my $hash = "603431b6259715a8e88f376a53b64e2f";
|
||||
my $outfile = "dvb-ttpci-01.fw";
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($sourcefile, $url);
|
||||
verify($sourcefile, $hash);
|
||||
copy($sourcefile, $outfile);
|
||||
|
||||
$outfile;
|
||||
}
|
||||
|
||||
sub dec2000t {
|
||||
my $sourcefile = "dec217g.exe";
|
||||
my $url = "http://hauppauge.lightpath.net/de/$sourcefile";
|
||||
my $hash = "bd86f458cee4a8f0a8ce2d20c66215a9";
|
||||
my $outfile = "dvb-ttusb-dec-2000t.fw";
|
||||
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($sourcefile, $url);
|
||||
unzip($sourcefile, $tmpdir);
|
||||
verify("$tmpdir/software/OEM/STB/App/Boot/STB_PC_T.bin", $hash);
|
||||
copy("$tmpdir/software/OEM/STB/App/Boot/STB_PC_T.bin", $outfile);
|
||||
|
||||
$outfile;
|
||||
}
|
||||
|
||||
sub dec2540t {
|
||||
my $sourcefile = "dec217g.exe";
|
||||
my $url = "http://hauppauge.lightpath.net/de/$sourcefile";
|
||||
my $hash = "53e58f4f5b5c2930beee74a7681fed92";
|
||||
my $outfile = "dvb-ttusb-dec-2540t.fw";
|
||||
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($sourcefile, $url);
|
||||
unzip($sourcefile, $tmpdir);
|
||||
verify("$tmpdir/software/OEM/STB/App/Boot/STB_PC_X.bin", $hash);
|
||||
copy("$tmpdir/software/OEM/STB/App/Boot/STB_PC_X.bin", $outfile);
|
||||
|
||||
$outfile;
|
||||
}
|
||||
|
||||
sub dec3000s {
|
||||
my $sourcefile = "dec217g.exe";
|
||||
my $url = "http://hauppauge.lightpath.net/de/$sourcefile";
|
||||
my $hash = "b013ececea83f4d6d8d2a29ac7c1b448";
|
||||
my $outfile = "dvb-ttusb-dec-3000s.fw";
|
||||
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($sourcefile, $url);
|
||||
unzip($sourcefile, $tmpdir);
|
||||
verify("$tmpdir/software/OEM/STB/App/Boot/STB_PC_S.bin", $hash);
|
||||
copy("$tmpdir/software/OEM/STB/App/Boot/STB_PC_S.bin", $outfile);
|
||||
|
||||
$outfile;
|
||||
}
|
||||
|
||||
sub vp7041 {
|
||||
my $sourcefile = "2.422.zip";
|
||||
my $url = "http://www.twinhan.com/files/driver/USB-Ter/$sourcefile";
|
||||
my $hash = "e88c9372d1f66609a3e7b072c53fbcfe";
|
||||
my $outfile = "dvb-vp7041-2.422.fw";
|
||||
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($sourcefile, $url);
|
||||
unzip($sourcefile, $tmpdir);
|
||||
extract("$tmpdir/VisionDTV/Drivers/Win2K&XP/UDTTload.sys", 12503, 3036, "$tmpdir/fwtmp1");
|
||||
extract("$tmpdir/VisionDTV/Drivers/Win2K&XP/UDTTload.sys", 2207, 10274, "$tmpdir/fwtmp2");
|
||||
|
||||
my $CMD = "\000\001\000\222\177\000";
|
||||
my $PAD = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000";
|
||||
my ($FW);
|
||||
open $FW, ">$tmpdir/fwtmp3";
|
||||
print $FW "$CMD\001$PAD";
|
||||
print $FW "$CMD\001$PAD";
|
||||
appendfile($FW, "$tmpdir/fwtmp1");
|
||||
print $FW "$CMD\000$PAD";
|
||||
print $FW "$CMD\001$PAD";
|
||||
appendfile($FW, "$tmpdir/fwtmp2");
|
||||
print $FW "$CMD\001$PAD";
|
||||
print $FW "$CMD\000$PAD";
|
||||
close($FW);
|
||||
|
||||
verify("$tmpdir/fwtmp3", $hash);
|
||||
copy("$tmpdir/fwtmp3", $outfile);
|
||||
|
||||
$outfile;
|
||||
}
|
||||
|
||||
sub dibusb {
|
||||
my $url = "http://www.linuxtv.org/downloads/firmware/dvb-usb-dibusb-5.0.0.11.fw";
|
||||
my $outfile = "dvb-dibusb-5.0.0.11.fw";
|
||||
my $hash = "fa490295a527360ca16dcdf3224ca243";
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($outfile, $url);
|
||||
verify($outfile,$hash);
|
||||
|
||||
$outfile;
|
||||
}
|
||||
|
||||
sub nxt2002 {
|
||||
my $sourcefile = "Technisat_DVB-PC_4_4_COMPACT.zip";
|
||||
my $url = "http://www.bbti.us/download/windows/$sourcefile";
|
||||
my $hash = "476befae8c7c1bb9648954060b1eec1f";
|
||||
my $outfile = "dvb-fe-nxt2002.fw";
|
||||
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($sourcefile, $url);
|
||||
unzip($sourcefile, $tmpdir);
|
||||
verify("$tmpdir/SkyNET.sys", $hash);
|
||||
extract("$tmpdir/SkyNET.sys", 331624, 5908, $outfile);
|
||||
|
||||
$outfile;
|
||||
}
|
||||
|
||||
sub nxt2004 {
|
||||
my $sourcefile = "AVerTVHD_MCE_A180_Drv_v1.2.2.16.zip";
|
||||
my $url = "http://www.aver.com/support/Drivers/$sourcefile";
|
||||
my $hash = "111cb885b1e009188346d72acfed024c";
|
||||
my $outfile = "dvb-fe-nxt2004.fw";
|
||||
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($sourcefile, $url);
|
||||
unzip($sourcefile, $tmpdir);
|
||||
verify("$tmpdir/3xHybrid.sys", $hash);
|
||||
extract("$tmpdir/3xHybrid.sys", 465304, 9584, $outfile);
|
||||
|
||||
$outfile;
|
||||
}
|
||||
|
||||
sub or51211 {
|
||||
my $fwfile = "dvb-fe-or51211.fw";
|
||||
my $url = "http://linuxtv.org/downloads/firmware/$fwfile";
|
||||
my $hash = "d830949c771a289505bf9eafc225d491";
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($fwfile, $url);
|
||||
verify($fwfile, $hash);
|
||||
|
||||
$fwfile;
|
||||
}
|
||||
|
||||
sub or51132_qam {
|
||||
my $fwfile = "dvb-fe-or51132-qam.fw";
|
||||
my $url = "http://linuxtv.org/downloads/firmware/$fwfile";
|
||||
my $hash = "7702e8938612de46ccadfe9b413cb3b5";
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($fwfile, $url);
|
||||
verify($fwfile, $hash);
|
||||
|
||||
$fwfile;
|
||||
}
|
||||
|
||||
sub or51132_vsb {
|
||||
my $fwfile = "dvb-fe-or51132-vsb.fw";
|
||||
my $url = "http://linuxtv.org/downloads/firmware/$fwfile";
|
||||
my $hash = "c16208e02f36fc439a557ad4c613364a";
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($fwfile, $url);
|
||||
verify($fwfile, $hash);
|
||||
|
||||
$fwfile;
|
||||
}
|
||||
|
||||
sub bluebird {
|
||||
my $url = "http://www.linuxtv.org/download/dvb/firmware/dvb-usb-bluebird-01.fw";
|
||||
my $outfile = "dvb-usb-bluebird-01.fw";
|
||||
my $hash = "658397cb9eba9101af9031302671f49d";
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($outfile, $url);
|
||||
verify($outfile,$hash);
|
||||
|
||||
$outfile;
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
# Utilities
|
||||
|
||||
sub checkstandard {
|
||||
if (system("which unzip > /dev/null 2>&1")) {
|
||||
die "This firmware requires the unzip command - see ftp://ftp.info-zip.org/pub/infozip/UnZip.html\n";
|
||||
}
|
||||
if (system("which md5sum > /dev/null 2>&1")) {
|
||||
die "This firmware requires the md5sum command - see http://www.gnu.org/software/coreutils/\n";
|
||||
}
|
||||
if (system("which wget > /dev/null 2>&1")) {
|
||||
die "This firmware requires the wget command - see http://wget.sunsite.dk/\n";
|
||||
}
|
||||
}
|
||||
|
||||
sub checkunshield {
|
||||
if (system("which unshield > /dev/null 2>&1")) {
|
||||
die "This firmware requires the unshield command - see http://sourceforge.net/projects/synce/\n";
|
||||
}
|
||||
}
|
||||
|
||||
sub wgetfile {
|
||||
my ($sourcefile, $url) = @_;
|
||||
|
||||
if (! -f $sourcefile) {
|
||||
system("wget -O \"$sourcefile\" \"$url\"") and die "wget failed - unable to download firmware";
|
||||
}
|
||||
}
|
||||
|
||||
sub unzip {
|
||||
my ($sourcefile, $todir) = @_;
|
||||
|
||||
$status = system("unzip -q -o -d \"$todir\" \"$sourcefile\" 2>/dev/null" );
|
||||
if ((($status >> 8) > 2) || (($status & 0xff) != 0)) {
|
||||
die ("unzip failed - unable to extract firmware");
|
||||
}
|
||||
}
|
||||
|
||||
sub unshield {
|
||||
my ($sourcefile, $todir) = @_;
|
||||
|
||||
system("unshield x -d \"$todir\" \"$sourcefile\" > /dev/null" ) and die ("unshield failed - unable to extract firmware");
|
||||
}
|
||||
|
||||
sub verify {
|
||||
my ($filename, $hash) = @_;
|
||||
my ($testhash);
|
||||
|
||||
open(CMD, "md5sum \"$filename\"|");
|
||||
$testhash = <CMD>;
|
||||
$testhash =~ /([a-zA-Z0-9]*)/;
|
||||
$testhash = $1;
|
||||
close CMD;
|
||||
die "Hash of extracted file does not match!\n" if ($testhash ne $hash);
|
||||
}
|
||||
|
||||
sub copy {
|
||||
my ($from, $to) = @_;
|
||||
|
||||
system("cp -f \"$from\" \"$to\"") and die ("cp failed");
|
||||
}
|
||||
|
||||
sub extract {
|
||||
my ($infile, $offset, $length, $outfile) = @_;
|
||||
my ($chunklength, $buf, $rcount);
|
||||
|
||||
open INFILE, "<$infile";
|
||||
open OUTFILE, ">$outfile";
|
||||
sysseek(INFILE, $offset, SEEK_SET);
|
||||
while($length > 0) {
|
||||
# Calc chunk size
|
||||
$chunklength = 2048;
|
||||
$chunklength = $length if ($chunklength > $length);
|
||||
|
||||
$rcount = sysread(INFILE, $buf, $chunklength);
|
||||
die "Ran out of data\n" if ($rcount != $chunklength);
|
||||
syswrite(OUTFILE, $buf);
|
||||
$length -= $rcount;
|
||||
}
|
||||
close INFILE;
|
||||
close OUTFILE;
|
||||
}
|
||||
|
||||
sub appendfile {
|
||||
my ($FH, $infile) = @_;
|
||||
my ($buf);
|
||||
|
||||
open INFILE, "<$infile";
|
||||
while(1) {
|
||||
$rcount = sysread(INFILE, $buf, 2048);
|
||||
last if ($rcount == 0);
|
||||
print $FH $buf;
|
||||
}
|
||||
close(INFILE);
|
||||
}
|
||||
|
||||
sub syntax() {
|
||||
print STDERR "syntax: get_dvb_firmware <component>\n";
|
||||
print STDERR "Supported components:\n";
|
||||
for($i=0; $i < scalar(@components); $i++) {
|
||||
print STDERR "\t" . $components[$i] . "\n";
|
||||
}
|
||||
exit(1);
|
||||
}
|
||||
62
Documentation/dvb/readme.txt
Normal file
62
Documentation/dvb/readme.txt
Normal file
@@ -0,0 +1,62 @@
|
||||
Linux Digital Video Broadcast (DVB) subsystem
|
||||
=============================================
|
||||
|
||||
The main development site and CVS repository for these
|
||||
drivers is http://linuxtv.org/.
|
||||
|
||||
The developer mailing list linux-dvb is also hosted there,
|
||||
see http://linuxtv.org/lists.php. Please check
|
||||
the archive http://linuxtv.org/pipermail/linux-dvb/
|
||||
and the Wiki http://linuxtv.org/wiki/
|
||||
before asking newbie questions on the list.
|
||||
|
||||
API documentation, utilities and test/example programs
|
||||
are available as part of the old driver package for Linux 2.4
|
||||
(linuxtv-dvb-1.0.x.tar.gz), or from CVS (module DVB).
|
||||
We plan to split this into separate packages, but it's not
|
||||
been done yet.
|
||||
|
||||
http://linuxtv.org/downloads/
|
||||
|
||||
What's inside this directory:
|
||||
|
||||
"avermedia.txt"
|
||||
contains detailed information about the
|
||||
Avermedia DVB-T cards. See also "bt8xx.txt".
|
||||
|
||||
"bt8xx.txt"
|
||||
contains detailed information about the
|
||||
various bt8xx based "budget" DVB cards.
|
||||
|
||||
"cards.txt"
|
||||
contains a list of supported hardware.
|
||||
|
||||
"ci.txt"
|
||||
contains detailed information about the
|
||||
CI module as part from TwinHan cards and Clones.
|
||||
|
||||
"contributors.txt"
|
||||
is the who-is-who of DVB development.
|
||||
|
||||
"faq.txt"
|
||||
contains frequently asked questions and their answers.
|
||||
|
||||
"get_dvb_firmware"
|
||||
script to download and extract firmware for those devices
|
||||
that require it.
|
||||
|
||||
"ttusb-dec.txt"
|
||||
contains detailed information about the
|
||||
TT DEC2000/DEC3000 USB DVB hardware.
|
||||
|
||||
"udev.txt"
|
||||
how to get DVB and udev up and running.
|
||||
|
||||
"README.dvb-usb"
|
||||
contains detailed information about the DVB USB cards.
|
||||
|
||||
"README.flexcop"
|
||||
contains detailed information about the
|
||||
Technisat- and Flexcop B2C2 drivers.
|
||||
|
||||
Good luck and have fun!
|
||||
45
Documentation/dvb/ttusb-dec.txt
Normal file
45
Documentation/dvb/ttusb-dec.txt
Normal file
@@ -0,0 +1,45 @@
|
||||
TechnoTrend/Hauppauge DEC USB Driver
|
||||
====================================
|
||||
|
||||
Driver Status
|
||||
-------------
|
||||
|
||||
Supported:
|
||||
DEC2000-t
|
||||
DEC2450-t
|
||||
DEC3000-s
|
||||
Linux Kernels 2.4 and 2.6
|
||||
Video Streaming
|
||||
Audio Streaming
|
||||
Section Filters
|
||||
Channel Zapping
|
||||
Hotplug firmware loader under 2.6 kernels
|
||||
|
||||
To Do:
|
||||
Tuner status information
|
||||
DVB network interface
|
||||
Streaming video PC->DEC
|
||||
Conax support for 2450-t
|
||||
|
||||
Getting the Firmware
|
||||
--------------------
|
||||
To download the firmware, use the following commands:
|
||||
"get_dvb_firmware dec2000t"
|
||||
"get_dvb_firmware dec2540t"
|
||||
"get_dvb_firmware dec3000s"
|
||||
|
||||
|
||||
Compilation Notes for 2.4 kernels
|
||||
---------------------------------
|
||||
For 2.4 kernels the firmware for the DECs is compiled into the driver itself.
|
||||
|
||||
Copy the three files downloaded above into the build-2.4 directory.
|
||||
|
||||
|
||||
Hotplug Firmware Loading for 2.6 kernels
|
||||
----------------------------------------
|
||||
For 2.6 kernels the firmware is loaded at the point that the driver module is
|
||||
loaded. See linux/Documentation/dvb/firmware.txt for more information.
|
||||
|
||||
Copy the three files downloaded above into the /usr/lib/hotplug/firmware or
|
||||
/lib/firmware directory (depending on configuration of firmware hotplug).
|
||||
46
Documentation/dvb/udev.txt
Normal file
46
Documentation/dvb/udev.txt
Normal file
@@ -0,0 +1,46 @@
|
||||
The DVB subsystem currently registers to the sysfs subsystem using the
|
||||
"class_simple" interface.
|
||||
|
||||
This means that only the basic informations like module loading parameters
|
||||
are presented through sysfs. Other things that might be interesting are
|
||||
currently *not* available.
|
||||
|
||||
Nevertheless it's now possible to add proper udev rules so that the
|
||||
DVB device nodes are created automatically.
|
||||
|
||||
We assume that you have udev already up and running and that have been
|
||||
creating the DVB device nodes manually up to now due to the missing sysfs
|
||||
support.
|
||||
|
||||
0. Don't forget to disable your current method of creating the
|
||||
device nodes manually.
|
||||
|
||||
1. Unfortunately, you'll need a helper script to transform the kernel
|
||||
sysfs device name into the well known dvb adapter / device naming scheme.
|
||||
The script should be called "dvb.sh" and should be placed into a script
|
||||
dir where udev can execute it, most likely /etc/udev/scripts/
|
||||
|
||||
So, create a new file /etc/udev/scripts/dvb.sh and add the following:
|
||||
------------------------------schnipp------------------------------------------------
|
||||
#!/bin/sh
|
||||
/bin/echo $1 | /bin/sed -e 's,dvb\([0-9]\)\.\([^0-9]*\)\([0-9]\),dvb/adapter\1/\2\3,'
|
||||
------------------------------schnipp------------------------------------------------
|
||||
|
||||
Don't forget to make the script executable with "chmod".
|
||||
|
||||
1. You need to create a proper udev rule that will create the device nodes
|
||||
like you know them. All real distributions out there scan the /etc/udev/rules.d
|
||||
directory for rule files. The main udev configuration file /etc/udev/udev.conf
|
||||
will tell you the directory where the rules are, most likely it's /etc/udev/rules.d/
|
||||
|
||||
Create a new rule file in that directory called "dvb.rule" and add the following line:
|
||||
------------------------------schnipp------------------------------------------------
|
||||
KERNEL="dvb*", PROGRAM="/etc/udev/scripts/dvb.sh %k", NAME="%c"
|
||||
------------------------------schnipp------------------------------------------------
|
||||
|
||||
If you want more control over the device nodes (for example a special group membership)
|
||||
have a look at "man udev".
|
||||
|
||||
For every device that registers to the sysfs subsystem with a "dvb" prefix,
|
||||
the helper script /etc/udev/scripts/dvb.sh is invoked, which will then
|
||||
create the proper device node in your /dev/ directory.
|
||||
Reference in New Issue
Block a user