tbl.gif (47 octets)

arrow1.gif (5675 octets)arrow1.gif (5675 octets)arrow1.gif (5675 octets)arrow1.gif (5675 octets)La TV sous LinuxFlèchesFlèches FlèchesFlèches 

tbr.gif (47 octets)





l'entraide est notre force à tous"


Introduction:

Certains ont émis le souhait qu'une telle section existe. La voici!
N'étant plus un Neebie sur Linux, mais n'étant pas non plus un Dieu de cet OS, cette page peut donc comporter certaines erreurs, vous m'en voyez désolé par avance.Vous pouvez m'en faire part sur le Forum GaGai si vous en trouvez.
cette page va exposer les solutions que j'ai mis en oeuvre pour faire fonctionner la TV sous Linux.

1) La TV sous Linux ne fonctionne qu'avec les cartes munies des chipset BT848/849 et BT878/879.Pour les cartes ATI, c'est en cours et cela s'appelle le projet GATOS. Le support est aussi possible pour les cartes ZORAN et MATROX .Pour la France, les cartes Hauppauge et Pinnacle sont donc supportées. Votre carte doit supporter le driver (module) linux "Video for Linux" sans quoi ce ne sera pas possible.

2) La gestion de ces chipsets, directement dans le noyau, ne se fait que depuis la version 2.2.x. En effet lors de la compilation du Noyau, il est possible de choisir de charger le pilote BT848 VIDEO FOR LINUX en tant que module. C'est le cas de la quasi totalité des distributions grand public que vous pouvez récupérer par download ou en achetant un magazine en kiosque.

3) Résumons: Vous avez une carte muni d'un chipset BT8x8/8x9 et d'une distribution assez récente (j'utilise actuellement la Mandrake 7.0 (Air) ) alors la TV sous Linux est possible pour vous.( ca marche aussi sans recompilation du noyau avec la distribution de Caldera pour les autres je ne sais pas).

Recompilation du Noyau pour supporter Video for Linux

Tout d'abord cette section est nécessaire seulement si votre noyau n'a pas été déjà précompilé avec Video for Linux. Si c'est le cas mettez vous en ROOT et suivez les instructions ci dessous:

Il faut tout d'abord récupérer les sources d'un noyau 2.2.x puis le décompresser comme suit:
tar xvzf linux-2.2.7.tar.gz*

décompressez les sources dans /usr/src/linux ou vous aurez créé le répertoire linux, puis lancez la commande suivante: xconfig à partir du répertoire créé.

Trouvez la section suivante:

il faut bien entendu que l'option soit sélectionnée (y comme yes)

Passez le pilote "BT848 Video for Linux" en tant que module (m) cela permettra de le monter à la demande (ca marche aussi pour les BT878, en fait pour tous les BT8x8)

Il ne vous reste plus qu'a sauver et quitter le configurateur.

Compilation du noyau proprement dit. Tapez les commandes suivantes dans l'ordre:

make dep
make clean
make bzImage
make bzDisk
make zLilo (pour actualiser lilo, le boot loader)
make modules
make modules_install

un nouveau noyau a été créé dans /usr/src/linux/arch/i386/boot/zImage
Ce fichier il faudra le renommé par exemple en vmlinuz.detest et le placer dans /boot

Il est important de mettre à jour LILO car vous n'êtes pas sur du nouveau noyau que vous avez créé. (voir les fichiers de conf. plus loin). Modifiez le fichier etc/lilo.conf et ensuite pour le mettre en ligne tapez lilo dans un shell.

Installations des modules (drivers):

parfois il est  nécessaire de récupérez de nouveau modules:
placez vous dans /usr/src
décompressez les nouveaux pilotes tar xvzf bttv-0.6.4.tar.gz que l'on peut trouver ICI
placez les dans /usr/src/bttv/driver
puis tapez les commandes suivantes make et make install
les modules doivent être installés dans /lib/modules/(numéro de version du kernel)/misc/

Après avoir booter sur le nouveau noyau, vous pouvez tester les modules comme suit:

insmod -f i2c verbose=1 scan=1 i2c_debug=0
insmod -f tuner debug=0 type=3
insmod -f videodev
insmod -f bttv radio=1 card=1 vidmem=0xdc0

puis taper lsmod pour voir si les modules sont bien chargés!!!

Choix du type de tuner : type=3
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


Choix du type de carte TV : card=1

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

Pour avoir la valeur de vidmem tapez la commande suivante:

/usr/local/bin/v4l-conf
Cette valeur est différente pour chaque carte et il faut donc utiliser le configurateur video for linux pour avoir l'info.

autre façon, avec la commande modprobe:

modprobe bttv
modprobe tuner
modprobe i2c
modprobe videodev
modprobe msp3400 (pour les possesseurs de cartes stéréo)

et là, ca peut ne pas marcher, en effet il vous faut certains devices:

Créer les devices manquants:

La première chose à vérifier est que tous les périphériques ont été définis (par exemple /dev/video). Pour cela dans les sources (de KwinTv par exemple) il y a un fichier nommé MAKEDEV en l'exécutant (./MAKEDEV) il vous créera les périphériques nécessaire qui étaient innexistants dans /dev

Pour créer le device video manuellement:
mknod /dev/video0 c 81 0
ln -s /dev/video0 /dev/video

si vous avez plusieurs cartes TV à chaque /dev/videoX incrémentez le minor avec major 81
( 81 0 puis 81 1 puis 81 2 etc...).

Comment avoir le son sous Linux:

Deux méthodes: avec OSS (mono) ou bien avec ALSA (stéréo et plus encore).

Configurer OSS: c'est super simple il suffit de lancer la commande sndconfig (sur l'ensemble des distributions basées sur la RedHat) ou bien ajoutez une ligne du type:

