
Claude Codeを使った2つのLinux対応
Red HatのChristian Schaller氏は、Claude Codeを使い、Linuxで動作しなくなっていたPlustekのフィルムスキャナー用ドライバーと、ThinkPadのMIPIカメラを修正しました。いずれも、Windowsでの動作や実機のデータを手掛かりに、未公開のハードウェア仕様を調べる取り組みです。
スキャナーはPlustek OpticFilm 8200iで、同じ製品名の旧モデルとは異なるGenesys GL128コントローラーを搭載しています。Schaller氏が購入した個体は、Linuxの既存ドライバーが対応していないチップセットに変更されていました。
Claude Codeに、Windows仮想マシン上でメーカー製ドライバーを使ってスキャンした際のUSB通信を調べさせました。その結果、数時間でLinuxから初めてスキャンでき、その後、赤外線スキャンにも対応するドライバーを作成したとSchaller氏は記しています。
USB通信の記録から仕様を探る
手順の軸は、メーカー製ドライバーが機器を操作するときの通信を記録し、Linux側の実装と比較することです。Schaller氏は実機をWindows仮想マシンへ接続し、Linuxホスト側でusbmonを使って通信を記録しました。
USB HID機器の解析では、WindowsでUSBPcap、Linuxでusbmonを使い、Wiresharkで通信を記録・分析できます。仮想マシンを使う場合は、Windows上のメーカー製ソフトで操作しながらLinux側で記録し、同じ操作をLinuxでも行って双方の記録を比べます。比較の前提をそろえるため、記録には操作内容が分かる名前を付けます。
解析の入り口として、USBのベンダーIDと製品ID、機器のインターフェースやエンドポイントを確認できます。USBには制御、バルク、割り込み、アイソクロナスの転送方式があり、通信内容は機器の用途によって異なります。標準クラスで解釈できないベンダー独自プロトコルでは、特定の操作ごとに通信を記録し、差分からコマンドやデータの構造を調べます。
スキャナーとアプリの対応範囲
Schaller氏のドライバーはカラー、グレースケール、赤外線などのモードに対応し、解像度は300〜7200dpi、各チャンネル8または16ビットでの読み取りをサポートします。赤外線チャンネルを使ったほこり・傷の除去や、濃いネガ向けの露出倍率も実装しました。
この作業と並行して、Rust製のGNOMEアプリ「Negative Vibes」も作成しました。スキャンデータを16ビットの線形データと赤外線チャンネル付きで保持し、ネガ反転やほこり除去などの設定を後から変更できます。
アプリはFlatpakとして配布され、スキャナーバックエンドを含みます。現時点でのテスト対象は8200iです。幅広いフィルムスキャナーへの対応には、SANEが赤外線チャンネルを標準的に扱える仕組みも必要だとSchaller氏は説明しています。
MIPIカメラの修正と実機での検証
もう一つの対象は、Lenovo ThinkPad X1 Carbon Gen 14 Aura EditionのMIPIカメラです。Sony IMX471センサーとIntel IPU7を使うこのカメラは、Linux上で暗い画像や強い周辺減光、黄緑色の偏りが出ていました。
修正にはカーネルドライバーとlibcameraの両方が関わりました。カーネル側ではクロップ領域の保存やテストパターン用レジスターの幅、アナログゲイン上限を直しました。libcamera側ではレンズシェーディング補正とRAW10・RAW12センサーのホワイトバランス統計処理を修正したとSchaller氏は述べています。
低照度の条件をそろえた試験では、修正前後でフレーム輝度が31.1から90.9に上がりました。カメラ用のカーネルパッチは提出済みで、libcameraのパッチはレビュー中です。Schaller氏によると、AIに通信記録の読み解きや調査用コードの作成を任せ、実機で動作を確かめる役割は人間が担いました。









