Le Mini-HOWTO BTTV Par Eric Sandeen, eric_sandeen@bigfoot.com v0.3, Février 2000 _________________________________________________________________ _Ce document décrit le matériel, les logiciels, et les procédures nécessaires à l'utilisation d'une carte d'acquisition vidéo ou d'une carte tuner TV basée sur les puces bt8*8 sous Linux._ _________________________________________________________________ 1. Introduction La possibilité de capturer et de visionner des sources vidéo est une des fonctionnalités multimédia les plus intéressantes de Linux. Beaucoup de périphériques vidéo différents sont supportés par l'intermédiaire de l'API video4linux ( http://roadrunner.swansea.uk.linux.org/v4l.shtml), ceci inclut plusieurs cartes tuner TV basées sur les puces bt848 et bt878 de Conexant. Ce document explique comment utiliser ces cartes sur un système Linux. 1.1 Copyright de ce document Ce HOWTO est sous le copyright 1999 Eric Sandeen. A moins que cela ne soit explicitement établi, les documents Linux HOWTO sont la propriété de leurs auteurs respectifs. Les documents Linux HOWTO peuvent être reproduits et distribués en entier ou par partie, sur n'importe quel médium physique ou électronique, tant que la notice du copyright est conservée sur toutes les copies. La redistribution commerciale est autorisée et encouragée; néanmoins, l'auteur aimerait être informé de ce genre de distribution. Toute traduction, travail dérivé, ou travail collectif incluant n'importe quel document Linux HOWTO doit être couvert par cette notice du copyright. Cela étant, vous ne pouvez produire un travail dérivé de ce document et imposer des restrictions supplémentaires sur sa distribution. Des exceptions à ces règles peuvent être accordées sous certaines conditions; s'il vous plaît contactez le coordinateur des Linux HOWTO à l'adresse donnée plus bas. Pour faire court, nous voulons promouvoir la diffusion de cette information à travers autant de canaux que possible. Néanmoins, nous voulons conserver le copyright sur les documents HOWTO, et aimerions être informé de tout projet de redistribution de ces HOWTO. Si vous avez des questions, veuillez contacter Tim Bynum, le coordinateur des HOWTO Linux, à _linux-howto@metalab.unc.edu_ via email. 1.2 Où trouver ce document La version la plus récente de ce document peut-être obtenue du Linux Documentation Project http://metalab.unc.edu/LDP/. 1.3 Remerciements Merci à Ralph Metzler et Marcus Metzler pour avoir codé les pilotes bttv originels. Merci aussi à Alan Cox pour avoir créé l'API (Architecture de programmation) Video4linux, Gerd Knorr pour son travail sur les cartes radio, pour les versions ultérieures des pilotes bttv et xawtv, et toutes les personnes contribuant à Linux pour le support de ces cartes. Merci à William Burrow, qui a aussi écrit un HOWTO pour BTTV (Ce que j'ai appris _après_ avoir écrit ce document...) J'ai amélioré ce guide, merci pour son travail. En écrivant ce HOWTO je me suis très fortement inspiré de la documentation de bttv et xawtv. 1.4 Notification Utilisez l'information de ce document à vos riques et périls. Je décline toute responsabilité quand au le contenu de ce document. L'utilisation des concepts, exemples, et/ou autre contenu de ce document est entièrement à votre propre risque. Tous les copyrights sont détenus par leurs propriétaires, à moins que cela ne soit explicitement spécifié. L'utilisation de termes dans ce document ne doit pas être perçu comme affectant la validité d'aucune marque déposée ou marque de service. La nomination de produit ou marque ne doit pas être perçue comme une recommandation particulière de ceux-ci. Vous êtes fortement invité à faire une sauvegarde de votre système avant toute installation majeure et sauvegarder à intervalles réguliers. 2. Matériel nécessaire Extrait du README de bttv: Bttv est un pilote de périphérique pour cartes d'acquisition video utilisant la famille de décodeur video Bt848 de Conexant ( http://www.conexant.com), parmi lesquelles figurent le Bt848, le Bt848A, le Bt849, le Bt878 et le Bt879. Les seules différences majeures entre ces cartes, de différents fabricants, sont les types de tuner et les composants supplémentaires sur la carte. E.g., certaines cartes de Hauppauge possèdent un décodeur Videotext additionnel et/ou une puce de décodage du son. Seuls certains composants additionnels sont supportés par bttv. Ansi, le type (Composite ou S-Video) et le nombre d'entrées diffère. Les cartes suivantes devraient fonctionner : * _AverMedia TV98_ + http://www.aver.com/products.html * _AVerMedia TV-Phone_ + http://www.aver.com/lite/products/avertvphone.html * _Diamond DTV2000_ + http://www.diamondmm.com/products/current/dtv-2000.cfm * _Hauppauge Win/TV pci_ (and other Hauppauge cards) + http://www.hauppauge.com/ * _IDS Imaging FALCON_ + http://www.ids-imaging.de/ * _Lifeview Flyvideo II_ + http://www.lifeview.de/lifeview/html/produkte.htm#karte * _Matrix Vision MV-Delta_ + http://www.matrix-vision.de/ * _miroVIDEO PCTV_ + http://www.pinnaclesys.com/ * _Osprey-100_ + http://www.mmac.com/products/osprey/osprey100.html * _STB TV PCI_ + http://www.stb.com/products/multimedia/tvpci/tvpci.html * _Terratec TERRA TV+_ + http://www.terratec.de/produkte/terratv/terratv_info.htm * _Videologic Captivator PCI_ + http://www.videologic.com/Productinfo/capt_pci.htm Si vous connaissez d'autres cartes qui fonctionnent, veuillez m'écrire et je les ajouterai à la prochaine révision de ce document. 3. Logiciels nécessaires Pour utiliser ces cartes tuner TV sous linux, vous aurez besoin des pilotes du noyau appropriés. Les pilotes bttv sont distribués avec le noyau depuis la version 2.2.0. Sinon, vous pouvez obtenir la dernière version des pilotes et l'utiliser avec le noyau 2.0.35 ou plus récent. Néanmoins, il n'est pas garanti que cela fonctionne avec la vieille série de noyaux 2.0.x. Le paquetage mis à jour bttv est disponible à http://www.thp.uni-koeln.de/~rjkm/linux/bttv.html et une version encore plus récente est disponible chez Gerd Knorr à http://www.in-berlin.de/User/kraxel/xawtv.html Ces paquetages incluent aussi le support de nouvelles puces audio, dont le TEA6300, le TDA8425, et le DPL3518. Si vous êtes nouveau dans le monde des pilotes bttv, je vous suggère de commencer avec la version incluse avec le dernier noyau. Si vous rencontrez des problèmes avec ceux-ci ou s'ils ne supportent pas votre carte, alors risquez vous à mettre à jour les pilotes de la série 0.6 sur le site cité plus haut. Si vous vous sentez vraiment aventurier, vous pouvez essayer la série de pilote 0.7 de Gerd Knorr's, destinée à être incorporés dans le noyau 2.4. La série 0.7 est aussi disponible à http://www.in-berlin.de/User/kraxel/xawtv.html. Ce document est principalement basé sur les pilotes du noyau 2.2.14, avec quelques mentions des fonctionnalités disponibles dans la version mise à jour des pilotes de la série 0.6. La série 0.7 n'est pas actuellement couverte car en cours de développement au moment de la rédaction de ce document. 4. Configuration du système 4.1 Installation matérielle _(Merci à William Burrow pour cette section.)_ Si vous avez peur d'ouvrir le boîtier de votre ordinateur, lisez préalablement en entier ce HOWTO et prenez des notes à propos de la carte, tel que le type de son tuner, le nombre de circuits intégrés, les fréquences des cristaux etc. Ensuite demandez à quelqu'un de compétent de vous installer votre carte. Autrement, ouvrez le boîtier et installez la carte dans un connecteur disponible. Choisissez une carte conforme aux spécifications PCI 2.1 capable d'opérer en tant que périphérique maître (bus mastering) sur le bus PCI, au cas où votre carte mère serait sensible sur ce point (référez-vous à son manuel). Vous avez besoin de cela pour utiliser le mode overlay. Pour le son, il y a deux manière différentes de connecter votre carte d'acquisition et votre carte son. La première solution est interne. Connectez le câble audio de votre CD-ROM vers l'entrée sonore de votre carte vidéo et de la sortie de la carte vidéo vers l'entrée audio CD-ROM ou Tuner de votre carte son. L'autre manière est de connecter le jack 1/8'' externe de la carte video vers l'entrée 1/8'' "line in" de la carte son. Vous pouvez aussi brancher des enceintes amplifiées sur la sortie audio de votre carte d'acquisition si vous n'avez pas de carte son ou ne voulez pas passer par la carte son (quelques cartes récentes basées sur un bt878 n'ont pas du tout de connecteur sonore, car elles envoient les données audio digitales au travers du bus PCI. Il n'y pas de support pour ces cartes à ce jour. Une source vidéo serait aussi utile, surtout pour déterminer si la carte fonctionne ou pas. Beaucoup de cartes comportent une entrée vidéo composite, S-Vidéo et, si la carte est équipée d'un tuner, RF. Il y a un connecteur séparé pour chacune de ces entrées. 4.2 Configuration du noyau Votre noyau devra être correctement configuré pour supporter votre carte. La plupart des distributions récentes sont livrées avec les modules nécessaires déjà compilés, donc si vous pouvez trouver les modules videodev.o, bttv.o et tuner.o sous /lib/modules/2.x.x/misc, vous devriez être prêt. Sinon, vous allez devoir recompiler votre noyau avec CONFIG_VIDEO_DEV et CONFIG_VIDEO_BT848 sélectionnés, de préférence comme modules. Voir le HOWTO du Kernel Linux ( http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html) pour plus de détails sur la manière de recompiler votre noyau. 4.3 Utilisation du paquetage 0.6.x mis à jour Si vous voulez utiliser le paquetage 0.6.x mis à jour, vous devriez d'abord télécharger l'archive depuis l'un des sites mentionnés plus haut. Décompactez le avec tar -xvzf bttv-0.6.x.tar.gz et entrez dans le répertoire nouvellement créé. su pour devenir root, et tapez make dans le répertoire principal pour construire les pilotes. (Vous pouvez en toute sécurité ignorer les informations dans le fichier INSTALL concernant l'édition des makefiles, puisque nous passerons ces informations au pilote comme paramètres des modules.) Ensuite tapez make install pour les installer. Finalement, lancez /sbin/depmod -a pour mettre à jour les informations concernant les dépendances des modules. 4.4 Fichiers spéciaux dans /dev Ensuite, vous pourriez avoir besoin de créer les fichiers de caractères spéciaux dans le répertoire /dev. Tapez ls /dev/video*; ls /dev/radio* pour savoir si ces périphériques existent déjà. Sinon, vous allez devoir les fabriquer. Tout ces fichiers possèdent 81 comme numéro de périphérique majeurs, les numéros de périphérique mineurs sont spécifiques aux périphériques ainsi que de multiples cas de ces fichiers. Voir l'API Video4Linux ( http://roadrunner.swansea.uk.linux.org/v4lapi.shtml) pour les détails concernant la programmation. Il y a un script MAKEDEV dans le répertoire driver du paquetage des pilotes bttv qui créera quatre périphériques vidéo. Vous pouvez aussi le faire vous même de manière assez aisée si vous n'avez qu'une seule carte d'acquisition vidéo. En tant que root, tapez: mknod /dev/video0 c 81 0 chmod 666 /dev/video0 ln -s /dev/video0 /dev/video mknod /dev/radio0 c 81 64 chmod 666 /dev/radio0 ln -s /dev/radio0 /dev/radio Il y a aussi les périphériques Videotext et VBI qui peuvent être créés si vous avez une application qui les réclame. (Actuellement, elles sont peu nombreuses.) Tapez: mknod /dev/vtx0 c 81 192 chmod 666 /dev/vtx0 ln -s /dev/vtx0 /dev/vtx mknod /dev/vbi0 c 81 224 chmod 666 /dev/vbi0 ln -s /dev/vbi0 /dev/vbi 4.5 Chargement des Modules Les pilotes bttv fournissent beaucoup de modules différents, avec de nombreuses options différentes, comme décrit en appendice dans ce document. Avec autant de modules et d'options, vous devriez faire cela à la main jusqu'à ce que tout fonctionne. Si par malchance cela provoquait un plantage de votre machine, vous pourriez taper sync; sleep 1; sync pour chasser toutes les saletés du cache du disque avant de poursuivre. Ensuite utilisez la commande insmod en tant que root, pour essayer de charger les modules. Les deux premiers sont simples car ils ne nécessitent généralement pas d'option : insmod videodev insmod i2c Vous êtes maintenant prêt à charger le module bttv lui-même : modprobe bttv Par défaut, le module bttv essaie de détecter le type de votre carte. Regarder dans /var/log/messages pour voir ce qu'il trouve. s'il ne la détecte pas proprement, vous pouvez ajouter l'option card=n à la fin de la commande précédente pour forcer le type de carte, avec _n_ choisi parmi la liste suivante. (Les types de 0 à 19 sont fournis dans la série de pilote du noyau, bttv-0.6.4h contient le support pour les types de 20 à 27.) Vous pouvez aussi ajouter l'option radio=1 Si votre carte possède un tuner FM. _________________________________________________________________ card=n card type 0: Auto-Detect 1: Miro 2: Hauppauge (old bt848 boards) 3: STB 4: Intel 5: Diamond 6: AVerMedia 7: MATRIX Vision MV-Delta 8: FlyVideo 9: TurboTV 10: Hauppauge (new bt878 boards) 11: MIRO PCTV pro 12: Terratec/Vobis TV-Boostar 13: Newer Hauppauge WinCam (bt878) 14: MAXI TV Video PCI2 15: Terratec TerraTV+ 16: Aimslab VHX 17: PXC200 18: AVermedia98 19: FlyVideo98 (newer FlyVideo cards) 20: Zoltrix TV-Max 21: iProTV 22: ADS Technologies Channel Surfer TV 23: Pixelview PlayTV (bt878) 24: Leadtek WinView 601 25: AVEC Intercapture 26: LifeView FlyKit w/o Tuner 27: Intel Create and Share PCI _________________________________________________________________ Ensuite, chargez le module tuner, avec modprobe tuner type=_n_ Vous aurez probablement à plonger dans votre boîtier pour voir quel tuner votre carte possède. Certaines cartes (Miro et Hauppauge) permettent la détection automatique du tuner, mais vous aurez peut-être besoin de le spécifier. Le tuner devrait être marqué avec le nom du fabricant, et vous pouvez jeter un oeil aux cristaux (petites boites d'aluminium) sur la carte pour voir si vous possédez un tuner NTSC ou PAL. Pour le PAL, le cristal est marqué 28.xxxMHz (où xxx sont trois chiffres). Pour NTSC, le boîtier devrait indiquer 35.xxxMHz. Une fois que vous avez identifié votre tuner, sélectionnez la valeur de _n_ parmi la liste suivante (Les types 8 et 9 sont seulement inclus avec bttv-0.6.4h): _________________________________________________________________ type=n type of the tuner chip. n as follows: 0: Temic PAL tuner 1: Philips PAL_I tuner 2: Philips NTSC tuner 3: Philips SECAM tuner 4: no tuner 5: Philips PAL tuner 6: Temic NTSC tuner 7: Temic PAL tuner 8: Alps TSBH1 NTSC tuner 9: Alps TSBE1 PAL tuner _________________________________________________________________ Enfin, insérez tous les modules sonores dont vous pouvez avoir besoin. Encore unhe fois, vous devrez probablement regarder attentivement la carte pour déterminer ce dont vous avez besoin. Notez que les pilotes pour les puces TEA6300, TDA8425, TDA9855, and DPL3518 sont seulement inclus dans la série 0.6.4h, et ne sont pas inclus avec les pilotes du noyau courant (2.2.14). modprobe msp3400 ou tea3600 ou tda8425 ou tda9855 ou dpl3518 (Voir l'appendice pour les détails et les options) Lancez votre programme video4linux favori, et voyez si cela fonctionne. Si vous ne pouvez pas changer de canal, vérifiez que vous avez inséré le bon module tuner. Si vous n'entendez aucun son, vérifiez deux fois le module sonore, et vérifiez que le canal n'est pas en sourdine, si vous passez par la carte son. 4.6 Automatisation du processus Maintenant que vous connaissez les modules dont vous avez besoin et leurs options, vous pouvez automatiser le processus en écrivant ces informations dans le fichier /etc/conf.modules. A partir de ce maintenant, lancer une application qui nécessite ces pilotes entraînera leur chargement automatique. J'utilise le fichier suivant: _________________________________________________________________ # TV alias char-major-81 bttv pre-install bttv modprobe -k tuner; modprobe -k msp3400 options bttv radio=1 card=3 options tuner type=2 _________________________________________________________________ Faîtes attention de bien l'adapter pour qu'il reflète vos propres modules et options pour votre carte. (Lancer un /sbin/depmod -a pour faire en sorte que les informations de dépendance soient à jour.) 5. Applications Maintenant que votre noyau et vos périphériques sont configurés et que vos modules sont insérés, vous aurez aussi besoin d'applications pour visionner ou capturer les images de votre carte. Il y en a beaucoup de disponibles : * _bttvgrab_ - Fournit une haute qualité de capture adaptée à l'enregistrement video + http://moes.pmnet.uni-oldenburg.de/bttvgrab/ * _Gnome-o-Vision_ - Un visionneur pour l'environnement de bureau Gnome (actuellement en cours de développement dans le CVS de Gnome) + http://cvs.gnome.org/lxr/source/gnomovision/ * _kwintv_ - Un visionneur TV basé sur Qt pour l'environnement KDE + http://www.mathematik.uni-kl.de/~wenk/kwintv/ * _wmtune_ - Une applet tuner radio pour window maker pour les cartes TV/radio basées sur bttv + http://home.pages.de/~fionn/archive/wmtune-1.0_bttv.tar.bz2 * _wmtv_ - WindowMaker TV dock.app + http://www.student.uwa.edu.au/~wliang/ * _XawTV_ - Une application TV et quelques utilitaires + http://www.in-berlin.de/User/kraxel/xawtv.html * _XtTV_ - Un programme TV/Video simple pour Linux/X Windows + http://home.pages.de/~rasca/xttv/ Il y a aussi un pilote disponible pour la carte de contrôle à distance pour le FlyVideo98 à http://wolf.ifj.edu.pl/~jochym/FlyVideo98/ _Lisez la documentation_ pour chaque application que vous voulez d'utiliser. Beaucoup d'entre elles réclament l'édition de fichiers de configuration détaillés avant que l'application ne fonctionne correctement! A cause du grand nombre de cartes différentes disponibles, vous _devez_ prendre le temps de lire la documentation de ces cartes, car les préréglages de l'application sont susceptibles de _ne pas_ fonctionner pour votre carte. 6. Appendice - Arguments pour tous les modules Les items précédés d'une "*" sont seulement disponibles dans la série 0.6.4h. _________________________________________________________________ videodev.o C'est le module de base de video4linux, tous les pilotes vidéo (y compr it bttv) s'enregistrent ici. i2c.o Module i2c générique. Il fait la plupart de la gestion du bus i2c, tous les autres modules l'utilisent (sauf videodev.o). Arguments pour insmod: scan=1 scanne le bus pour trouver les périphériques i2 c verbose=0 désactive le mode verbeux i2c_debug=1 pour le débogage, cela consigne tout le traffic (logiciel) du bus i2c dans la syslog bttv.o Pilote bt848 (puce d'acquisition). Arguments pour insmod: remap=adr reloge l'adresse mémoire du Bt848 à adr<<20 vidmem=base adresse>>20 du frame buffer (de la carte graphi que) triton1=0/1 pour la compatibilité Triton1 Triton1 est reconnu automatiquement mais cela peut aussi aider avec d'autre puce pll=0/1/2 réglages pll 0: ne pas utiliser de PLL 1: cristal 28 MHz installé 2: cristal 35 MHz installé radio=0/1 support des cartes radio card=n type de carte 0: Auto-Detect 1: Miro 2: Hauppauge (old bt848 boards) 3: STB 4: Intel 5: Diamond 6: AVerMedia 7: MATRIX Vision MV-Delta 8: FlyVideo 9: TurboTV 10: Hauppauge (new bt878 boards) 11: MIRO PCTV pro 12: Terratec/Vobis TV-Boostar 13: Newer Hauppauge WinCam (bt878) 14: MAXI TV Video PCI2 15: Terratec TerraTV+ 16: Aimslab VHX 17: PXC200 18: AVermedia98 19: FlyVideo98 (newer FlyVideo cards) *20: Zoltrix TV-Max *21: iProTV *22: ADS Technologies Channel Surfer TV *23: Pixelview PlayTV (bt878) *24: Leadtek WinView 601 *25: AVEC Intercapture *26: LifeView FlyKit w/o Tuner *27: Intel Create and Share PCI remap, card, radio et pll acceptent jusqu'à quatre arguments séparés pa r des virgules (pour plusieurs cartes). Les arguments CARD et PLL définis à partir du Makefile sont utilisés comme arguments par défaut. msp3400.o Pilote pour le processeur sonore msp34xx. Si vous avez une carte stéréo, vous devriez probablement charger ce module. Arguments pour insmod: debug=1/2 écrit des informations de débogage dans la sysl og, 2 est plus verbeux. *tea6300.o Pilote pour la puce fader tea6300. Si vous avez une carte stéréo et que le msp3400.o ne marche pas, vous essayez celui-ci. Cette puce est disponible sur la plupart des cartes TV/FM de STB (généralement en provenance de surplus de carte OEM de Gateway sur les sites de mise aux enchères). Arguments pour insmod: debug=1 écrit quelques informations de débogage dans la syslog. *tda8425.o Pilote pour la puce fader tda8425. Ce pilote faisait partie de bttv.c, donc si votre son fonctionnait mais ne marche plus, essayez ce module. Arguments pour insmod: debug=1 écrit quelques informations de débogage dans la syslog. *tda9855.o Pilote pour le décodeur stéréo / puce sonore tda9855. Arguments pour insmod: debug=1 écrit quelques informations de débogage dans la syslog. *dpl3518.o Pilote pour la puce Dolby Pro Logic dpl3518a. Arguments pour insmod: debug=1 écrit quelques informations de débogage dans la syslog. tuner.o Pilote tuner. Vous avez besoin de celui-ci à moins de ne vouloir utilis er qu'une camera ou un tuner externe... Arguments pour insmod: debug=1 écrit quelques informations de débogage dans la syslog. type=n type de la puce tuner. n dans la liste suivante : 0: Temic PAL tuner 1: Philips PAL_I tuner 2: Philips NTSC tuner 3: Philips SECAM tuner 4: no tuner 5: Philips PAL tuner 6: Temic NTSC tuner 7: Temic PAL tuner *8: Alps TSBH1 NTSC tuner *9: Alps TSBE1 PAL tuner i2c_chardev.o Fournit un périphérique caractère pour accéder au bus i2c. Fonctionne p our les 2.1.x seulement, il n'est pas compilé par défaut. _________________________________________________________________