#--- Anciens module SON non FULL DUPLEX -----
#--- ces lignes sont crées avec sndconfig ---
#--- le configurateur de RedHat -------------
# alias sound sb
# pre-install sound /sbin/insmod sound dmabuf=1
# alias midi opl3
# options opl3 io=0x388
# options sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330

(retirer les # bien entendu!)

Ici pour une carte SB16 ISA. Le son sera en mono et non full duplex (vous voyez ou je veux en venir.... ;)

Pour avoir le son en stéréo et en full duplex il vous faut soit OSS version commerciale donc payante soit ALSA la solution ultime en GPL.

Configurer ALSA: Avoir un kernel en 2.0.x est le minimum et si vous voulez une une version récente d'ALSA, il vous faudra avoir une kernel en 2.2.x minimum.

Sur le site du projet ALSA, récupérez les sources dans le même niveau de version: alsa-drivers, alsa-conf, alsa-libs et alsa-utils.

Compilation des sources alsa-drivers puis des alsa-libs enfin des alsa-utils

./configure (pour les options --help)
make
make install

Créez les périphériques manquant avec ./snddevices

lancement de la configuration (alsa-conf):

./alsaconf et répondez au question
(IRQ, DMA 8bits DMA 16 bits plages mem etc. comme sous windows. Si vous ne savez pas allez dans le panneau de config. de windaube et récupérez les infos).

Pour que le son ne soit pas à zéro, il faudra ajouter un nouveau script au démarrage de Linux (en mode init 3 et 5). Vous le trouverez dans les sources downloadées, il se nomme alsasound. le modifier comme suit (modifier la fonction start):

function start() {
#
# insert all sound modules
#
cat $config | \
grep -E "^alias( |\t)+snd-card-[[:digit:]]" | \
awk '{print $3}' | \
while read line; do \
echo -n "Starting sound driver: $line "; \
/sbin/modprobe $line; \
amixer -c 0 set PCM 80% unmute
amixer -c 0 set CD 80% unmute
amixer -c 0 set 'Output Gain' 80% unmute
amixer -c 0 set Master 80% unmute

echo "done"; \

done

#
# restore driver settings
#
if [ -x $alsactl ]; then
$alsactl restore
else
echo "ERROR: alsactl not found"
fi

}

Suivant les cartes, il faudra initialiser différentes choses: faire un man amixer pour plus d'infos.

Pour ajouter ce script au démarrage et le décharger à l'arrêt utiliser Ksysv par exemple:
1) copier le fichier alsasound dans /etc/rd.d/init.d
2) puis avec Ksysv faire des déplacer-poser dans les modes init 3 et 5 au démarrage et à l'arrêt.

