# Copyright 1999-2004 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 IUSE="" inherit linux-mod eutils DESCRIPTION="A linux (2.6-) kernel driver for Hauppauge's WinTV-PVR-usb2" HOMEPAGE="http://www.isely.net/pvrusb2.html" SRC_URI="http://www.isely.net/downloads/pvrusb2-mci-20060418.tar.bz2 http://www.eskimo.com/~roger/files/packages/pvrusb2/pvrusb2.f1.bz2 http://www.eskimo.com/~roger/files/packages/pvrusb2/pvrusb2.f2.bz2 http://www.eskimo.com/~roger/files/packages/pvrusb2/v4l-cx2341x-enc.fw.bz2 http://www.eskimo.com/~roger/files/packages/pvrusb2/v4l-cx25840.fw.bz2 http://www.eskimo.com/~roger/files/packages/pvrusb2/v4l-pvrusb2-24xxx-01.fw.bz2" # Check for the above firmwares. # If not found, instruct installer to get them by using fwextract.pl # and copying them into /usr/portage/disfiles # NOTE: The two firmware* files are stripped from a proprietory win32 driver! LICENSE="GPL-2" SLOT="0" KEYWORDS="x86" RDEPEND=">=sys-apps/hotplug-20040923" DEPEND="" S=${WORKDIR}/pvrusb2-mci-20060418 # Need something to check for non-existing tuner.ko & tveeprom.ko modules if so, # then install all the modules. Maintainer of pvrusb2 prefers users using kernel # maintained tuner & tveeprom code! # ie. src_install # CONFIG_CHECK="bttv848" then install only pvrusb2.ko MODULE_NAMES="msp3400(msp3400:) pvrusb2(pvrusb2:) saa7115(saa7115:) tuner(tuner:) tveeprom(tveeprom:)" BUILD_PARAMS="KERNEL_DIR=${KV_DIR}" pkg_setup() { if kernel_is 2 4; then "You need kernel-2.6 for this module to work" "(>=kernel-2.6.16 is recommended)" die fi echo einfo "Required kernel options as static or modules:" einfo "CONFIG_VIDEO_BT848=m" einfo "CONFIG_VIDEO_DECODER=m" einfo "CONFIG_VIDEO_TVEEPROM=m" einfo "Although still cryptic, basically enable the following:" einfo "Multimedia devices > Video for Linux" einfo "Multimedia devices > Video for Linux > BT848 Video for Linux" einfo "Multimedia devices > Video for Linux > Add support for additional video chipsets" echo einfo "It is recommended to use kernel provided ivtv code, you" einfo "can try using pvrusb2 provided ivtv modules by doing:" einfo "USE = pvrusb2-ivtv emerge pvrusb2" echo einfo "MSP3400 & CX25840 may conflict when" einfo "using the newer pvrusb2 devices." einfo "Check USB device ID's:" einfo "Old == 0x2900 New == 0x2400" einfo "Newer pvrusb2 devices requires cx25840" einfo "while the older require msp3400." einfo "(The MSP3400 code may get preference over CX25840 code" einfo "resulting in the newer pvrusb2 devices not working.)" echo einfo "You may need to clean older pvrusb2 modules from kernel tree" einfo "before emerging this package." einfo "ie. rm /lib/modules/2.6.15.5Y/pvrusb2/*" einfo "(This ebuild will not auto clean modules.)" echo CONFIG_CHECK="USB" CONFIG_CHECK="BT848" CONFIG_CHECK="VIDEO_DECODER" CONFIG_CHECK="VIDEO_TVEEPROM" linux-mod_pkg_setup } src_unpack() { unpack ${A} # If you use Mythtv, enabling interlacing will significantly # reduce cpu usage. Enter PVRUSB2="interlace" to make it so. if [[ $PVRUSB2 = "interlace" ]]; then cd ${S}/driver epatch ${FILESDIR}/interlace_enable.patch fi cd ${S} } src_compile() { unset ARCH cd ${S}/driver emake || die "Error: emake failed!" if use pvrusb2-ivtv ; then echo einfo "Building pvrusb2 provided tuner modules." echo cd ${S}/ivtv emake || die "Error: emake failed!" fi } src_install() { # Make install doesn't work # Let's do the module install manually. #cd ${S}/driver insinto "/lib/modules/${KV_FULL}/pvrusb2" doins ${S}/driver/pvrusb2.ko if use pvrusb2-ivtv ; then #cd ${S}/ivtv insinto "/lib/modules/${KV_FULL}/pvrusb2" doins ${S}/ivtv/msp3400.ko doins ${S}/ivtv/saa7115.ko doins ${S}/ivtv/tuner.ko doins ${S}/ivtv/tveeprom.ko fi insinto "/lib/firmware/" doins ${WORKDIR}/pvrusb2.f1 doins ${WORKDIR}/pvrusb2.f2 doins ${WORKDIR}/v4l-cx2341x-enc.fw doins ${WORKDIR}/v4l-cx25840.fw doins ${WORKDIR}/v4l-pvrusb2-24xxx-01.fw dodoc ${S}/LICENSE.TXT dodoc ${S}/README dohtml ${S}/doc/pvrusb2-eeprom.html dohtml ${S}/doc/pvrusb2-faq.html dohtml ${S}/doc/pvrusb2-utils.html dohtml ${S}/doc/pvrusb2.html dodir /usr/share/doc/${PF}/doc insinto /usr/share/doc/${PF}/doc dodoc ${S}/doc/README dodoc ${S}/doc/controls.txt dodoc ${S}/doc/notes.txt dodoc ${S}/doc/protocol-info.txt dodir /usr/share/doc/${PF}/misc insinto /usr/share/doc/${PF}/misc doins ${S}/misc/* dodir /usr/share/doc/${PF}/utils insinto /usr/share/doc/${PF}/utils doins ${S}/utils/* #echo "post-install pvrusb2 /sbin/modprobe pvrusb2 >& /dev/null 2>&1 || :" } pkg_postinst() { linux-mod_pkg_postinst echo einfo "1) To autoload pvrusb2, add 'pvrusb2' to" einfo " /etc/modules.autoload.d/kernel-2.6" echo einfo "2) Install sys-apps/coldplug & sys-apps/hotplug for added" einfo " automation." echo einfo "If /var/log/messages shows errors about no firmwares available," einfo "use fwfind.sh & fwextract.pl to extract your firmwares manually" einfo "$ mkdir ./tmp && cd ./tmp" einfo "$ cp /usr/share/doc/pvrusb2*/utils/fw* ./ && chmod a+x fw*" echo einfo "Simply executing fwfind.sh should find and extract your firmwares." einfo "(fwfind.sh will also find cdrom drivers within /mnt/cdrom*)" echo einfo "# cp v4l-*.fw /lib/firmwares/" einfo "# rmmod pvrusb2 && modprobe pvrusb2 && ls /dev/v4l/" echo einfo "Mythtv works well with this device." echo echo }