Hop, je fais le saut: j'achète une webcam. Pas chère (25 francs) avec oreillette inclue "für skype" ... Mon choix s'est arrêté sur la QuickCam E1000 de Logitech, dans un rayon qui semble comporter une douzaine d'autres webcam qui se ressemblent toutes, en ce qui me concerne, hormis peut-être leur prix.
Je branche ça sur mon portable linux ... et évidemment ça ne marche pas tout seul. Le CD ne comporte que des drivers pour windows, ce qui n'est pas une surprise non-plus. Haa... on a pas encore fini de changer le monde.
Bref. Un petit tour de google, et je tombe là-dessus :
http://doc.kubuntu-fr.org/spca5xx "installer gspca sous ubuntu, la version facile" ... je prends. je suis les instructions à la lettre, le module (comprenez "le driveur" pour les windoziens) s'installe. c'est bien.
Sauf que point de webcam.
I just blindly bought the Logitech QuickCam E1000 this week-end (since it was the cheapest webcam around) and of course realised that it did not came with any Linux driver (not that it's surprising in any way) nor does it seems to be supported by any "out-of-the-box" driver for Ubuntu gutsy (unless i'm proved wrong).
Hacking around, checking lsusb and reading the sources of the gspca driver, i figured out that it was yet-another-generic-driver that has a "white list" of supported devices. I thus added the product-id to that white list and now proudly have a working webcam. See compiled driver (which might no longer work with Labtec Webcam Pro, because i've really been *hacking* instead of *patching*) and modified sources down the page.
Un petit "lsusb" me donne au moins la référence "technique" du produit :
Bus 001 Device 012: ID 046d:08af Logitech, Inc.
Ces deux numéros magiques (vendor-id=046d et product-id=08af) me permettent de voir (dans les sources du driver, en bas à gauche de l'image) que si pas mal d'autres webcam logitech sont supportées, par contre, la mienne n'est visiblement pas là. Comme le "gspca" est un driver "générique" (à savoir qu'il est en fait valide avec toutes les webcams 'standard'), j'ai 9 chances sur 10 pour que le code puisse effectivement faire fonctionner la webcam si j'arrive à expliquer au driver que "si, si, je t'assure, tu la connais aussi, celle-là".
Un peu comme si votre clé-télécommande devait reconnaître la plaque minéralogique de votre voiture pour pouvoir la faire démarrer.
Bref. Premier jeu, donc, ajouter dans gspca_core.c l'identité de notre caméra. Perso, je parasite n'importe quelle entrée dans device_table[], mais il serait plus propre d'y ajouter
{USB_DEVICE(0x046d, 0x08af)}, /* Logitech QuickCam E1000*/
et d'éditer en conséquence clist[] et l'énumération des caméras.
Avec ça, le driver peut dire au noyau que la webcam est pour lui, mais ça ne suffit pas.
La fonction spcaDetectCamera() est appelée chaque fois qu'une nouvelle webcam est branchée, histoire de lui souhaiter la bienvenue, de prendre un verre avec les autres périphériques USB ... euh ... ou pas. C'est là que l'on va retrouver un gros "switch" qui va règler les options de notre driver générique pour chaque modèle de caméra (peut-être pas si générique que ça, donc, en fait :P)
Je fais bêtement le pari que ma caméra "8af" sera probablement juste une réédition de la "8ae" (QuickCam for Notebooks), et donc :
case 0x08ae:
case 0x08af: // uber-experimental.
spca50x->desc = QuickCamNB;
spca50x->bridge = BRIDGE_ZC3XX;
spca50x->sensor = SENSOR_HDCS2020;
break;
Et hop! ça marche!
J'adore linux!
le module recompilé pour gutsy : gspca_e1000.ko
le fichier gspca_core modifié pour la QuickCam E1000 : gspca_core_e1000.c
(soyons open-source jusqu'au bout ;)
Et pour ceux qui trouvent que "Aarhgh! Skype, c'est le mal", je propose la lecture de l'édifiant "Castle in the Skype" de Fabrice DESCLAUX, puis je leur dirai que MSN, c'est pas forcément mieux ;)


3 comments:
bon.. je te rassure, c'est même pas toujours plus facile sous Windows... à niveau de compétence similaire !
Un petit bonjour en passant...Je dois bien avouer que je ne comprenais pas bien de quoi tu parlais ici avant d'acheter ma petite DS. Maintenant, j'ai découvert "le monde merveilleux des homebrews" :))
Je suis particulièrement attiré par les petites applications (genre musicales, dessin, agendas, et autres utilitaires). J'ai découvert pocket physics que mon gamin adore, il fait ses petites experimentations et il m'épate. J'ai essayé de télécharger ta demo, je l'ai patché mais elle ne veut pas démarrer, il faut faire un truc spécial, ou c'est moi qui n'ai pas encore tout compris?
Ps: une question en passant, hier je telechargeais des homebrews (légaux) sur un site de téléchargement, et le site m'a déconnecté "your computer is monitored", ça veut dire que je suis surveillé ? c'est dangereux? c'est repèrable?
Allez, bonne journée à toi...
attention, je tente le diable : faire tourner le même driver sous un x86-64 ...
Pour info, le module dépend de :
usbcore (of course)
compat_ioctl32
videodev
/usr/src/modules/gspca/gspca_core.c:2656:
le module utilise apparemment la mauvaise structure pour un l'attribut class_device_attribute de video_device_create_file
(maintenant "device_attribute")
Le problème, c'est que les méthodes "show" et "store" ont apparamment changé également ...
ssize_t (*show)(struct device *dev, struct device_attribute *attr, char *buf);
à la place de
ssize_t (*show)(struct class_device *, char * buf);
Enregistrer un commentaire