Commit c1013373 authored by Michael Hunold's avatar Michael Hunold Committed by Linus Torvalds

[PATCH] DVB: documentation update

- [DVB] add udev.txt which describes how to use dvb and udev/sysfs
- [DVB] add Visionplus VisionDTV USB-Ter DVB-T adapter documentation
- [DVB] update TT USB DEC documentation
- [DVB] update various Kconfig entries
- [DVB] remove obsolete firmware documentation
Signed-off-by: default avatarMichael Hunold <hunold@linuxtv.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 2da8c87f
Documentation for dib3000mb frontend driver and dibusb device driver
The drivers should work with
- Twinhan VisionPlus VisionDTV USB-Ter DVB-T Device (VP7041)
http://www.twinhan.com/visiontv-2_4.htm
- CTS Portable (Chinese Television System)
http://www.2cts.tv/ctsportable/
- KWorld V-Stream XPERT DTV - DVB-T USB
http://www.kworld.com.tw/asp/pindex.asp?id=4&pid=13
- HAMA DVB-T USB device
http://www.hama.de/portal/articleId*110620/action*2598
- DiBcom USB DVB-T reference device
- Ultima Electronic/Artec T1 USB TVBOX
http://www.arteceuro.com/products-tvbox.html
Copyright (C) 2004 Patrick Boettcher (patrick.boettcher@desy.de),
both drivers based on GPL code, which has
Copyright (C) 2004 Amaury Demol for DiBcom (ademol@dibcom.fr)
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, version 2.
NEWS:
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
frequency generator
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?
NOTE: This driver was developed using Linux 2.6.6.,
it is working with 2.6.7, 2.6.8.1.
Linux 2.4.x support is not planned, but patches are very welcome.
NOTE: I'm using Debian testing, so the following explaination (especially
the hotplug-path) needn't match your system, but probably it will :).
1.1. Firmware
The USB driver needs to download a firmware to start working.
You can either use "get_dvb_firmware dibusb" to download the firmware or you
can get it directly via
http://linuxtv.org/cgi-bin/cvsweb.cgi/dvb-kernel/firmware/dvb-dibusb-5.0.0.11.fw?rev=1.1&content-type=text/plain
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.
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.
modprobe dvb-dibusb debug=1
modprobe dib3000mb debug=1
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. For myself
I used mplayer, dvbscan, tzap and kaxtv, they are working. Using the device
as a slave device in vdr, was not working for me. Some work has to be done
(patches and comments are very welcome).
2. Known problems and bugs
TODO:
- add some additional URBs for USB data transfer
- due a firmware problem i2c writes during mpeg transfers destroy the stream
no i2c writes during streaming, interrupt streaming, when adding another pid
2.1. Adding new devices
It is not possible to determine the range of devices based on the DiBcom
reference design. This is because the reference design of DiBcom can be sold
to third persons, without telling DiBcom (so done with the Twinhan VP7041 and
the HAMA device).
When you think you have a device like this and the driver does not recognizes it,
please send the ****load.inf and the ****cap.inf of the Windows driver to me.
Sometimes the Vendor or Product ID is identical to the ones of Twinhan, even
though it is not a Twinhan device (e.g. HAMA), then please send me the name
of the device. I will add it to this list in order to make this clear to
others.
If you are familar with C you can also add the VID and PID of the device to
the dvb-dibusb.[hc]-files and create a patch and send it over to me or to
the linux-dvb mailing list, _after_ you have tried compiling and modprobing
it.
2.2. 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 and dib3000mb are
based.
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.
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é Smoktun and Christian Frömmel for supporting me with
hardware and listening to my problems very patient
...@@ -6,7 +6,6 @@ HOWTO: Get An Avermedia DVB-T working under Linux ...@@ -6,7 +6,6 @@ HOWTO: Get An Avermedia DVB-T working under Linux
Assumptions and Introduction Assumptions and Introduction
The Avermedia DVB-T The Avermedia DVB-T
Getting the card going Getting the card going
Getting the Firmware
Receiving DVB-T in Australia Receiving DVB-T in Australia
Known Limitations Known Limitations
Further Update Further Update
...@@ -149,28 +148,9 @@ Getting the card going ...@@ -149,28 +148,9 @@ Getting the card going
to start accessing the card with utilities such as scan, tzap, to start accessing the card with utilities such as scan, tzap,
dvbstream etc. dvbstream etc.
The current version of the frontend module sp887x.o, contains The frontend module sp887x.o, requires an external firmware.
no firmware drivers?, so the first time you open it with a DVB Please use the command "get_dvb_firmware sp887x" to download
utility the driver will try to download some initial firmware it. Then copy it to /usr/lib/hotplug/firmware.
to the card. You will need to download this firmware from the
web, or copy it from an installation of the Windows drivers
that probably came with your card, before you can use it.
The default Linux filesystem location for this firmware is
/usr/lib/hotplug/firmware/sc_main.mc .
_________________________________________________________
Getting the Firmware
As the firmware for the card is no longer contained within the
driver, it is necessary to extract it from the windows
drivers.
The Windows drivers for the Avermedia DVB-T can be obtained
from: http://babyurl.com/H3U970 and you can get an application
to extract the firmware from:
http://www.kyz.uklinux.net/cabextract.php.
_________________________________________________________
Receiving DVB-T in Australia Receiving DVB-T in Australia
......
...@@ -38,6 +38,7 @@ o Frontends drivers: ...@@ -38,6 +38,7 @@ o Frontends drivers:
Comtech DVBT-6k07 (SP5730 PLL) Comtech DVBT-6k07 (SP5730 PLL)
(NxtWave Communications NXT6000 demodulator) (NxtWave Communications NXT6000 demodulator)
- sp887x : Microtune 7202D - sp887x : Microtune 7202D
- dib3000mb : DiBcom 3000-MB Frontend
DVB-S/C/T: DVB-S/C/T:
- dst : TwinHan DST Frontend - dst : TwinHan DST Frontend
...@@ -49,7 +50,7 @@ o Cards based on the Phillips saa7146 multimedia PCI bridge chip: ...@@ -49,7 +50,7 @@ o Cards based on the Phillips saa7146 multimedia PCI bridge chip:
- "budget" cards (i.e. without hardware MPEG decoder): - "budget" cards (i.e. without hardware MPEG decoder):
- Technotrend Budget / Hauppauge WinTV-Nova PCI Cards - Technotrend Budget / Hauppauge WinTV-Nova PCI Cards
- SATELCO Multimedia PCI - SATELCO Multimedia PCI
- KNC1 DVB-S - KNC1 DVB-S, Typhoon DVB-S, Terratec Cinergy 1200 DVB-S (no CI support)
- Typhoon DVB-S budget - Typhoon DVB-S budget
- Fujitsu-Siemens Activy DVB-S budget card - Fujitsu-Siemens Activy DVB-S budget card
...@@ -66,4 +67,9 @@ o Technotrend / Hauppauge DVB USB devices: ...@@ -66,4 +67,9 @@ o Technotrend / Hauppauge DVB USB devices:
- Nova USB - Nova USB
- DEC 2000-T, 3000-S, 2540-T - DEC 2000-T, 3000-S, 2540-T
o DiBcom DVB-T USB based devices:
- Twinhan VisionPlus VisionDTV USB-Ter DVB-T Device
- KWorld V-Stream XPERT DTV - DVB-T USB
- HAMA DVB-T USB device
o Experimental support for the analog module of the Siemens DVB-C PCI card o Experimental support for the analog module of the Siemens DVB-C PCI card
...@@ -69,6 +69,8 @@ Andreas 'randy' Weinberger ...@@ -69,6 +69,8 @@ Andreas 'randy' Weinberger
Kenneth Aafløy <ke-aa@frisurf.no> Kenneth Aafløy <ke-aa@frisurf.no>
for adding support for Typhoon DVB-S budget card for adding support for Typhoon DVB-S budget card
Ernst Peinlich <e.peinlich@inode.at>
for tuning/DiSEqC support for the DEC 3000-s
(If you think you should be in this list, but you are not, drop a (If you think you should be in this list, but you are not, drop a
line to the DVB mailing list) line to the DVB mailing list)
Some DVB cards and many newer frontends require proprietary,
binary-only firmware.
The DVB drivers will be converted to use the request_firmware()
hotplug interface (see Documentation/firmware_class/).
(CONFIG_FW_LOADER)
The firmware can be loaded automatically via the hotplug manager
or manually with the steps described below.
Currently the drivers still use various different methods
to load their firmwares, so here's just a short list of the
current state:
- dvb-ttpci: driver uses firmware hotplug interface
- ttusb-budget: firmware is compiled in (dvb-ttusb-dspbootcode.h)
- sp887x: firmware is compiled in (sp887x_firm.h)
- alps_tdlb7: firmware is loaded from path specified by
"mcfile" module parameter; the binary must be
extracted from the Windows driver (Sc_main.mc).
- tda1004x: firmware is loaded from path specified in
DVB_TDA1004X_FIRMWARE_FILE kernel config
variable (default /usr/lib/hotplug/firmware/tda1004x.bin); the
firmware binary must be extracted from the windows
driver
- ttusb-dec: see "ttusb-dec.txt" for details
1) Automatic firmware loading
You need to install recent hotplug scripts if your distribution did not do it
for you already, especially the /etc/hotplug/firmware.agent.
http://linux-hotplug.sourceforge.net/ (Call /sbin/hotplug without arguments
to find out if the firmware agent is installed.)
The firmware.agent script expects firmware binaries in
/usr/lib/hotplug/firmware/. To avoid naming and versioning
conflicts we propose the following naming scheme:
/usr/lib/hotplug/firmware/dvb-{driver}-{ver}.fw for MPEG decoders etc.
/usr/lib/hotplug/firmware/dvb-fe-{driver}-{ver}.fw for frontends
{driver} name is the basename of the driver kernel module (e.g. dvb-ttpci)
{ver} is a version number/name that should change only when the
driver/firmware internal API changes (so users are free to install the
latest firmware compatible with the driver).
2) Manually loading the firmware into a driver
(currently only the dvb-ttpci / av7110 driver supports this)
Step a) Mount sysfs-filesystem.
Sysfs provides a means to export kernel data structures, their attributes,
and the linkages between them to userspace.
For detailed informations have a look at Documentation/filesystems/sysfs.txt
All you need to know at the moment is that firmware loading only works through
sysfs.
> mkdir /sys
> mount -t sysfs sysfs /sys
Step b) Exploring the firmware loading facilities
Firmware_class support is located in
/sys/class/firmware
> dir /sys/class/firmware
The "timeout" values specifies the amount of time that is waited before the
firmware upload process is cancelled. The default values is 10 seconds. If
you use a hotplug script for the firmware upload, this is sufficient. If
you want to upload the firmware by hand, however, this might be too fast.
> echo "180" > /sys/class/firmware/timeout
Step c) Getting a usable firmware file for the dvb-ttpci driver/av7110 card.
You can download the firmware files from
http://linuxtv.org/download/dvb/
Please note that in case of the dvb-ttpci driver this is *not* the "Root"
file you probably know from the 2.4 DVB releases driver.
The ttpci-firmware utility from linuxtv.org CVS can be used to
convert Dpram and Root files into a usable firmware image.
See dvb-kerrnel/scripts/ in http://linuxtv.org/cvs/.
> wget http://www.linuxtv.org/download/dvb/dvb-ttpci-01.fw
gets you the version 01 of the firmware fot the ttpci driver.
Step d) Loading the dvb-ttpci driver and loading the firmware
"modprobe" will take care that every needed module will be loaded
automatically (except the frontend driver)
> modprobe dvb-ttpci
The "modprobe" process will hang until
a) you upload the firmware or
b) the timeout occurs.
Change to another terminal and have a look at
> dir /sys/class/firmware/
total 0
drwxr-xr-x 2 root root 0 Jul 29 11:00 0000:03:05.0
-rw-r--r-- 1 root root 0 Jul 29 10:41 timeout
"0000:03:05.0" is the id for my dvb-c card. It depends on the pci slot,
so it changes if you plug the card to different slots.
You can upload the firmware like that:
> export DEVDIR=/sys/class/firmware/0000\:03\:05.0
> echo 1 > $DEVDIR/loading
> cat dvb-ttpci-01.fw > $DEVDIR/data
> echo 0 > $DEVDIR/loading
That's it. The driver should be up and running now.
#!/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 = ( "alps_tdlb7", "sp887x", "tda10045", "tda10046", "av7110", "dec2000t", "dec2540t", "dec3000s", "vp7041", "dibusb" );
# 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 "Firmware $outfile extracted successfully. Now copy it to /usr/lib/hotplug/firmware/.\n";
exit(0);
}
}
# If we get here, it wasn't found
print STDERR "Unknown component \"$cid\"\n";
syntax();
# ---------------------------------------------------------------
# Firmware-specific extraction subroutines
sub alps_tdlb7 {
my $sourcefile = "tt_Premium_217g.zip";
my $url = "http://www.technotrend.de/new/217g/$sourcefile";
my $hash = "53970ec17a538945a6d8cb608a7b3899";
my $outfile = "dvb-fe-tdlb7.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/sc_main.mc", $hash);
copy("$tmpdir/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 = "a25b579e37109af60f4a36c37893957c";
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, 24479, "$tmpdir/fwtmp");
verify("$tmpdir/fwtmp", $hash);
copy("$tmpdir/fwtmp", $outfile);
$outfile;
}
sub av7110 {
my $sourcefile = "dvb-ttpci-01.fw-261c";
my $url = "http://www.linuxtv.org/download/dvb/firmware/$sourcefile";
my $hash = "7b263de6b0b92d2347319c65adc7d4fb";
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://linuxtv.org/cgi-bin/cvsweb.cgi/dvb-kernel/firmware/dvb-dibusb-5.0.0.11.fw?rev=1.1&content-type=text/plain";
my $outfile = "dvb-dibusb-5.0.0.11.fw";
my $hash = "fa490295a527360ca16dcdf3224ca243";
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 -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);
}
...@@ -28,9 +28,9 @@ is the who-is-who of DVB development ...@@ -28,9 +28,9 @@ is the who-is-who of DVB development
"faq.txt" "faq.txt"
contains frequently asked questions and their answers. contains frequently asked questions and their answers.
"firmware.txt" "get_dvb_firmware"
contains informations for required external firmware script to download and extract firmware for those devices
files and where to get them. that require it.
"ttusb-dec.txt" "ttusb-dec.txt"
contains detailed informations about the contains detailed informations about the
...@@ -41,4 +41,11 @@ contains detailed installation instructions for the ...@@ -41,4 +41,11 @@ contains detailed installation instructions for the
various bt8xx based "budget" DVB cards various bt8xx based "budget" DVB cards
(Nebula, Pinnacle PCTV, Twinhan DST) (Nebula, Pinnacle PCTV, Twinhan DST)
"vp7041.txt"
contains detailed informations about the
Visionplus VisionDTV USB-Ter DVB-T adapter.
"udev.txt"
how to get DVB and udev up and running.
Good luck and have fun! Good luck and have fun!
...@@ -6,6 +6,8 @@ Driver Status ...@@ -6,6 +6,8 @@ Driver Status
Supported: Supported:
DEC2000-t DEC2000-t
DEC2450-t
DEC3000-s
Linux Kernels 2.4 and 2.6 Linux Kernels 2.4 and 2.6
Video Streaming Video Streaming
Audio Streaming Audio Streaming
...@@ -13,52 +15,30 @@ Supported: ...@@ -13,52 +15,30 @@ Supported:
Channel Zapping Channel Zapping
Hotplug firmware loader under 2.6 kernels Hotplug firmware loader under 2.6 kernels
In Progress:
DEC2540-t
DEC3000-s
To Do: To Do:
Tuner status information Tuner status information
DVB network interface DVB network interface
Streaming video PC->DEC Streaming video PC->DEC
Conax support for 2450-t
Getting the Firmware Getting the Firmware
-------------------- --------------------
The firmware can be found in the software update zip files on this page: To download the firmware, use the following commands:
http://www.hauppauge.de/sw_dec.htm "get_dvb_firmware dec2000t"
"get_dvb_firmware dec2540t"
The firmwares are named as follows: "get_dvb_firmware dec3000s"
DEC2000-t: STB_PC_T.bin
DEC2540-t: STB_PC_X.bin
DEC3000-s: STB_PC_S.bin
Note that firmwares since version 2.16 beta2 for the DEC2000-t give the device
the USB ID of the DEC3000-s. The driver copes with this.
Instructions follow for retrieving version 2.16 of the firmware:
wget http://hauppauge.lightpath.net/de/dec216.exe
unzip -j dec216.exe software/OEM/STB/App/Boot/STB_PC_T.bin
unzip -j dec216.exe software/OEM/STB/App/Boot/STB_PC_X.bin
unzip -j dec216.exe software/OEM/STB/App/Boot/STB_PC_S.bin
Compilation Notes for 2.4 kernels Compilation Notes for 2.4 kernels
--------------------------------- ---------------------------------
For 2.4 kernels the firmware for the DECs is compiled into the driver itself. For 2.4 kernels the firmware for the DECs is compiled into the driver itself.
The firmwares are expected to be in the build-2.4 directory at compilation
time.
mv STB_PC_T.bin build-2.4/dvb-ttusb-dec-2000t.fw Copy the three files downloaded above into the build-2.4 directory.
mv STB_PC_X.bin build-2.4/dvb-ttusb-dec-2540t.fw
mv STB_PC_S.bin build-2.4/dvb-ttusb-dec-3000s.fw
Hotplug Firmware Loading for 2.6 kernels Hotplug Firmware Loading for 2.6 kernels
---------------------------------------- ----------------------------------------
For 2.6 kernels the firmware is loaded at the point that the driver module is For 2.6 kernels the firmware is loaded at the point that the driver module is
loaded. See Documentation/dvb/firmware.txt for more information. loaded. See linux/Documentation/dvb/firmware.txt for more information.
mv STB_PC_T.bin /usr/lib/hotplug/firmware/dvb-ttusb-dec-2000t.fw Copy the three files downloaded above into the /usr/lib/hotplug/firmware directory.
mv STB_PC_X.bin /usr/lib/hotplug/firmware/dvb-ttusb-dec-2540t.fw
mv STB_PC_S.bin /usr/lib/hotplug/firmware/dvb-ttusb-dec-3000s.fw
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.
...@@ -12,20 +12,11 @@ config DVB ...@@ -12,20 +12,11 @@ config DVB
own a DVB adapter and want to use it or if you compile Linux for own a DVB adapter and want to use it or if you compile Linux for
a digital SetTopBox. a digital SetTopBox.
API specs and user tools are available from API specs and user tools are available from <http://www.linuxtv.org/>.
<http://www.linuxtv.org/>.
Please report problems regarding this driver to the LinuxDVB Please report problems regarding this driver to the LinuxDVB
mailing list. mailing list.
You might want add the following lines to your /etc/modules.conf:
alias char-major-250 dvb
alias dvb dvb-ttpci
below dvb-ttpci alps_bsru6 alps_bsrv2 \
grundig_29504-401 grundig_29504-491 \
ves1820
If unsure say N. If unsure say N.
source "drivers/media/dvb/dvb-core/Kconfig" source "drivers/media/dvb/dvb-core/Kconfig"
...@@ -40,6 +31,7 @@ comment "Supported USB Adapters" ...@@ -40,6 +31,7 @@ comment "Supported USB Adapters"
depends on DVB_CORE && USB depends on DVB_CORE && USB
source "drivers/media/dvb/ttusb-budget/Kconfig" source "drivers/media/dvb/ttusb-budget/Kconfig"
source "drivers/media/dvb/ttusb-dec/Kconfig" source "drivers/media/dvb/ttusb-dec/Kconfig"
source "drivers/media/dvb/dibusb/Kconfig"
comment "Supported FlexCopII (B2C2) Adapters" comment "Supported FlexCopII (B2C2) Adapters"
depends on DVB_CORE && PCI depends on DVB_CORE && PCI
......
...@@ -11,11 +11,16 @@ config DVB_AV7110 ...@@ -11,11 +11,16 @@ config DVB_AV7110
This driver only supports the fullfeatured cards with This driver only supports the fullfeatured cards with
onboard MPEG2 decoder. onboard MPEG2 decoder.
This driver needs an external firmware. Please use the script
"<kerneldir>/Documentation/dvb/get_dvb_firmware av7110" to
download/extract it, and then copy it to /usr/lib/hotplug/firmware.
Say Y if you own such a card and want to use it. Say Y if you own such a card and want to use it.
config DVB_AV7110_FIRMWARE config DVB_AV7110_FIRMWARE
bool "Compile AV7110 firmware into the driver" bool "Compile AV7110 firmware into the driver"
depends on DVB_AV7110 && !STANDALONE depends on DVB_AV7110 && !STANDALONE
default y if DVB_AV7110=y
help help
The AV7110 firmware is normally loaded by the firmware hotplug manager. The AV7110 firmware is normally loaded by the firmware hotplug manager.
If you want to compile the firmware into the driver you need to say If you want to compile the firmware into the driver you need to say
...@@ -33,6 +38,7 @@ config DVB_AV7110_FIRMWARE_FILE ...@@ -33,6 +38,7 @@ config DVB_AV7110_FIRMWARE_FILE
config DVB_AV7110_OSD config DVB_AV7110_OSD
bool "AV7110 OSD support" bool "AV7110 OSD support"
depends on DVB_AV7110 depends on DVB_AV7110
default y if DVB_AV7110=y || DVB_AV7110=m
help help
The AV7110 firmware provides some code to generate an OnScreenDisplay The AV7110 firmware provides some code to generate an OnScreenDisplay
on the video output. This is kind of nonstandard and not guaranteed to on the video output. This is kind of nonstandard and not guaranteed to
...@@ -91,7 +97,7 @@ config DVB_BUDGET_AV ...@@ -91,7 +97,7 @@ config DVB_BUDGET_AV
config DVB_BUDGET_PATCH config DVB_BUDGET_PATCH
tristate "AV7110 cards with Budget Patch" tristate "AV7110 cards with Budget Patch"
depends on DVB_BUDGET depends on DVB_CORE && DVB_BUDGET
select DVB_AV7110 select DVB_AV7110
help help
Support for Budget Patch (full TS) modification on Support for Budget Patch (full TS) modification on
......
...@@ -12,8 +12,10 @@ config DVB_TTUSB_DEC ...@@ -12,8 +12,10 @@ config DVB_TTUSB_DEC
only compressed MPEG data over the USB bus, so you need only compressed MPEG data over the USB bus, so you need
an external software decoder to watch TV on your computer. an external software decoder to watch TV on your computer.
The DEC devices require firmware in order to boot into a mode in This driver needs external firmware. Please use the commands
which they are slaves to the PC. See "<kerneldir>/Documentation/dvb/get_dvb_firmware dec2000t",
<file:Documentation/dvb/ttusb-dec.txt> for details. "<kerneldir>/Documentation/dvb/get_dvb_firmware dec2540t",
"<kerneldir>/Documentation/dvb/get_dvb_firmware dec3000s",
download/extract them, and then copy them to /usr/lib/hotplug/firmware.
Say Y if you own such a device and want to use it. Say Y if you own such a device and want to use it.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment