Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
Les webcams

Installer une WebCam USB

Installer une WebCam USB
par Fred et Dimitri
Un certain nombre de WebCams sont maintenant prises en charge par Linux, voyons comment en faire fonctionner une.

Dans ce document, je vais expliquer comment installer une WebCam sous Linux, mais je ne parlerai que de celles ayant un pilote en GPL.

Il existe plusieurs types de WebCam prises en charge par Linux avec des pilotes GPL :

  • celles utilisant le modules uvcvideo (voir ci-dessous)
Grâce à Microsoft (une fois n'est pas coutume), l'installation d'une webcam sous Linux va devenir beaucoup plus simple. En effet, pour avoir le logo "Vista certified", une webcam doit respecter la norme USB Video (l'équivalent de USB Storage pour les clefs USB). A priori, ce sera le cas de la grande majorité des nouvelles webcams, un seul pilote sera donc nécessaire pour toutes. Ce pilote existe déjà, il se nomme uvcvideo ; on le trouve à cette adresse.

Si votre webcam est reconnue par le pilote, les lignes suivantes (à la référence de la webcam près) devraient apparaître si vous tapez dmesg :

uvcvideo: Found UVC 1.00 device Philips SPC 1000NC Webcam (0471:0332)
usbcore: registered new driver uvcvideo
USB Video Class driver (v0.1.0)

Bien qu'elle soit reconnue, elle peut ne pas fonctionner, car le pilote est récent. C'est mon cas (Mandriva 2008.0). J'ai donc installé la dernière version comme expliqué sur le site :

$ svn checkout svn://svn.berlios.de/linux-uvc/linux-uvc/trunk
$ cd trunk
$ make

puis en tant que root :

# make install

Enfin, je retire l'ancien pilote de la mémoire puis charge le nouveau par :

# rmmod uvcvideo
# modprobe uvcvideo

Et voilà, vous pouvez essayer les logiciels video, en commençant par luvcview (à compiler soi-même), ou mplayer par la commande :

mplayer tv:// -tv driver=v4l2

ou en spécifiant plus d'options, comme par exemple :

mplayer tv:// -tv driver=v4l2:device=/dev/video1:width=320:height=240:fps=25:outfmt=rgb24

Note : xawtv ne fonctionne pas avec ma webcam, car celle-ci produit une video au format MJPEG, non géré par xawtv.

(mise à jour par LeaJice 3 fév 2008 à 21:57 (CET))

  • celles utilisant le module CPiA (liste),
  • celles utilisant le modules OV511 (liste),
  • de nombreuses webcams sont prises en charge par le pilote spca5xx (liste).

Après avoir consulté les listes retenez bien le nom du pilote que vous devrez charger.

  • Les Webcam Philips (Vesta, ToUCam), dont le pilote est maintenant en GPL (sauf la partie, optionnelle, gérant la compression qui permet d'améliorer la fluidité). Voir la page de ce pilote, une page sur l'installation de cette webcam sur FRLinux.net (en 2002) et un article faisant le point par rapport à la Mandriva 2007.
  • la Quickcam Express de Logitech, de 2 manières :
    • une application + module permettant de visionner la video (disponible ici). La compilation des sources produit 2 fichiers : quickcamex.o (le module) et quickcam (le visionneur). Créez le périphérique par "mknode /dev/quick c 180 80", chargez le module : "insmod ./quickcamex.o" ; vous pouvez visionner la webcam avec ./quickcam (et seulement ce logiciel). Pour faire des photos, utilisez un outil de capture d'écran.
    • un pilote "normal", i.e. compatible video4linux, disponible ici. Ce pilote est livré en standard avec la Mandrake 8, il se nomme mod_quickcam.o et est chargé automatiquement au démarrage si la webcam est branchée. Si vous ne l'avez pas, récupérez-le tarball (cf lien précédent), décompressez-le ; un simple "make" le compilera, vous pouvez alors le copier dans /lib/modules/2.x.y pour l'installer. Pour le reste, remplacez ov511 par mod_quickcam ci-dessous, car il s'utilise de la même manière.
  • depuis peu (02/2006) la Logitech Quickcam Messenger en utilisant qc-usb-messenger-1.1.tar.gz. L'installation est expliquée en suivant le lien.
  • d'autres ? envoyez-nous vos expériences...

Dans la suite, la partie concernant les logiciels est commune à toutes les webcams, mais pour l'installation des pilotes, je ne vais parler que des WebCams utilisant ov511 car les deux WebCams que j'ai testées (une Trust Sp@ce cam 300 USB et une Creative Video Blaster Webcam 3 USB) utilisent ce pilote.
<pierre-yves.b chez wanadoo.fr> Pierre-Yves me signale que la procedure d'installation est presque identique pour les WebCams utilisant le pilote CPiA (lui il a une Mustek Vcam-300 USB) : il suffit de changer (presque partout cela suffit) : ov511 par cpia.


Prérequis : Vous devez avoir installé un noyau prenant en charge l'USB (c'est le cas du noyau des Mandrake 7.2, SuSE 7.0, RedHat 7.0 et sans doute de toutes les dernières versions des grandes distributions) :

  • soit un noyau 2.2.14 et plus avec le patch USB, voir [/hardware/usbscan.php3#compil_noyau cet article].
  • soit un noyau 2.4.x, voir [/kernel/kernel24.php3 cet article].

Installation et configuration du noyau

Si vous utilisez une distribution récente tout est déjà configuré correctement dans votre noyau, vous pouvez passer à la [#installation_driver suite]. Sinon nous allons devoir recompiler le noyau.

Pour cela, [/kernel/kernel.php3 voyez cet article]. Le mieux est d'utiliser un noyau 2.4.2 (dernière version à la date de rédaction de cet article) : il contient forcement les dernières versions des pilotes mais vous pouvez toujours télécharger celles-ci sur les sites : OV511 : http://alpha.dyndns.org/ov511 ou CPiA : http://webcam.sourceforge.net. Pour compiler les pilotes, vous devez, dans la rubrique USB Support activer en tant que modules les options suivantes (au moins) :

  1. USB support : ça coule de source.
  2. Preliminary USB device filesystem : ça ne coute rien et ça pourra vous servir (à reconnaitre un périphérique, et c.).
  3. L'un des pilote suivant : UHCI (Intel PIIX4, VIA, ...) (module : uhci.o) ou UHCI Alternate Driver (JE) (module : uhci.o) ou OHCI (Compaq, iMac, OPTi, SiS, ALi) (module : ohci.o) : suivant votre carte mère (regardez l'aide), c'est le pilote des ports USB de votre ordinateur (si vous devez charger un pilote uhci, préférez UHCI Alternate Driver (JE) sauf s'il plante votre ordinateur : il est parait-il plus performant).

