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 :

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 :

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 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.