Dans un récit publié le 15 octobre 2026, Christian Fredrik Kalager Schaller explique que Claude Code l’a aidé à analyser les échanges USB d’un scanner et à corriger des défauts de caméra sous Linux. Il a choisi les changements et les a testés sur les appareils concernés, un Plustek OpticFilm 8200i et un Lenovo ThinkPad X1 Carbon Gen 14 Aura Edition. Son récit détaille les deux projets.

Du trafic USB à un backend SANE pour le scanner

Pour comprendre le scanner, Schaller a lancé le pilote du fabricant dans une machine virtuelle Windows et capturé les échanges USB pendant son utilisation. La variante récente du Plustek OpticFilm 8200i qu’il décrit utilise un contrôleur Genesys GL128 et l’identifiant USB 07b3:1825 ; l’ancienne version portant le même nom repose sur un GL845.

Le backend SANE qu’il a développé prend en charge les modes couleur, niveaux de gris et infrarouge, ainsi que la combinaison couleur et infrarouge. Il propose des résolutions de 300 à 7 200 dpi et une profondeur de 8 ou 16 bits par canal. Schaller mentionne aussi la suppression des poussières et rayures à partir du canal infrarouge, ainsi qu’un réglage de l’exposition pour les négatifs denses.

Il rapporte avoir obtenu une première numérisation reconnaissable en quelques heures, puis un pilote presque parfait avec prise en charge de l’infrarouge quelques jours plus tard. Sa comparaison porte sur un seul scanner et une seule image : à pleine résolution, son backend a pris 34,6 secondes, contre 54,4 secondes pour celui de SANE en amont. À 3 600 dpi, les deux ont restitué le même détail fin.

SANE en amont avait déjà ajouté la prise en charge de cette variante en septembre 2026, avant que Schaller ne le découvre. Son backend constituait donc un projet distinct, et sa comparaison portait sur deux solutions pour ce scanner.

Les modifications de la caméra du ThinkPad

Le second projet concerne le capteur Sony IMX471 du ThinkPad, placé derrière le processeur d’image Intel IPU7. Schaller décrit des images Linux sombres, vignettées et tirant vers le jaune-vert. Les changements rapportés touchent à la fois le pilote du noyau et le traitement d’image de libcamera.

Dans le pilote du noyau, Schaller a corrigé une erreur de sélection du recadrage, la largeur déclarée d’un registre de mire de test et une limite de gain analogique qui réduisait la sensibilité d’environ 1,8 diaphragme. Du côté du processeur de signal d’image de libcamera, il a ajouté une correction du vignettage — l’assombrissement des coins — et corrigé des statistiques de balance des blancs qui mélangeaient la profondeur native du capteur et un niveau de noir sur 8 bits.

Lors de son essai contrôlé en faible lumière, le rapport rouge/vert est passé de 0,890 à 1,047, et le rapport bleu/vert de 0,672 à 0,823. Schaller indique que le bleu restait environ 17 % trop faible dans ces conditions. Il a soumis les correctifs du noyau à Kate Hsuan ; les modifications de libcamera étaient examinées par Wim Taymans en vue de leur soumission.

Un harness générique documenté après les projets

Schaller indique que les deux projets initiaux reposaient sur des scripts conçus pour l’occasion, et non sur la forme générique de hw-harness, documentée ensuite. Le processus décrit pour ce harness consiste à enregistrer l’activité du pilote du fabricant dans une machine virtuelle Windows, à capturer les échanges depuis l’hôte Linux avec usbmon, puis à répéter l’opération avec le pilote Linux et à comparer les traces. Pour des appareils sans bus accessible, comme une caméra MIPI interne, la méthode prévoit une inspection depuis Windows.

Dans ces deux projets, Schaller a gardé la main sur le choix des changements et leur validation sur le matériel physique.