et soit :

  • vous activez (dans la même catégorie) USB OV511 Camera : si votre WebCam doit utiliser un pilote OV511
  • dans la catégorie Multimedia devices, sous catégorie Video For Linux : vous activez CPiA Video For Linux et CPiA USB Lowlevel dans le cas ou votre WebCam utilise un pilote CPiA.

Enfin vous compilez et installez ce nouveau noyau. Un petit reboot et tout ce passera bien.

Installation et configuration des pilotes

Si l'USB, n'est pas pris en charge par votre distribution il faut maintenant charger le pilote USB de votre carte mère, c'est soit : ohci soit : uhci. Tapez :

modprobe usbcore (sans doute inutile)
modprobe ohci
ou modprobe uhci (inutile si votre ditribution prend en charge l'USB)
modprobe videodev
(sans doute inutile)
modprobe ov511
ou modprobe cpia

Pour automatiser ce chargement au démarage de votre machine, il y a deux solutions envisageables :

  • vous insésez les lignes précédantes dans un script lancé au démarage de votre machine (exemple : à la fin de /etc/rc.d/rc.local)
  • si vous n'avez qu'un seul périphérique video, vous pouvez ajouter en fin du fichier /etc/modules.conf (parfois aussi nommé /etc/conf.modules) la ligne :
alias char-major-81 ov511
ou 
alias char-major-81 cpia
ce qui demande au chargeur de modules de charger ov511 (ou cpia) si l'on accède à un périphérique dont le numéro de majeur est 81 (ie: un /dev/video). 

A ce stade votre WebCam est prise en charge par le noyau, mais il reste à se procurer de quoi visualiser les videos en provenance de celle-ci.

Note(1) : Pour les WebCams OV511, vérifiez que votre WebCam est correctement détectée, tapez :

[root@duron]# tail -n 5 /var/log/messages
Mar 8 13:55:50 duron kernel: usb.c: registered new driver ov511
Mar 8 13:55:50 duron kernel: ov511.c: USB OV511+ camera found
Mar 8 13:55:50 duron kernel: ov511.c: camera: Creative Labs WebCam 3
Mar 8 13:55:50 duron kernel: ov511.c: Sensor is an OV7620
Mar 8 13:55:50 duron kernel: ov511.c: ov511 driver version 1.34 registered

Si vous voyez une ligne du type de celle en gras c'est que votre WebCam est reconnue, sinon c'est que quelque chose manque ou que votre WebCam n'est pas prise en charge par ce module (essayez l'autre, vérifiez dans les listes de matériels pris en charge).

Note(2) : Pour les WebCams OV511, si vous avez plusieurs WebCams OV511, il en faut préciser le nombre sur la ligne de commande, si vous avez 2 WebCams :

[root@duron]# modprobe ov511 cams=2

