Contexte et objectif

L’auteur a acquis un scanner Plustek OpticFilm 8200i, dont le chipset Genesys GL128 (USB 07b3:1825) n’était plus supporté sous Linux. Après plusieurs tentatives infructueuses, il a sollicité Claude, un modèle d’IA générative, pour automatiser la création d’un backend SANE capable de gérer les modes couleur, gris, infrarouge et les résolutions de 300 à 7200 dpi en 8 ou 16 bits.

Méthodologie d’ingénierie assistée par IA

Le processus repose sur un harnais logiciel en quatre étapes : (1) exécution du pilote Windows du fabricant dans une machine virtuelle KVM avec le dispositif passé en passthrough, (2) capture du trafic USB sur l’hôte Linux via usbmon, (3) réplication de l’opération avec le pilote en cours de développement et capture similaire, (4) comparaison des deux traces pour identifier les écarts fonctionnels. Claude a généré les scripts de capture, les diff et les squelettes de code C pour le driver, tout en proposant des hypothèses sur les octets variables observés dans les dumps hexadécimaux. Pour les caméras internes MIPI, le même harnais utilise les fichiers INF, le registre et les tables ACPI du pilote Windows comme source de configuration.

Résultats du pilote et comparaison

Le backend SANE produit supporte les modes couleur, gris, infrarouge et la combinaison couleur + infrarouge, ainsi qu’un multiplicateur d’exposition dédié aux négatifs denses. Les résolutions testées vont de 300 dpi à 7200 dpi, avec une profondeur de 16 bits par canal. En comparaison avec le backend officiel ajouté à SANE en septembre 2026, les deux implémentations résolvent les mêmes détails à 3600 dpi. Le pilote de l’auteur scanne une image pleine résolution en 34.6 s contre 54.4 s pour la version officielle, tout en conservant le traitement infrarouge de suppression de poussière. La différence de vitesse provient d’un pipeline de décodage simplifié généré par l’IA, mais la version officielle offre davantage d’étapes de résolution.

Analyse des limites et perspectives

Le harnais dépend d’un accès à un environnement Windows fonctionnel et d’une interface USB capable de passer le dispositif en mode passthrough. Les captures sont limitées à un seul cycle d’opération ; des scénarios plus complexes (ex. changements dynamiques de configuration) nécessitent des itérations supplémentaires. De plus, la génération de code par Claude reste guidée par les spécifications du développeur ; les erreurs de logique ou les hypothèses erronées sur les registres doivent être corrigées manuellement. Malgré ces contraintes, la méthode montre que l’automatisation de l’analyse de trafic et la suggestion de code peuvent réduire le temps de développement de semaines à quelques heures. L’auteur a également publié « Negative Vibes », une application GNOME écrite en Rust, distribuée en Flatpak, qui exploite le backend pour offrir une chaîne de traitement non destructive incluant l’inversion en espace de densité, la correction de cross‑talk des teintures et la calibration IT8 via ArgyllCMS. Cette approche pourrait être généralisée à d’autres périphériques non documentés, à condition de disposer d’un pilote Windows de référence.