eric_sandeen@bigfoot.com
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.
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.
La version la plus récente de ce document peut-être obtenue du Linux Documentation Project http://metalab.unc.edu/LDP/.
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.
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.
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 :
Si vous connaissez d'autres cartes qui fonctionnent, veuillez m'écrire et je les ajouterai à la prochaine révision de ce document.
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.
(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.
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.
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.
/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
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.
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.)
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 :
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.
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 comprit 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 i2c 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 graphique) 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 par 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 syslog, 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 utiliser 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 pour les 2.1.x seulement, il n'est pas compilé par défaut.