diff options
author | Matthias Schwarzott <zzam@gentoo.org> | 2006-11-08 19:33:50 +0000 |
---|---|---|
committer | Matthias Schwarzott <zzam@gentoo.org> | 2006-11-08 19:33:50 +0000 |
commit | 2b8ca3d354325a007d4d939924db5ef00290e871 (patch) | |
tree | b9bec7b09563696257a35e774c987e35c81f208b /media-tv/linuxtv-dvb-firmware | |
parent | Added new entries for dvb-cards. (diff) | |
download | gentoo-2-2b8ca3d354325a007d4d939924db5ef00290e871.tar.gz gentoo-2-2b8ca3d354325a007d4d939924db5ef00290e871.tar.bz2 gentoo-2-2b8ca3d354325a007d4d939924db5ef00290e871.zip |
Simplified logic a bit. Updated firmware-file-names, added new files.
(Portage version: 2.1.2_rc1-r5)
Diffstat (limited to 'media-tv/linuxtv-dvb-firmware')
4 files changed, 744 insertions, 1 deletions
diff --git a/media-tv/linuxtv-dvb-firmware/ChangeLog b/media-tv/linuxtv-dvb-firmware/ChangeLog index 8c91aa7bea44..c905fca20c94 100644 --- a/media-tv/linuxtv-dvb-firmware/ChangeLog +++ b/media-tv/linuxtv-dvb-firmware/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for media-tv/linuxtv-dvb-firmware # Copyright 1999-2006 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/media-tv/linuxtv-dvb-firmware/ChangeLog,v 1.7 2006/10/26 21:05:03 zzam Exp $ +# $Header: /var/cvsroot/gentoo-x86/media-tv/linuxtv-dvb-firmware/ChangeLog,v 1.8 2006/11/08 19:33:50 zzam Exp $ + +*linuxtv-dvb-firmware-2006.11.08 (08 Nov 2006) + + 08 Nov 2006; Matthias Schwarzott <zzam@gentoo.org> + +files/get_dvb_firmware-2006.11.08, + +linuxtv-dvb-firmware-2006.11.08.ebuild: + Simplified logic a bit. Updated firmware-file-names, added new files. 26 Oct 2006; Matthias Schwarzott <zzam@gentoo.org> linuxtv-dvb-firmware-1.ebuild: diff --git a/media-tv/linuxtv-dvb-firmware/files/digest-linuxtv-dvb-firmware-2006.11.08 b/media-tv/linuxtv-dvb-firmware/files/digest-linuxtv-dvb-firmware-2006.11.08 new file mode 100644 index 000000000000..54b6c1124acf --- /dev/null +++ b/media-tv/linuxtv-dvb-firmware/files/digest-linuxtv-dvb-firmware-2006.11.08 @@ -0,0 +1,33 @@ +MD5 292ada6f90218a6bace6b72fe22eeec6 AVerTVHD_MCE_A180_Drv_v1.2.2.16.zip 156028 +RMD160 59f0b35f04d0030b39cde9c1a2e04cf060670769 AVerTVHD_MCE_A180_Drv_v1.2.2.16.zip 156028 +SHA256 7f65564416b12bc34d0d2e49b61a11c557e0f48a49064a8c880423606d43aa3f AVerTVHD_MCE_A180_Drv_v1.2.2.16.zip 156028 +MD5 28db715d5e7a11bf85dd0240a42758f4 Dvbt1.3.57.6.zip 12174738 +RMD160 f06ea9bcf8e362e26b0387edcaba0d171fb3fc92 Dvbt1.3.57.6.zip 12174738 +SHA256 a2688def053bc3e01103d1894a1027c7cf896d40b238c59ad7f6da1c72e74903 Dvbt1.3.57.6.zip 12174738 +MD5 bda54d50a8dd9daabf30f4ee06c64f97 Technisat_DVB-PC_4_4_COMPACT.zip 20589158 +RMD160 a53dd1eb6cc997aa4f5a0e0da6b8510f064f535f Technisat_DVB-PC_4_4_COMPACT.zip 20589158 +SHA256 11751b445f13f5b7e7ce15349d2f086c271096927c4d974008a362f714314175 Technisat_DVB-PC_4_4_COMPACT.zip 20589158 +MD5 b96dde610256d896e8e1b37ae577796d dec217g.exe 16371951 +RMD160 34ffa441adba1c34a2fafe067758f12782e54662 dec217g.exe 16371951 +SHA256 fd20902bcc3178a26b5a27fe88adcdfce888daa8d2206b67b13e5f3a3973dc1c dec217g.exe 16371951 +MD5 f7657f81708578b4e4620f5348c3905a dvb-fe-bcm3510-01.fw 2285 +RMD160 894ecf8ddcf0bd7b34caed81053a18233a82f9f0 dvb-fe-bcm3510-01.fw 2285 +SHA256 978ece002a3e1f5eb760f6ca48496e05da00b7aa76e0f6f2cb108bde2ea14f51 dvb-fe-bcm3510-01.fw 2285 +MD5 abdd8102bb5b09314985a8ac9eaf8d83 dvb-firmwares-1.tar.bz2 182356 +RMD160 2e70e8111e0d8889f5cd017dfa1c8d2b635f61a2 dvb-firmwares-1.tar.bz2 182356 +SHA256 11772d539e5605e92f51a1edc82382c19808dea2bb9f0b425efad354e0d9bd52 dvb-firmwares-1.tar.bz2 182356 +MD5 658397cb9eba9101af9031302671f49d dvb-usb-bluebird-01.fw 9025 +RMD160 878f8f820993dbc1f03de43145a51e49e55e0733 dvb-usb-bluebird-01.fw 9025 +SHA256 1d9d8c5a320a0a76c476e08bd212291144439121d4147dbf8d48822b576306fc dvb-usb-bluebird-01.fw 9025 +MD5 4249787aaca0fbe8b82df91db4c7dc0f dvb-usb-wt220u-02.fw 8480 +RMD160 a291280a67a04bae78c83763150d2d81aef0bd38 dvb-usb-wt220u-02.fw 8480 +SHA256 ed8cd2ae6b5ad540fd4a14de9ccaa10f662781961f44cfe58b623679a5f508df dvb-usb-wt220u-02.fw 8480 +MD5 381add05f30c95d56edd23a19467372c dvb-usb-wt220u-fc03.fw 12902 +RMD160 33dd26ffe5129ce56a20d28762d7e12e04882082 dvb-usb-wt220u-fc03.fw 12902 +SHA256 838044a2f98736fe5b1266598a36eed4b5c9aa845e65c5d1d4054b8b72f808dc dvb-usb-wt220u-fc03.fw 12902 +MD5 f296fb50e2de3d5929b231994395cd24 tt_Premium_217g.zip 11348671 +RMD160 b7e63f5f96ab1aba1cfad3647a76b81952dcf2af tt_Premium_217g.zip 11348671 +SHA256 cfe84a039c20473ba41c2e3da165c668a0e227f197ea0e272abc253c5f9f5a83 tt_Premium_217g.zip 11348671 +MD5 bf511c80f48b49fa93c53ee6921303b5 tt_budget_217g.zip 12656253 +RMD160 41458fe742df0526847681ca8265bc485edba922 tt_budget_217g.zip 12656253 +SHA256 0e6e00f34273bd034370ee274d02eaa318bd6bb11c01b19d5b1a8e9b20ed5479 tt_budget_217g.zip 12656253 diff --git a/media-tv/linuxtv-dvb-firmware/files/get_dvb_firmware-2006.11.08 b/media-tv/linuxtv-dvb-firmware/files/get_dvb_firmware-2006.11.08 new file mode 100644 index 000000000000..4820366b6ae8 --- /dev/null +++ b/media-tv/linuxtv-dvb-firmware/files/get_dvb_firmware-2006.11.08 @@ -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); +} diff --git a/media-tv/linuxtv-dvb-firmware/linuxtv-dvb-firmware-2006.11.08.ebuild b/media-tv/linuxtv-dvb-firmware/linuxtv-dvb-firmware-2006.11.08.ebuild new file mode 100644 index 000000000000..fc1ab927a6a3 --- /dev/null +++ b/media-tv/linuxtv-dvb-firmware/linuxtv-dvb-firmware-2006.11.08.ebuild @@ -0,0 +1,253 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/media-tv/linuxtv-dvb-firmware/linuxtv-dvb-firmware-2006.11.08.ebuild,v 1.1 2006/11/08 19:33:50 zzam Exp $ + +DESCRIPTION="Firmware files needed for operation of some dvb-devices" +HOMEPAGE="http://www.linuxtv.org" + +LICENSE="as-is" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="" + +DEPEND="dvb_cards_sp887x? ( >=app-arch/unshield-0.4 )" + +RDEPEND="" + +RESTRICT="nomirror" + +S="${WORKDIR}" + + +# Files which can be fetched from linuxtv.org +PACKET_NAME=dvb-firmwares-1.tar.bz2 +PACKET_SRC_URI="http://www.linuxtv.org/downloads/firmware/${PACKET_NAME}" +get_dvb_firmware="${FILESDIR}/get_dvb_firmware-${PV}" + +FW_USE_FLAGS=( +# packet + "or51132" + "or51132" + "or51211" + "usb-a800" + "dibusb-usb1" + "dibusb-usb2" + "usb-dtt200u" + "usb-umt" + "usb-vp702x" + "usb-vp7045" + "usb-wt220u" + "ttpci" +# own URL + "bcm3510" + "usb-wt220u" + "usb-wt220u" +# get_dvb_firmware + "sp8870" + "sp887x" + "tda1004x" + "tda1004x" + "ttusb-dec" + "ttusb-dec" + "ttusb-dec" + "nxt2002" + "nxt200x" + "usb-bluebird" +) + +FW_FILES=( +# packet + "dvb-fe-or51132-qam.fw" + "dvb-fe-or51132-vsb.fw" + "dvb-fe-or51211.fw" + "dvb-usb-avertv-a800-02.fw" + "dvb-dibusb-5.0.0.11.fw" + "dvb-usb-dibusb-6.0.0.8.fw" + "dvb-usb-dtt200u-01.fw" + "dvb-usb-umt-010-02.fw" + "dvb-usb-vp702x-01.fw" + "dvb-usb-vp7045-01.fw" + "dvb-usb-wt220u-01.fw" + "dvb-ttpci-01.fw" +# own URL + "dvb-fe-bcm3510-01.fw" + "dvb-usb-wt220u-02.fw" + "dvb-usb-wt220u-fc03.fw" +# get_dvb_firmware + "dvb-fe-sp8870.fw" + "dvb-fe-sp887x.fw" + "dvb-fe-tda10045.fw" + "dvb-fe-tda10046.fw" + "dvb-ttusb-dec-2000t.fw" + "dvb-ttusb-dec-2540t.fw" + "dvb-ttusb-dec-3000s.fw" + "dvb-fe-nxt2002.fw" + "dvb-fe-nxt2004.fw" + "dvb-usb-bluebird-01.fw" +) + + + +FW_GET_PARAMETER=( +# packet + "-" + "-" + "-" + "-" + "-" + "-" + "-" + "-" + "-" + "-" + "-" + "-" +# own URL + "-" + "-" + "-" +# get_dvb_firmware + "sp8870" + "sp887x" + "tda10045" + "tda10046" + "dec2000t" + "dec2540t" + "dec3000s" + "nxt2002" + "nxt2004" + "-" +) + +FW_URLS=( +# packet + "${PACKET_SRC_URI}" + "${PACKET_SRC_URI}" + "${PACKET_SRC_URI}" + "${PACKET_SRC_URI}" + "${PACKET_SRC_URI}" + "${PACKET_SRC_URI}" + "${PACKET_SRC_URI}" + "${PACKET_SRC_URI}" + "${PACKET_SRC_URI}" + "${PACKET_SRC_URI}" + "${PACKET_SRC_URI}" + "${PACKET_SRC_URI}" +# own URL + "http://www.linuxtv.org/downloads/firmware/dvb-fe-bcm3510-01.fw" + "http://www.linuxtv.org/downloads/firmware/dvb-usb-wt220u-02.fw" + "http://home.arcor.de/efocht/dvb-usb-wt220u-fc03.fw" +# get_dvb_firmware + "http://www.technotrend.de/new/217g/tt_Premium_217g.zip" + "http://www.avermedia.com/software/Dvbt1.3.57.6.zip" + "http://www.technotrend.de/new/217g/tt_budget_217g.zip" + "http://www.technotrend.de/new/217g/tt_budget_217g.zip" + "http://hauppauge.lightpath.net/de/dec217g.exe" + "http://hauppauge.lightpath.net/de/dec217g.exe" + "http://hauppauge.lightpath.net/de/dec217g.exe" + "http://www.bbti.us/download/windows/Technisat_DVB-PC_4_4_COMPACT.zip" + "http://www.aver.com/support/Drivers/AVerTVHD_MCE_A180_Drv_v1.2.2.16.zip" + "http://www.linuxtv.org/download/dvb/firmware/dvb-usb-bluebird-01.fw" +) + + +SRC_URI="" +NEGATIVE_USE_FLAGS="" +ALL_URLS="" +NUMBER_OF_USE_FLAGS=0 + +for ((CARD=0; CARD < ${#FW_USE_FLAGS[*]}; CARD++)) do + URL="${FW_URLS[CARD]}" + + if [[ -z ${URL} ]]; then + echo "missing url for ${FW_USE_FLAGS[CARD]}" + continue + fi + SRC_URI="${SRC_URI} dvb_cards_${FW_USE_FLAGS[CARD]}? ( ${URL} )" + + IUSE="${IUSE} dvb_cards_${FW_USE_FLAGS[CARD]}" + NEGATIVE_USE_FLAGS="${NEGATIVE_USE_FLAGS} !dvb_cards_${FW_USE_FLAGS[CARD]}? ( " + NUMBER_OF_USE_FLAGS=$((NUMBER_OF_USE_FLAGS+1)) + ALL_URLS="${ALL_URLS} ${URL}" + + GET_PARAM="${FW_GET_PARAMETER[CARD]}" + if [[ ${GET_PARAM} != "-" ]]; then + # all with get_dvb_firmware need unzip + DEPEND="${DEPEND} dvb_cards_${FW_USE_FLAGS[CARD]}? ( app-arch/unzip )" + fi +done + + +SRC_URI="${SRC_URI} ${NEGATIVE_USE_FLAGS} ${ALL_URLS}" + +# add closing brackets for negative use flags +for ((NR=0; NR < ${NUMBER_OF_USE_FLAGS}; NR++)) do + SRC_URI="${SRC_URI} )" +done + + +install_dvb_card() { + [[ -z ${DVB_CARDS} ]] || use dvb_cards_${1} +} + +pkg_setup() { + #echo SRC_URI=${SRC_URI} + #echo DEPEND=${DEPEND} + if [[ -z ${DVB_CARDS} ]]; then + einfo "DVB_CARDS is not set, installing all available firmware files." + fi + einfo "List of possible card-names to use for DVB_CARDS:" + echo ${FW_USE_FLAGS[*]}| tr ' ' '\n' | sort | uniq | fmt \ + | while read line; do + einfo " ${line}" + done + einfo "If you need another firmware file and want it included create a bug" + einfo "at bugs.gentoo.org." +} + +src_unpack() { + # link all downloaded files to ${S} + for f in ${A}; do + [[ -L ${f} ]] || ln -s ${DISTDIR}/${f} ${f} + done + + # unpack firmware-packet + if hasq ${PACKET_NAME} ${A}; then + unpack ${PACKET_NAME} + # this file has renamed + mv dvb-usb-dibusb-5.0.0.11.fw dvb-dibusb-5.0.0.11.fw + fi + + + # Adjust temp-dir of get_dvb_firmware + sed ${FILESDIR}/get_dvb_firmware-${PV} \ + -e "s#/tmp#${T}#g" \ + > get_dvb_firmware + chmod a+x get_dvb_firmware + + # extract the firmware-files + for ((CARD=0; CARD < ${#FW_USE_FLAGS[*]}; CARD++)) do + install_dvb_card ${FW_USE_FLAGS[CARD]} || continue + + GET_PARAM=${FW_GET_PARAMETER[CARD]} + if [[ ${GET_PARAM} != "-" ]]; then + [[ -f ${FW_FILES[CARD]} ]] && ewarn "Already existing: ${FW_FILES[CARD]}" + einfo "Extracting ${FW_FILES[CARD]}" + ./get_dvb_firmware ${GET_PARAM} + fi + done +} + +src_install() { + cd ${S} + insinto /lib/firmware + + for ((CARD=0; CARD < ${#FW_USE_FLAGS[*]}; CARD++)) do + if install_dvb_card ${FW_USE_FLAGS[CARD]}; then + local FILE=${FW_FILES[CARD]} + [[ -f ${FILE} ]] || die "File ${FILE} does not exist!" + doins ${FILE} + fi + done +} + |