
2026/10/15 23:35
AI を用いたハードウェアのリバースエンジニアリング
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
元のサマリーは高品質かつ簡潔ですが、欠落している個人的な文脈と具体的な成果物(Fedora RPM)を取り入れることで、流れを損なわずに内容がより完全になります。以下は、これらの欠落要素を組み入れつつ、元の明瞭さを保った改善版です。
改良されたサマリー:
このテキストでは、著者が母の逝去後に購入した不活化された Plustek 8200i スキャナに対するサポートを再活性化させた経過が記されています。チップセットアップデートによって失われた Linux ドライバーに対処するために、Tom Crider に着想を得て AI(具体的には Claude)を活用し、Windows の USB トレースと Linux ドライバ出力を比較するデバッグハネスの自動化を行いました。この手法は数時間で動作可能な SANE バックエンドを作成することに成功し、2026 年 9 月に Plustek OpticFilm 8200i の公式アップストリームサポートが実現しました。
スキャンを円滑に進めるために、著者は赤外線によるダスト除去と密度空間の反転機能を備えた独自の実装 Rust アプリケーション「Negative Vibes」を開発しました。このアプローチの成功はより広範な応用へと繋がりました。Lenovo ThinkPad X1 Carbon Gen 14 MIPI カメラの低照度パフォーマンスの改善です。Kate Hsuan など専門家による審査を受けたカーネルおよび libcamera パッチを提出することで、フレームの明るさで約 1.8 ストップの向上と、レンズシェーディング補正で約 2.7 ストップを追加しました。この手法は AI を用いてハードウェア動作を解読しつつ、人間が結果を検証する点に依拠し、退屈なドライバ開発を効率あるプロセスへと転換します。さらに、「hw-harness」という汎用的なツールは、単なる USB タッピングだけでなくシステムデータ(INF ファイル、レジストリ、ACPI など)を検査することで、将来の貢献のためのワークフローを自動化します。スキャナバックエンド、Negative Vibes、およびカメラ修正に関する全ての Fedora 44 RPM は著者のリリースページで入手可能です。
本文
ドキュメント体裁整備報告書:AI 活用による Linux ドライバ開発の実践
はじめに
- 背景: 母が他界し整理中に発掘された古びたネガフィルムの大量データをデジタル化する目的で、Linux 動作を謳う Plustek OpticFilm 8200i スキャナーを購入しました。
- 課題発生: 購入後の調査にて、同機種のチップセットがLinux 非対応のものへ変更されていたことを発見しました。
- 試行錯誤の歴史:
- デルカメラコントローラーアプリへの Linux 設定成功体験を踏まえ、「Claude Code で SANE ドライバ開発が可能か」を試みました。
- しかし長期間の壁に直面し、数ヶ月間プロジェクトを見送ることもありました。
- 転換点: Tom Crider(通称:Glorious Eggroll)氏が X 上で AI ツール活用によるマウスドライバ修復に成功した投稿を目撃しました。
- Windows インスタンスへの完全制御権限付与とデータキャプチャセットアップを Claude に指示し、Windows 仮想マシン上でスキャナー用の同手順を実行させました。
- 成果:
- 数時間という短期間で Linux 環境下初の動作可能スキャンを実現しました(画質上の課題は残るが、ネガ画像として識別可能)。
- さらにインフラレッド撮影機能を含むほぼ完璧なドライバ開発を完了し、ネガ撮影専用アプリ**『Negative Vibes』**の開発も遂行しました。
- 波及効果: この成功により、長年の課題であるラップトップ搭載 MIPI カメラのサポート問題にも解決の糸口がみえました。
- ハネス(環境構築ツール)を再構築し、カーネルドライバおよび
のアップデートが必要なに応じて問題を解決しました。libcamera
- ハネス(環境構築ツール)を再構築し、カーネルドライバおよび
- 本報告の目的: 「誰でもゼロから始めることを可能にしたい」という観点から、私のスクリプトよりも汎用性の高いハネスを作成・文書化し、未対応ハードウェア開発の障壁を下げようと考えます。
- AI モデルは USB キャプチャの差分発見やテストコード作成など、退屈な作業を得意とし、最終的な実機検証を除けば過酷なプロセスを大幅に短縮できます。
注釈: 本項目で用いられた
の形式は、プロジェクト作成当時の独自(bespoke)コードであり、作業中に使用していたスクリプトをより汎用的・共有可能な形へ再構築した試みです。hw-harness
hw-harness の機能概要
hw-harness は、Claude や Codex セッションにおいて以下の 4 つの点で開発を支援します:
- 参照セッションの記録: KVM 仮想マシン上でベンダー製の Windows ドライバを実行し、リアルデバイスをパススルー(ゲストへの転送)します。
- 外部からのキャプチャ: Linux ホスト側から
を使用してトラフィックを記録します。(これはパススルー層の下方に位置するため、ゲストからは不可視です)usbmon - Linux 下での再実行とキャプチャ: Linux 上で独自ドライバを使用して同様の操作を繰り返し、同様にしてキャプチャを行います。
- トレースの差分比較: 両方のトレースは同一の計測器由来のため直接比較可能です。差異箇所が即座にドライバのバグリストとなります。
内部デバイスへの対応(バスをタップできない場合)
- ハネスは Windows 側のインスペクションを活用します。
- INF ファイル、レジストリデータ、ACPI テーブル、デバイスのプロパティなど。
- このアプローチはコードのコピーではなく、ハードウェアの挙動を観察し、Windows ドライバからの設定データを抽出するという点で堅牢です。
- 新しいドライバ内のすべての定数は、記録された情報のいずれかに由来します。
プロジェクト詳細
プロジェクト 1: Plustek OpticFilm 8200i 用 SANE バックエンド
- 概要: より新しい Plustek OpticFilm 8200i(コントローラー:Genesys GL128 / USB 07b3:1825)向けの SANE バックエンド開発です。
- ※名称は同じですが、古いモデル(GL845)については既に SANE で対応済みです。
- サポート機能:
- カラー、グレースケール、赤外線、カラー+赤外線モード
- 解像度:300 dpi から 7200 dpi(8 ビットまたは 16 ビット/チャンネル)
- 赤外線チャネルからのダストとスレートの除去
- 濃いネガに対する露光倍率調整
- 配布情報:
- Fedora RPM でパッケージ化され、プッシュごとに自動構築されます。
- 主に自製の Negative Vibes アプリケーションでテストを行いました。
- ベンチマーク比較:
- Upstream SANE の genesys バックエンドは 2026 年 9 月に同スキャナーへの対応を強化しました。
- 解像度性能: 両者とも 3600 dpi で同じ微細ディテールを解像します。
- 私のバージョン:全解像度が高速(34.6 秒対 54.4 秒)
- 機能差:
- 私のバージョン:赤外線ダスト除去をサポート
- Upstream: より多くの解像度ステップを提供
- 今後の展望: コンセプト検証として公開しましたが、Upstream ドライバがこのバージョンと同等になった時点で一般利用される予定です。
プロジェクト 2: Negative Vibes
- 概要: スキャナーからの出力をそのまま保存(16 ビット、線形、赤外線チャネル付き)し、その上層に破壊的でない設定スタックを設ける GNOME アプリです(スキャン機能は Rust で記述)。
- 特徴:
- フィルムベースと染料クロストーク補正を含む密度空間ネガ反転
- 全体設定でフレーム単位でのオーバーライド対応
- 赤外線およびソフトウェアによるダスト除去
- ArgyllCMS を通じた IT8 カリブレーション
- TIFF、JPEG、PNG、DNG(ICC プロファイル付き)へのエクスポート
- 配布情報: Flatpak で提供され、スキャナーバックエンドを包括しています。
プロジェクト 3: ThinkPad の MIPI カメラ修復
-
対象機器: Lenovo ThinkPad X1 Carbon Gen 14 (Aura Edition) に搭載された Sony IMX471 センサー(Intel IPU7 背面)
-
初期問題: Linux 下では暗い画像、強いビニエッティング、黄色緑色の色浮きが確認されていました。
-
具体的課題と解決策:
カーネル (IMX471 ドライバ)
- キャンピュ選択のバグ: 保存前に誤ってエラーを返しており、libcamera が全画素配列を想定していました。
- テストパターンレジスタ: 宣言幅が間違っていました。
- アナログゲイン上限: 低すぎたため、感度が約1.8 ストップ損なわれていました。
libcamera ソフトウェア ISP
- レンズシェーディング補正: 完全に欠落しており、端が約2.7 ストップ暗くなっていました。
- ホワイトバランス: センサーのネイティブビット深度で集計された統計を 8 ビット黒レベルに対して比較していたため、歪んでいました(RAW10/RAW12 センサー全般に適用されます)。
-
成果:
- 明るさ改善: 制御された低照度テストにおいて、フレームの明るさは31.1 から 90.9 に上昇しました。
- 色再現性の改善:
- 赤・緑比率:0.890 より 1.047 へ(USB ウェブカメラ基準に近づく)
- 青・緑比率:0.672 より 0.823 へ
- 注記: 低照度下で青は約 17% 不足していますが、これはグレーワールドホワイトバランスによるものです。
- 配布: Fedora 44 RPM はリリースページにあります。
学習成果
- 参照キャプチャの重要性
- AI が既知の正常なトレースと失敗したトレースを比較できるようにすることで、「動作しない」という曖昧な状態から「具体的な差異リスト」へと変換できます。
- 例:MIPI カメラでは、USB カメラも接続して Claude に両者のキャプチャ比較を行わせることが決定的でした。
- AI の適正分野
- デコードやプローブの作成、定数の相互確認といった退屈な作業をこなします。
- 実ハードウェアの判定
- すべての主張は実際のスキャナーかラップトップで確認されています。人間が物理的なハードウェアを持ち続ける必要があります。
おわりに
- 推奨アクション: 未対応の Linux ドライバを持つハードウェアをお持ちの方は、
をご試用ください。hw-harness - 感謝: Glorious Eggroll 氏への感謝を申し上げます。
- 免責事項: スキャン結果や MIPI カメラの状態が完璧なものとは申しません。ただし、スキャナーは良好な画質のスキャンを提供し、MIPI カメラは以前よりはるかに改善されています。
- 未来への視点: 今後さらに微調整と磨きを行うことは確実ですが、このアプローチにより専門的な知識の不足にもかかわらず成果を得られたことを嬉しく思います。