La première WebCam détectée sera /dev/video0 la seconde /dev/video1 et c.

Note(3) : Il est possible (non testé) de charger en meme temps un pilote ov511, cpia et bttv chacun des périphériques détectés sera accessible via un /dev/videoxx

W3Cam

W3Cam est un programme qui permet de diffuser à la demande les images sur votre serveur WEB (vous devez avoir installé Apache (par exemple) pour pouvoir l'utiliser). Mais le paquetage W3Cam permet aussi de tester rapidement sa WebCam car il contient le programme (fonctionnant en ligne de commande) : vidcat qui lui ne nécessite pas d'installer Apache.

Compilation et installation

Comme toujours on peut récupérer un paquetage précompilé pour sa distribution, mais je préfère compiler moi même ce type de programme : je n'expliquerais pas comment faire, mais vous pouvez le faire en allant sur rpmfind.net par exemple. Nous allons récupérer les sources là : http://www.hdk-berlin.de/~rasca/w3cam/

Puis on décompresse le tout et on compile :

tar xzf w3cam-0.6.6.tar.gz
cd w3cam
./configure
make
make install

Maintenant tout est installé dans /usr/local/bin et /usr/local/cgi-bin, n'oubliez pas d'ajouter /usr/local/bin à votre PATH.

Faisons un petit test :

vidcat -d /dev/video0 -s 320x240 -f jpeg > ~/essai.jpeg


Essayer de regarder le fichier ~/essai.jpeg. S'il est un peut sombre, c'est que les réglages automatiques n'ont pas pu se faire à la première prise de vue, essayez d'en faire d'autre : l'image s'éclaircie petit à petit. Ça y est votre WebCaebc fonctionne sous Linux !

Votre tête sur le Web !

Vous avez acheté une webcam, ce n'est certainement pas pour prendre des photos... Une première solution : mettez votre tête animée sur le Web. Pour cela vous devez avoir installé Apache sur votre machine. Puis copiez le contenu de /usr/local/cgi-bin vers le répertoire des cgi d'apache (sur la Mandrake 7.2 c'est /var/www/cgi-bin, sur la 7.0 c'est /home/httpd/cgi-bin) :

cp -R /usr/local/cgi-bin/* /var/www/cgi-bin

Puis, éditez le fichier : /var/www/cgi-bin/w3cam.cgi.scf. Ci-après vous trouverez le mien :

# SCFF/sh
# Ce fichier doit se trouver dans le même répertoire
# que w3cam.cgi
# Décommentez et renseignez les
# lignes suivantes si vous souhaitez
# modifier les couleurs de fond et
# celles d'avant plan
# background=#ffffff
# foreground=#000000

# Ce paramètre existe mais je
# ne sait pas à quoi il sert
# source_url="http://home.pages.de/~rasca/w3cam/"

# Si vous souhaitez utiliser une feuille de style
# décomentez la ligne suivantes
# stylesheet="/~rasca/w3cam/w3cam.css"

# mettre protected à 1 permet d'éviter
# de prendre en compte les champs du formulaire

protected=0

# mettez ici votre périphérique video

device = "/dev/video"

# taille d'image en provenance de la WebCam (ou la carte TV)

width=320
height=240

# pour avoir de jpeg en couleurs (0 : noir et blanc) color=1
# temps à attendre entre deux images

refresh="0.1"

# norm, 0=PAL, 1=NTSC, 2=SECAM
# utile uniquement avec une carte TV #norm="0"
# input, 0=TV, 1=Composite1, 2=Composite2, 3=S-Video

input="1" # avec une WebCam (évite les bouton unutiles avec une WebCam)

# format, 1=PPM, 2=JPEG, 3=PNG

format="2"

# qualité des jpeg : 1-100

quality="50"

# mode, 0=plain, 1=gui (pour avoir un control sur w3cam)

mode="1"

# attendre 0,5 secondes avant de commencer la capture
# (ie : 500000 microsecondes)
# usleep="500000"
# fréquence du tunner en 1/16 MHz
# uniquement pour les carte TV
# freq="9076"
# liste des fréquences
# freqlist="878;9076;9844;9460"
# Pour mettre l'heures sur les images de votre WebCam
# les mots clefs ne sont utilisables que dans ce fichier
# vous devez renseigner les champ "font" et "timestamp"
#
# font = /usr/local/X11/lib/ttfonts/arial.ttf
# font_size = 12
#
# Pour la chaine de format de l'heure voir la manpage : strftime(3)
# timestamp = "Berlin, %H:%M %d.%m.%Y"
# timestamp_border = 2
#
# blend value: 1 .. 100
# timestamp_blend = 60
# alignment: 0 = upper left corner, 1 = upper right corner,
# 2 = lower left corner, 3 = lower right corner
# timestamp_align = 1


Puis lancez votre navigateur web préféré (je crois que cela ne fonctionne pas avec MS IE mais je n'ai pas pu essayer...) et tapez l'url suivante : http://localhost/cgi-bin/w3cam.cgi : ça y est ça bouge !

Pour acceder à votre webcam depuis le net il suffit, dans l'adresse ci-dessus, de remplacer localhost par votre ip (que l'on peut obtenir en faisant ifconfig ppp0 si l'on est connecté via pppd) et c'est tout. Note : Si l'image que vous voyez semble provenir de Canal+ sans décodeur, c'est souvant que vous demandez une capture dans une résolution qui n'est pas prise en charge soit par le pilote soit par la WebCam.

Motion

partie écrite par : Dimitri.

Vous suspectez des fantômes de venir hanter votre maison en votre absence sans jamais les avoir vus et bien voici ce qu'il vous faut. Motion permet de détecter les mouvements faits devant votre webcam et de les enregistrer. Plus d'infos:

http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome

Compilation et installation

L'auteur propose le rpm compilé ou les sources que l'on peut trouver ici: http://motion.technolust.cx/download/. Voici comment installer les sources :

$ tar zxvf motion-2.X.X.tar.gz
$ cd motion-2.X.X
$ ./configure (ajoutez ici : --prefix=/usr si vous voulez l'installer dans /usr et pas /usr/local comme c'est le cas par défaut)
$ make
$ su
Password: xxxxxxx
# make install

Big Brother is watching You

motion s'installe par défaut dans /usr/local/bin

Pour tester le fonctionnement avec votre webcam, lancer:

[dimitri@micro quickcam]$/usr/local/bin/motion

Motion crée à partir du répertoire où vous avez lancé l'exécutable (ici quickcam), une arborescence avec l'année, le mois, le jour, l'heure et la minute de l'enregistrement. A l'intérieur du dernier sous-répertoire on trouve les images jpeg datées avec en encadré les changements détectés. Exemples sur le site de Motion.

[dimitri@micro quickcam]$ ls -a 2001/05/26/09/57/
./ ../ 36-00.jpg 36-01.jpg 36-02.jpg

Maintenant que vous avez vu que tout fonctionne, vous allez pouvoir le paramétrer plus finement. Pour cela, vous avez 2 possibilités, par la ligne de commande (man motion) ou par un fichier de configuration 'motion.conf' à placer dans le même répertoire à partir duquel vous exécutez motion.

Exemple: Exécute motion sous forme de démon avec des images en ppm

[dimitri@micro quickcam]$ motion -D -p

Vous trouverez un exemple de fichier de configuration dans le répertoire /usr/local/examples/motion-2.X.X .

Motion offre beaucoup de possibilités de configuration, comme stocker les évènements dans une base MySQL, vous envoyer des mails ou SMS pour vous prévenir, ou faire une vidéo des images capturées.

D'autres programmes

Ici, je vais mettre une liste de programmes qui peuvent utiliser votre WebCam.

  • Xawtv : prévu pour regarder la TV avec Linux, ce programme fonctionne aussi parfois avec les WebCams (par exemple ça marche avec ma Trust Space Cam 300 mais pas avec ma Creative WebCam 3 !).
  • vic : programme de video conférence sous Linux (existe sur la plupart des plateformes : Windows, Solaris, Mac, et...), sont fonctionnement n'est pas forcément évident mais il donne de bon résulat.
  • ophone : programme de visiophone (non testé : un testeur ?).
  • camstream : un bon remplacement pour XawTV (fonctionne avec toutes mes WebCams, mais c'est moins fluide).
  • hasciicam : utiliser votre WebCam dans un terminal en ASCII (ça marche! et on se reconnait!)
  • FreeWebFone : le nom parle tout seul (Dimitri : "J'ai testé le programme FreeWebFone sous Linux avec un ami qui était lui sous windows. Dans les 2 versions de ce produit, le processeur est pris à 100% lors de son utilisation, néanmoins l'application ne nécessite aucun réglage particulier et ne fonctionne pas trop mal.").
  • qVix : <pierre-yves.b@wanadoo.fr> Pierre-Yves l'a testé mais n'a pas réussi à le faire fonctionner, moi non plus : peut-être faut-il attendre une meilleur version.
  • Q-SeeMe : programme de video conférence utilisant le protocol CU-See-Me.
  • ekiga : au départ c'est un clone de NetMeeting, mais c'est maintenant un softphone complet utilisant les protocoles sip et h263.



@ Retour à la rubrique Matériel

Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Frédéric Bonnaud.

Copyright

© 2004 Fred, Dimitri Clatot

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike icon
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique 3.0 :
http://creativecommons.org/licenses/by-sa/3.0/
Affichages
Outils personnels

Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons CC-BY-SA