miro-1.html 100644 5640 5640 2210 7003176450 12734 0 ustar jfellman jfellman
Ce document est librement diffusable en l'état (dans son intégralité, y compris la présente notice, et sans aucune modification du contenu) sous n'importe quelle forme. L'auteur apprécie d'en être informé.
Le site de publication officiel de ce document, sur le quel vous trouverez la dernière version à jour est http://www.linux-france.org/article/x/miro-pctv/
Les commentaires, suggestions, corrections, et autres observations concernant ce document sont à envoyer à cette adresse.
Les informations présentes dans cette documentation sont issues de divers fichiers README inclus dans des archives de programmes:
Ces sites constituent donc une source d'informations supplémentaire dans le cas ou celui ci ne serait pas suffisant. Néanmoins, une grande partie de la documentation de base a été intégrée dans ce document et devrait par conséquent suffir dans la majorité des cas.
Les indications fournies dans ce document n'engagent en aucun cas l'auteur et ne peuvent faire l'objet de poursuites quelles qu'elles soient. Néanmoins elles m'ont été d'une grande aide et je n'ai eu à subir aucun préjudice grave (excepté un ou deux arrêt intempestif du système dû à une mauvaise configuration initiale des pilotes). En cas de problème, je me tiens à la disposition des utilisateurs qui auront lu entièrement la documentation pour les aider dans la mesure du possible à configurer leur matos.
Cette documentation décrit l'installation du périphérique précité dans un environnement Linux 2.2 et non pas Linux 2.0 (bien que ceci fonctionne également très bien, mais je n'ai pas pu/voulu tester cette configuration.
La phase de compilation du noyau ne sera pas traitée ici, sauf bien entendu les aspects concernant le support de la carte elle même. Pour une explication détaillée de la configuration/compilation du noyau, se reporter à http://www.freenix.org/unix/linux/HOWTO/Kernel-HOWTO.html.
Ce document a été rédigé dans l'optique de faire fonctionner la carte MIRO PCTV PCI dans un environnement Linux 2.2 minimum, c'est à dire sur un système équipé d'un noyau 2.2 fonctionnel (stable et sans erreur au démarage). Lors de la rédaction de ce document le dernier noyau stable est le 2.2.12 (dernière version de developpement 2.3.19). Cette documentation est valable pour les noyaux suivants:
Il est clair que ce ne sont pas les seuls noyaux fonctionnels, mais ce sont les seuls que j'ai testé. Je mettrai régulièrement cette liste à jour, et j'encourage les lecteurs à me faire part de leurs expériences avec d'autres noyaux.
Concernant le pilote Bttv, la dernière version est la 0.6.4, et là aussi j'essairai de mettre la documentation à jour à chque version stable. Je n'ai par contre pas essayé de version antérieure, puisque j'ai commencé par installer celle ci et que la carte semblait fonctionner correctement.
Pour pouvoir installer/configurer votre carte Miro PCTV il vous faudra trois éléments essentiels :
Non, nous allons l'ajouter nous même sous forme de module.
Oui, ce sont des modules que nous allons insérer, il vous faut donc le support des modules.
Oui, ce ne sont pas des modules du noyau que nous voulons insérer, mais des modules "étrangers" qui ne sont pas issus des sources du noyau.
Attention, il faut compiler les modules avec les sources du noyau sous
lequel vous voulez utiliser votre carte TV. Cela signifie que vous ne
pourrez pas utiliser votre carte avec un noyau 2.2.10 si vos modules ont été
compilés alors qu'il y avait une archive de noyau 2.2.12 dans le repertoire
/usr/src.
Les sources des derniers noyaux stables peuvent être librement chargées à cet
endroit:
ftp://www.fr.kernel.org/pub/linux/kernel/v2.2/.
Consulter le Fichier LATEST-IS pour connaître le dernier kernel en
date.
J'insiste bien sur le fait que cette documentation décrit l'installation des derniers pilotes en cours et que par conséquent il ne faut pas inclure de support Video dans la configuration du noyau.
En effet, les developpeurs du noyau, désireux d'intégrer des pilotes stables dans le kernel, préfèrent mettre les derniers pilotes en attente et intégrer ceux qui ont déjà fait leur preuve. Nous allons donc prendre des risques (minimes quand même, il ne faut pas exagérer) et intégrer le dernier pilote de carte en date.
Copiez le fichier bttv.X.Y.Z.tar.gz dans le répertoire /usr/src,décompressez l'archive .tar.gz (ou éventuellement .tar.bz2) et entrez dans le répertoire ainsi créé:
# mv bttv-X.Y.Z.tar.gz /usr/src/
# tar -zxvf bttv-X.Y.Z.tar.gz
# cd /usr/src/bttv/
A l'aide de votre éditeur de texte favoris, éditez le fichier driver/Makefile:
# vim driver/Makefile
Le fichier est organisé comme suit:
Parmi les numéros de tuner qui sont commentés vous devez repérez le vôtre
(contrairement à ce qui est indiqué dans le fichier Makefile). En général
pour la France c'est le tuner Philips SECAM (Si certains possède une carte
MIRO PCTV PCI avec autre chose que du Philips, qu'ils me contactent).
Dans la version 0.6.4 de bttv il s'agit du numéro 3
Par conséquent sur la ligne TUNER= vous mettez :
TUNER=3
Vous pensiez vous en tirer sans mettre la main dans le camboui ? et bien détrompez vous, il va falloir attaquer le code source à grand coup de copier coller. Pas d'inquiétude, ce n'est rien de violent et ça se fait très bien avec la souris même si vous utilisez vim ;-)
Voici la section du fichier /usr/src/bttv/driver/tuner.c originale, telle qu'elle se présente lorsque vous décompactez l'archive bttv*.tar.gz Elle se trouve aux alentours de la ligne 73 (peut varier suivant les versions)
# vim driver/tuner.c
static struct tunertype tuners[] = {
{"Temic PAL", TEMIC, PAL,
16*140.25,16*463.25,0x02,0x04,0x01,0x8e,0xc2,623},
{"Philips PAL_I", Philips, PAL_I,
16*140.25,16*463.25,0xa0,0x90,0x30,0x8e,0xc0,623},
{"Philips NTSC", Philips, NTSC,
16*157.25,16*451.25,0xA0,0x90,0x30,0x8e,0xc0,732},
{"Philips SECAM", Philips, SECAM,
16*168.25,16*447.25,0xA7,0x97,0x37,0x8e,0xc0,623,0x02},
{"NoTuner", NoTuner, NOTUNER,
0 ,0 ,0x00,0x00,0x00,0x00,0x00,000},
{"Philips PAL", Philips, PAL,
16*168.25,16*447.25,0xA0,0x90,0x30,0x8e,0xc0,623},
{"Temic NTSC", TEMIC, NTSC,
16*157.25,16*463.25,0x02,0x04,0x01,0x8e,0xc2,732},
{"TEMIC PAL_I", TEMIC, PAL_I,
// 16*170.00,16*450.00,0xa0,0x90,0x30,0x8e,0xc2,623},
16*170.00,16*450.00,0x02,0x04,0x01,0x8e,0xc2,623},
};
L'opération va tout simplement consister à remplacer la première section concernant le Tuner TEMIC PAL par celui que nous allons utiliser, c'est à dire le Tuner PHILIPS SECAM. Après remplacement, la section découpée plus haut ressemblera à ceci:
static struct tunertype tuners[] = {
// {"Temic PAL", TEMIC, PAL,
// 16*140.25,16*463.25,0x02,0x04,0x01,0x8e,0xc2,623},
{"Philips SECAM", Philips, SECAM,
16*168.25,16*447.25,0xA7,0x97,0x37,0x8e,0xc0,623},
{"Philips PAL_I", Philips, PAL_I,
16*140.25,16*463.25,0xa0,0x90,0x30,0x8e,0xc0,623},
{"Philips NTSC", Philips, NTSC,
16*157.25,16*451.25,0xA0,0x90,0x30,0x8e,0xc0,732},
{"Philips SECAM", Philips, SECAM,
16*168.25,16*447.25,0xA7,0x97,0x37,0x8e,0xc0,623,0x02},
{"NoTuner", NoTuner, NOTUNER,
0 ,0 ,0x00,0x00,0x00,0x00,0x00,000},
{"Philips PAL", Philips, PAL,
16*168.25,16*447.25,0xA0,0x90,0x30,0x8e,0xc0,623},
{"Temic NTSC", TEMIC, NTSC,
16*157.25,16*463.25,0x02,0x04,0x01,0x8e,0xc2,732},
{"TEMIC PAL_I", TEMIC, PAL_I,
// 16*170.00,16*450.00,0xa0,0x90,0x30,0x8e,0xc2,623},
16*170.00,16*450.00,0x02,0x04,0x01,0x8e,0xc2,623},
};
Vous pouvez très bien virer la section originale et copier/coller la version modifiée ci-dessus. Notez le changement, le premier Tuner a été commenté (à l'aide des doubles slashs) et on a inséré un nouveau Tuner PHILIPS SECAM.
Attention, 2 lignes ont été rajoutées, celle du Tuner et celle des paramètres numériques. Voilà, il ne vous reste plus qu'à sauvegarder et à quitter le fichier.
Repérez votre carte dans la liste des numéros commentés et reportez le
numéro sur la ligne CARD= et insérez celui correspondant à votre
matériel.
Note: la carte Miro Pro correspond à une carte télé plus
une carte radio branchée sur la carte Télé. Dans la plupart des cas il s'agit
d'une carte Miro simple, sauf si vous êtes sûr d'avoir acheté le kit radio
qui vient se greffer dessus. (Il vous faudra chercher une autre doc pour
l'installation de la radio, je ne traite ici que de la partie Télé).
Vous rajoutez donc le numéro correspondant à la carte Miro (numéro 1 dans la version 0.6.4 de bttv) à la ligne CARD:
CARD=1
En fait ces deux lignes (TUNER=3 et CARD=1) spécifient que lors de l'insertion des modules dans le noyau, si aucun paramètre n'est spécifié, ces informations seront prises par défault.
Vous pouvez également changer les paramètres spécifiés dans la suite du fichier /usr/src/bttv/driver/Makefile mais c'est at your own risk. Par exemple, je me suis hasardé à enclenché l'option :
PLL=-DUSE_PLL=1 (ou 2)
Cela a eu pour conséquence un plantage irrémédiable du système; par plantage irrémédiable j'entends inaccessibilité de la machine que ce soit par réseau ou à l'aide des touches systèmes. Fatalement il faut remédier à coup de POWER ou RESET. Soyez donc prudent avec cette option.
La sortie de la commande /sbin/lspci me donne:
00:07.0 Multimedia video controller: Brooktree Corporation Bt848 TV with DMA push (rev 12)
Si ça ne vous rend pas quelque chose du type Brooktree Crp. Bt848a
laissez tomber l'option -DUSE_PLL, c'est à dire laissez là à 0.
Par contre n'hésitez pas à changer les paramètres d'environnement du système,
c'est à dire compilateur, librairies, etc.
Voilà pour la phase de configuration. On peut maintenant passer à la compilation des différents modules.
La compilation s'effectue avec la commande "make" dans le reprtoire principal du driver à savoir /usr/src/bttv/ (si vous avez décompacté votre archive dans /usr/src).
Attention, utilisateurs de gcc version 2.95 ou supérieure, il vous faudra
faire attention aux FLAGS que vous soumetez à gcc. Vérifiez bien que votre
noyau sera compilé avec l'option -fno-strict-aliasing.
Jettez un oeil dans le fichier /usr/src/linux/Makefile, vous devriez trouver
ceci:
# use '-fno-strict-aliasing', but only if the compiler can take it
CFLAGS += $(shell if $(CC) -fno-strict-aliasing -S -o /dev/null -xc /dev/null \
>/dev/null 2>&1; then echo "-fno-strict-aliasing"; fi)
Si vous trouvez ceci, alors tout va bien, en tapant make, le compilateur se
verra automatiquement attribué le FLAG -fno-strict-aliasing
Dans le doute, ou si vous ne vous sentez pas l'âme d'un Jedi (c'est la mode en ce moment) de la compil, il vaut mieux pour l'instant compiler le noyau ainsi que les modules avec gcc 2.7.2.* pour s'assurer d'un bon fonctionnement et en tout cas éviter un bon nombre de problèmes.
Sur ma Debian Potato, gcc v2.7.2* se trouve dans le repertoire /usr/bin/gcc272. Ainsi, pour lancer la compilation des modules il faut faire:
# cd /usr/src/bttv/
# CC=/usr/bin/gcc272 make
Vous pouvez taper simplement make après avoir vérifié la version du compilateur:
# gcc -v
Reading specs from /usr/lib/gcc-lib/i386-linux/2.7.2.3/specs
gcc version 2.7.2.3
# gcc -v
Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.2/specs
gcc version 2.95.2 19990906 (prerelease)
Le premier exemple est correct, la version du compilateur étant 2.7.2.3
mais le deuxième exemple correspond à gcc 2.95.
Je n'ai malheureusement aucun renseignement concernant les autres compilateurs
que gcc. Je ne pense pas qu'il puisse y avoir de gros problèmes, aussi la
compilation devrait se faire sans problèmes quel que soit le compilateur que
vous utilisiez.
Il n'y a plus qu'à attendre la fin de la compilation. Si pour une raison ou pour une autre vous n'êtes pas arrivé jusqu'ici sans problèmes reportez vous à la rubrique Problèmes.
La phase de compilation a du créer plusieurs fichiers dans le repertoire bttv/driver/ (extensions .o). Ces fichiers correspondent aux modules qu'il vous faudra insérer dans le noyau pour faire fonctionner votre carte.
Avant la prochaine étape (traditionnellement make install ou plutôt make ins) il vous faudra éditer le fichier driver/update qui est plutôt déroutant si vous voulez mon avis; non pas par sa syntaxe ou sa lisibilité, mais par son sens. En effet, celui ci écrase les paramètres spécifiés par défault dans le fichier Makefile, et rend donc obsolètes toutes vos précédentes modifications. Il faut donc l'éditer et remplacer les paramètres des modules (qui se trouvent en fin de fichier):
# vim /usr/src/bttv/driver/update
Voici cette section telle qu'elle apparait dans la version 0.6.4 de bttv:
# ... and load the new ones
xinsmod videodev
xinsmod i2c verbose=1 scan=1 i2c_debug=0
test -f i2c_chardev.o && xinsmod i2c_chardev
xinsmod tuner debug=0 type=5
xinsmod msp3400 debug=0 simple=0
#xinsmod tda8425
#xinsmod tea6300
xinsmod bttv radio=0 card=15 #vidmem=0xf80
Il faut la modifier pour faire apparaître ceci:
# ... and load the new ones
xinsmod videodev
xinsmod i2c verbose=1 scan=1 i2c_debug=0
test -f i2c_chardev.o && xinsmod i2c_chardev
xinsmod tuner debug=0 type=3 #ICI MODIFICATION POUR LE TUNNER 3
#xinsmod msp3400 debug=0 simple=0
#xinsmod tda8425
#xinsmod tea6300
xinsmod bttv radio=0 card=1 #ICI MODIFICATION POUR LA CARTE 1
En fait il n'est pas utile de remplacer les paramètres originaux puisque l'on a compilé les modules avec des options par défault, mais il ne faut surtout pas laissé ceux spécifiés par les developpeurs. Notez au passage que j'ai décommenté la ligne correspondant au module son.
Note aux possesseurs de carte son avec support en modules:
Il faut dès maintenant insérer vos modules de support pour votre carte son, car la manipulation suivante fait intervenir l'insertion d'un module (msp3400.o) qui dépend du support de la carte. Si vous ne le faites pas, ce ne sera pas bien grave, mais le script suivant échouera dans l'insertion de ce module et vous n'aurez pas de son avec votre image :-(
Je possède une carte son Creative SoundBlaster AWE 32, dans mon cas il faut donc faire:
/sbin/modprobe /lib/modules/`uname -r`/misc/sound.o
/sbin/modprobe /lib/modules/`uname -r`/misc/uart401.o
/sbin/insmod /lib/modules/`uname -r`/misc/sb.o io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330
/sbin/modprobe /lib/modules/`uname -r`/misc/awe_wave.o
Il ne vous reste normalement plus qu'à taper:
make ins
et à regarder.
Dans le meilleur des cas, le script vous aura créé (et affiché) un paquet de
fichier spéciaux dans le reprtoire /dev/, inséré les modules dans le noyau
avec les bons paramètres et copié ces modules dans le repertoire
/lib/modules/version_du_noyau/misc/. (en fait, je n'ai pas encore
compris pourquoi, mais il ne copie pas les module dans le repertoire, il
se contente de les insérer; ce problème est détaillé un peu plus loin).
Si quelque chose c'est mal passé, vous devez avoir un message d'erreur à l'écran ET dans les logs. Il vous faudra reporter ces messages d'erreur pour toute demande d'aide aux auteurs du pilote ou bug report. Reportez vous tout d'abord à la rubrique Problèmes.
Si vous n'avez pas de message d'erreur à l'écran et si votre machine ne
s'est pas figée, tapez lsmod et vérifiez que vous avez les
modules suivants dans votre liste:
Module Size Used by
bttv 34504 0 (unused)
msp3400 12640 0 (unused)
tuner 2348 1
i2c 3712 3 [bttv msp3400 tuner]
videodev 2432 2 [bttv]
Regardez aussi dans les fichiers de log (généralement dans le repertoire /var/log/). Le fichier s'appelle normalement message et les dernières lignes doivent contenir le résultat de vos manipulations. Repérez tout d'abord si vous avez une erreur (du type Failed, Error, Conflict, Timeout, etc.) et si c'est le cas reportez vous à la section Problèmes Si tout s'est bien passé vous devriez avoir quelque chose comme:
Oct 6 17:21:29 recup kernel: Linux video capture interface: v0.01 ALPHA
Oct 6 17:21:29 recup kernel: i2c: initialized (i2c bus scan enabled)
Oct 6 17:21:29 recup kernel: i2c: driver registered: tuner
Oct 6 17:21:29 recup kernel: i2c: driver registered: msp3400
Oct 6 17:21:29 recup kernel: bttv: Host bridge 82437FX Triton PIIX
Oct 6 17:21:29 recup kernel: bttv0: Brooktree Bt848 (rev 18) bus: 0, devfn: 56, irq: 7, memory: 0xfedfb000.
Oct 6 17:21:29 recup kernel: bttv: 1 Bt8xx card(s) found.
Oct 6 17:21:29 recup kernel: bttv0: model: BT848A(MIRO PCTV)
Oct 6 17:21:29 recup kernel: i2c: bus registered: bt848-0
Oct 6 17:21:29 recup kernel: i2c: scanning bus bt848-0: found device at addr=0xc0
Oct 6 17:21:29 recup kernel: i2c: device attached: tuner (addr=0xc0, bus=bt848-0, driver=tuner)
Vous devez obligatoirement trouver quelque chose en rapport avec vos insertions de modules, que l'opération se soit déroulée correctement ou non.
Dans mon cas, je ne sais pas pourquoi, mais les modules ne sont pas copiés dans le repertoire adéquat (et si quelqu'un trouve pourquoi, qu'il m'écrive). Aussi, suffit il de taper:
# cp /usr/src/bttv/driver/*.o /lib/modules/`uname -r`/misc/
# depmod -a
Voilà vos modules correctement rangés. La commande depmod -a sert à établir
les dépendances entre modules. En cas d'erreur à ce niveau vous reporter à la
section
ProblèmesJ'ai rédigé un script que je lance lorsque je veux regarder la télé et qui me charge les modules nécessaires. Il est possible de paramétrer ceci avec modprobe (man modprobe), chacun son truc:
#!/bin/bash
insmod /lib/modules/`uname -r`/misc/videodev.o
insmod /lib/modules/`uname -r`/misc/i2c.o verbose=1 scan=1 i2c_debug=0
insmod /lib/modules/`uname -r`/misc/tuner.o debug=0
insmod /lib/modules/`uname -r`/misc/msp3400.o
insmod /lib/modules/`uname -r`/misc/bttv.o radio=0 card=1 pll=0
Et pareil pour décharger les modules:
rmmod msp3400
rmmod bttv
rmmod videodev
rmmod tuner
rmmod i2c
Pous ceux qui n'ont pas (encore) eu de problèmes ils n'auront plus qu'à installer le programme xawtv:
apt-get install xawtv # pour une Debian
rpm -i xawtv*rpm # pour une Red Hat
ou encore compiler soi même le programme en se procurant la dernière version à cet endroit. Une version de xawtv est disponible dans l'archive bttv, en tapant dans le repertoire /usr/src/bttv.
# make apps
joaquim@hrnet.fr