Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
freebsd:usb_scanner [2006/04/05 13:09]
hotbox
freebsd:usb_scanner [2010/01/12 13:29] (current)
Line 1: Line 1:
 +====== Scanner USB et send-pr ======
  
 +===== Intro =====
 +
 +Une phrase peut changer le cours de votre vie, par exemple "​Cheri,​ je veux un gosse" ou encore "​Cheri,​ on s'​achète une imprimante-scanner-four-wifi-appareil-photo-motocrotte USB ?".
 +Evidemment, lorsque cela arrive, il faut vite reprendre ses esprits et réagir (soit sauter par la fenêtre ou soit s'​asperger d'eau bénite et se lancer dans l'​aventure).
 +
 +Donc, le but de ce tip est de montrer qu'il est simple de configurer un scanner sous FreeBSD (ahem). Plus sérieusement,​ pour continuer, vous aurez besoin de deux mains, d'une paire d'yeux et aussi d'une adresse mail.
 +
 +===== Conditions d'​utilisation =====
 +
 +[[http://​www.sane-project.org/​|SANE]] est à votre scanner ce que CUPS est à votre imprimante : Vérifiez donc que votre matériel est correctement supporté [[http://​www.sane-project.org/​cgi-bin/​driver.pl|ici]].
 +Si tel n'est pas le cas, alors vous êtes certainement très poilu et très couillu (pour ne pas avoir regardé avant d'​acheter @#!) : vous n'avez plus qu'à contribuer à SANE pour l'​ajout de votre scanner.
 +
 +Ce tip a été testé sous FreeBSD 6.0R et 5.4
 +
 +===== Plan =====
 +
 +  * Récuperer les infos USB
 +  * Appliquer les modifications dans le src tree
 +  * Installer SANE
 +  * Tester
 +  * Envoyer les patchs au GNATS
 +
 +===== Let's GO =====
 +
 +Si votre interface est un scanner seul, alors pas de problème, sautez ce paragraphe. Si vous avez la chance d'​avoir un toaster (comprendre imprimante multi-fonction,​ dont scanner), alors il faut être conscient que vous ne pouvez pas utiliser en même temps celui-ci et imprimer par exemple. L'​explication se trouve dans le mode de fonctionnement des drivers usb de FreeBSD : ainsi, en résumé, vous ne pouvez pas avoir 2 drivers pour un même device. Donc solution de contournement : ne compilez pas les modules usb en dur dans le noyau (exemple ulpt(4) et uscanner(4)),​ mais utilisez les modules avec kldload(8). Ainsi, chargez le module uscanner(4) avant d'​utiliser la fonction scanner, et lorsque vous souhaitez imprimer, déchargez le module et chargez ulpt(4). Bien entendu, il faut redémarrer l'​imprimante avant chaque chargement de module.
 +
 +Commençons quand même par vérifier que votre scanner n'est pas déjà supporté :
 +
 +Branchez votre scanner et allumez-le, puis, surveillez votre /​var/​log/​messages. Si le device uscanner0 apparaît, alors c'est supporté (ouais !). Sinon ugen0 apparaît et il faut donc modifier quelque peu 2 fichiers dans votre source tree (oui madame).
 +
 +<​code>​
 +Exemple :
 +kernel: ugen0: USB MFP, rev 1.00, addr 3
 +</​code>​
 +
 +Il nous faut maintenant récuperer les infos usb de votre dispositif :
 +
 +<​code>​
 +(en root) #usbdevs -v
 + port 1 addr 3: full speed, self powered, config 1, USB MFP(0x080f),​ EPSON(0x04b8),​ rev 1.00
 +</​code>​
 +
 +Hop ! on récupère //0x04b8// qui correspond au constructeur (ici EPSON) et //0x080f// au modèle (dans mon cas une Stylus Photo RX425).
 +
 +Maintenant on arrive dans la partie modifications des sources noyaux, rdv dans /​usr/​src/​sys/​dev/​usb :
 +
 +Il nous faut modifier 2 fichiers (c'est énorme je sais) :
 +
 +<​code>​
 +# On sauvegarde les anciens :
 +cp usbdevs usbdevs.orig
 +cp uscanner.c uscanner.c.orig
 +
 +#Fichier usbdevs
 +--- usbdevs.orig ​       Wed Apr  5 12:09:57 2006
 ++++ usbdevs ​    Wed Apr  5 12:11:04 2006
 +@@ -853,6 +853,7 @@
 + ​product EPSON 1260             ​0x011d ​ Perfection 1260 scanner
 + ​product EPSON 1660             ​0x011e ​ Perfection 1660 scanner
 + ​product EPSON 1670             ​0x011f ​ Perfection 1670 scanner
 ++product EPSON RX425            0x080f ​ Stylus Photo RX425 scanner
 +
 + /* e-TEK Labs products */
 + ​product ETEK 1COM              0x8007 ​ Serial
 +
 +#Fichier uscanner.c
 +--- uscanner.c.orig ​    Wed Apr  5 12:10:02 2006
 ++++ uscanner.c ​ Wed Apr  5 12:11:41 2006
 +@@ -202,6 +202,7 @@
 +  {{ USB_VENDOR_EPSON,​ USB_PRODUCT_EPSON_1660 }, 0 },
 +  {{ USB_VENDOR_EPSON,​ USB_PRODUCT_EPSON_1670 }, 0 },
 +  {{ USB_VENDOR_EPSON,​ USB_PRODUCT_EPSON_1260 }, 0 },
 ++ {{ USB_VENDOR_EPSON,​ USB_PRODUCT_EPSON_RX425 }, 0 },
 +  {{ USB_VENDOR_EPSON,​ USB_PRODUCT_EPSON_3200 }, USC_KEEP_OPEN },
 +  {{ USB_VENDOR_EPSON,​ USB_PRODUCT_EPSON_GT9700F }, USC_KEEP_OPEN },
 +  {{ USB_VENDOR_EPSON,​ USB_PRODUCT_EPSON_GT9300UF }, 0 },
 +
 +</​code>​
 +
 +And Voila !
 +
 +Maintenant, phase ultime : recompiler le tout. Si vous utilisez les modules, alors simple :
 +
 +<​code>​
 +cd /​usr/​src/​sys/​modules/​usb
 +make all install clean
 +</​code>​
 +
 +Sinon (cas où vous utilisez uscanner(4) en dur dans votre noyau) : il vous faudra recompiler votre noyau. Dans tous les cas, je vous conseille de vous relire..
 +
 +Selon votre cas, rebootez, chargez le module et allumez votre scanner :
 +
 +<​code>​
 +--- SNIP ---
 +kernel: uscanner0: EPSON USB MFP, rev 1.10/1.00, addr 3
 +--- SNIP ---
 +</​code>​
 +
 +Votre scanner est correctement pris par uscanner(4) et vous pouvez donc maintenant installer /​usr/​ports/​graphics/​sane-backends
 +et enfin vérifier que votre scanner est trouvé par sane avec **sane-find-scanner(1)** :
 +
 +<​code>​
 +--- SNIP ---
 +found USB scanner (vendor=0x04b8,​ product=0x080f) at /​dev/​uscanner0
 +--- SNIP ---
 +</​code>​
 +
 +Pour info, SANE donne la possibilité d'​utiliser votre scanner en réseau et via [[http://​www.xsane.org/​|xsane]] d'​avoir une jolie interface bien complete (utilisable avec The Gimp)
 +
 +===== Ce n'est pas fini =====
 +
 +Pour éviter qu'à chaque csup (ou cvsup) vos changements soient effacés, je vous propose de contribuer à FreeBSD en soumettant votre patch.
 +
 +Avant tout, vérifiez que quelqu'​un d'​autre n'a pas déjà fait cette démarche [[http://​www.freebsd.org/​cgi/​query-pr-summary.cgi?​query|ici]]
 +
 +Il existe un outil tout fait pour envoyer ce genre de requêtes : **send-pr(1)**
 +Cependant, il faut que votre sendmail(8) soit bien configuré.
 +Une autre méthode est de passer par l'​interface [[http://​www.freebsd.org/​send-pr.html|web]]
 +Dans tout les cas, je vous conseille d'​utiliser send-pr(4) pour compléter la demande et d'​utiliser le moyen de votre choix (mail(1) ou www) pour l'​envoyer : send-pr(4) vous propose à la fin d'​envoyer,​ éditer ou quitter. Dans ce dernier cas, vous pourrez récupérer les infos dans le fichier qu'il vous aura dicté.
 +
 +Pour plus d'​infos,​ reportez vous à [[http://​www.freebsd.org/​doc/​en/​articles/​problem-reports/​index.html|cette doc]]
 +C'est complet, et c'est bon.
 +
 +
 +===== Changelog =====
 +
 +  * 05/​04/​2006 ​ Création du tip par hotbox
freebsd/usb_scanner.txt · Last modified: 2010/01/12 13:29 (external edit)