Logiciels existants:
Deux principaux logiciels en GPL existent: KWINTV pour le plus récent et XAWTV pour le plus ancien. Nous sommes dans le monde Linux donc les sources sont accessibles.

Décompression des fichiers *.tar.gz:
Après avoir downloadé les dernières versions de KwinTv et XawTv, la première difficulté est d'extraire les sources.
Pour cela deux commandes sont à passer:
gzip -d  nom_du_fichier.tar.gz ( le résultat est un fichier *.tar)
tar -xvf nom_du_fichier.tar (le résultat est un répertoire contenant les sources)

Compilation du logiciel:

par exemple pour Xawtv:
tar xvzf xawtv-3.14.tar.gz
puis ./configure puis make puis make install
regardez bien les paramètres que vous pouvez passer à ./configure (pour la compilation future) en tapant ./configure --help

par exemple pour KwinTV:
tar xvzf kwintv-0.7.5.tar.gz
puis ./configure puis make puis make install
regardez bien les paramètres que vous pouvez passer à ./configure (pour la compilation future) en tapant ./configure --help

Configuration du logiciel:

pour sauvegarder les chaînes de xawtv à chaque redémarrage veuillez créer un fichier .xawtv au niveau de votre répertoire personnel (par exemple le mien est /home/gagai/.xawtv)

Voici mon fichier .xawtv:

# Ma Configuration
source     = television
norm     = secam
freqtab    = pal-europe

[TF1]
norm =secam
channel=25
key=a

[France2]
norm =secam
channel=22
key=z
[France3]
norm =secam
channel=28
key=e

[Canal+]
norm =secam
channel=E6
fine=20
key=r

[La 5ème/Arte]
norm =secam
channel=30
key=t
[M6]
norm =secam
channel=33
key=y

[Composite]
norm =secam
source=Composite1
key=c

Le problème du logiciel Xawtv c'est qu'il gére très mal le SECAM (surtout lorsque l'on met la TV en plein écran).

Pour KwinTV il n'y a pas de problème pour enregistrer la configuration cela se fait dans l'interface. Pas de fichier à créer. Ce logiciel gére mieux le SECAM.
Si le logiciel plante au démarrage, c'est peut être parce que vous n'avez pas lancer ./kv4lsetup (le setup pour video for linux de kwintv) Il se peut aussi que vous ayez des problèmes d'icônes dans le barre d'outils de Kwintv. Prenez la version la plus récente du logiciel. L'auteur a corrigé ce problème (que j'ai rencontré).

Ajouter un mode vidéo à XWindows:

Comme on peut le voir dans tous les softs de TV le mode maximum est le 768x576.
Ce mode n'est pas mis par défaut dans la configuration de XF86Config. Il faut donc l'ajouter. Pour cela il y a deux solutions:

Le site Colas XFree Modeline Generator
Le logiciel Kvideogen (logiciel pour KDE qui génère des modeline.)

Pour générer un modeline il vous faudra les informations suivantes: le nom de votre carte et de votre écran. Il faudra récuperer les Sync Horizontal et vertical maximum de votre écran la fréquence maxi supporté par votre carte vidéo. Comment j'ai fait pour récupérer ca. Et bien j'ai booter sur le CD d'install de la distribution Caldera et la distribution se fait le plaisir de vous les donner lors de la reconnaissance du matériel.

