Un driver pour hp scanjet 4600/4670?
Par Ille le mardi, janvier 12 2010, 13:42 - C - Lien permanent
Je possède un scanner HP scanjet 4670, celui-ci a la particularité d'être transparent, on voit donc assez précisément comment le document à scanner est positionné sur la vitre. Malheureusement, après des années d'attente, aucun driver n'a été publié, ni par HP, ni par la communauté OpenSource. Evidemment, ce scanner n'ayant pas eu un succès retentissant! Bref, fatigué de ne pas pouvoir m'en servir comme je le souhaite sous Linux, j'ai décidé de me plonger un peu dans les mystères de la programmation de driver.
Tout a débuté par l'acquisition des logs de plusieurs scans réalisés sous windows XP avec l'excellent SniffUSB, basé sur le non moins excellent usbsnoop de Benoît Papillaut. Ensuite la lecture des sources du driver mustek_usb2 pour SANE m'a fourni beaucoup d'indices. L'analyse de ces logs et les indices récoltés m'ont permis de comprendre un petit peu ce qui se passait entre l'ordinateur et le scanner au moment d'un scan. J'ai ainsi pu développer assez rapidement un pilote non fonctionnel qui permettait à SANE de reconnaître le scanner et de l'initialiser. A ce stade, j'étais en mesure de faire s'allumer et s'éteindre la lampe du scanner, clignoter la led, récupérer les évènements provoqués par l'appui sur les boutons de la façade du scanner., mais toute acquisition restait impossible, trop de choses restant parfaitement incomprises (notamment comment fonctionne un scanner). Les données à analyser représentaitent une masse d'octets obscurs, et je n'avais pas la moindre conception de ce que pouvait être une table GAMMA ou une table de déplacement du moteur. Quant à ce que pouvait être le GAIN et l'OFFSET, c'était encore plus abscon. J'ai donc mis ce projet de côté pendant quelques temps. Et puis... Et puis un jour, je suis tombé sur ce site. Tout d'un coup, je n'étais plus seul au monde avec mon scanner, cela m'a redonné un peu de courage. Et je me suis replongé dans mon code source, dans l'analyse des fichiers de logs, dans l'étude de ce qu'est le GAMMA, le GAIN, l'OFFSET, etc. J'ai fini par poser quelques questions sur la liste de développement de SANE. Je comprends mieux maintenant le travail qui reste à accomplir, Mais en faisant les choses petit à petit, en comprenant de mieux en mieux la procédure à suivre pour obtenir une numérisation, je ne désespère pas d'obtenir un jour un pilote, même basique, pour ce scanner. Bon, il me reste encore à implémenter le calcul pour le gain et l'offset, comprendre comment les tables de déplacement du moteur sont calculées, apprendre à calculer une table gamma, c'est à dire, deviner ce qui se passe dans l'ordinateur avant d'envoyer les paramètres au scanner. Mais pour cela, je n'ai pas de fichiers de logs, il faut donc y aller à tâtons. Pour le reste, j'ai identifié la quasi totalité des commandes passées par le pilote windows au scanner, ainsi que leur ordre d'exécution et leur utilité.