Pour moi avec une Matrox MGA G200 AGP rev1 8Mo de SDRAM => 250 Mhz
Pour moi avec un écran IIYAMA MT 9017T Sync horiz. 25-92 Mhz et Sync vertic. 50-160 Mhz
par exemple 1024*768 à 76Hz sync horiz = 62 Mhz et sync vertic=85Mhz

Voici ce que donne Kvideogen pour mon matériel:

# Start of generated XFree86 Modelines
Modeline "640x480"    63.98    640     656    720    832    480     480    491    501
Modeline "768x576"    91.26    768     784    880    992    576     576    591    601
# End of generated XFree86 Modelines

# Modes for framebuffer device
# Testing purposes only. You do not need these for X modelines
# Of course, if you have set up some framebuffer stuff, and you know what you're doing,
# you're very welcome to test these out.

mode    "640x480"
    geometry    640    480     640    480    8
    timings    15629.64    16     112    10    0    64     11
endmode
mode    "768x576"
    geometry    768    576     768    576    8
    timings    10957.22    16     112    10    0    96     15
endmode
# End of modes for framebuffer device

Il faudra donc ajouter ce mode au fichier etc/X11/XF86Config ou etc/XF86Config (l'emplacement du fichier varie selon les distributions).

Attention la résolution est propre à chaque matériel. Celle donnée en exemple ci dessus peut ne pas marcher sur votre config si vous n'avez pas exactement le même matériel que moi.

Passer d'un mode vidéo à un autre sous XWindows:

C'est très simple CTRL + ALT + PLUS (le signe plus du pavet numérique) et vous avancez d'une résolution et CTRL + ALT + MOINS (le signe plus du pavet numérique) et vous reculez d'une résolution.

Pour avoir la TV en plein écran il faut donc tout d'abord ajouter la résolution 768x576 puis réinitialiser Xwindows puis lancer le logiciel de TV en mode plein écran en ensuite faire CTRL+ALT+(+) ou CTRL+ALT+(- ) et vous calez sur la résolution 768x576

Et de décodage?:

Comme sous windows, il existe deux logiciels. Un pour le son et un pour la vidéo.

Pour le son, le seul qui compte est Nagraudio. Il nécessite d'avoir un support son en Full Duplex et stéréo. Aussi il sera obligatoire d'installer Alsa. La dernière version et la 0.55 et l'auteur ne semble plus la développer.

Pour la vidéo, tous les softs de décodage sont basé sur xawtv (aucun à ma connaisance sur Kwintv c'est bien dommage) Par contre le support en mode décodage du SECAM n'a pas été fait. L'image décodée sera donc en PAL et donc en noir et blanc.

xawdecode 1.1

L'installation du soft se fait comme pour l'original xawtv. Il faudra par contre créer les fichiers index à la main avec la commande prep-tabs et aussi modifier le fichier key.h pour passer de la clef allemande à la clef française (celle qui commence par 0, 1, 2 etc...) enfin il faudra créer le répertoire suivant: /usr/local/share/xawtv et lancer la compilation dedans.

Pour plus d'information allez dans la section correspondante

Liens:

http://lealinux.free.fr
http://www.alsa-project.org
la page de Ralph Metzler,   développeur de BTTV
La page de Xawtv
La page de Kwintv
Les sites FreeTv pour l'ensemble des programmes Linux ;) et oui
Le site d'Alien8
Le site Nagraudio
Pour le télétexte alevt

Sources d'informations:
Le document d'Emmanuel Michon (emmanuel.michon@polytechnique.org) du 24 avril 1999 (Installation d'une carte tuner TV sous Linux) en GPLv2
Le site Lea Linux
Linux Pratique numéro 5
FREELOG hors série numéro 1 (premier numéro de Planète linux)
La FaQ espagnol de Alien8Real alien8real@geocities.com (INSTALACION DE UNA CAPTURADORA PARA LINUX) tirée de la page de Gator

et mes propres découvertes.

 

R. Hubbard dit GaGai