HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

AIを用いたハードウェアのリバースエンジニアリング

Using AI to reverse engineer hardware (blogs.gnome.org)

15 pointsby ErenayDev5 コメント

要約

著者は、AI(Claude)を活用して、LinuxでサポートされなくなったフィルムスキャナーやラップトップのMIPIカメラといったハードウェアの問題を解決しました。AIにWindows仮想マシンでのデータキャプチャやUSBトラフィックの分析を行わせることで、従来は数週間かかっていたリバースエンジニアリング作業を大幅に短縮し、ドライバーやカーネルパッチの開発に成功しました。この経験から、AIがドキュメント化されていないハードウェアの解析に有効であることを示しています。

全文翻訳

母が亡くなった後、子供の頃の家族旅行などの写真が入った古いフィルムネガの大きな箱が残りました。そこでネガフィルムスキャナーを購入することにし、Plustek 8200iがLinuxでサポートされていることを確認して購入しました。しかし、スキャナーのチップセットが変更され、Linuxでサポートされなくなったことが判明しました。そこで、Dellカメラコントローラーアプリのように、Claudeコードを使って一部のハードウェア用のLinux設定ツールを作成することに成功していたので、Claudeが動作するSANEドライバーの取得を手助けしてくれるかもしれないと思いました。私は基本的に行き詰まり、長い間何も進まず、数ヶ月間プロジェクトを放棄していました。その後、Tom CriderことGlorious EggrollがAIツールを使ってマウスドライバーを修正する方法について投稿したXでの投稿を見ました。彼は基本的にAIエージェントにWindowsインスタンスの完全な制御を与えて、ドライバー修正に必要なデータをキャプチャできるようにセットアップしたと説明していました。そこで、彼のツイートをClaudeに貼り付け、Tomが私のスキャナーで行っているのと同じことを行うために、Windows仮想マシンをセットアップするのを手伝ってくれるように頼みました。Windowsでスキャンを実行し、その間にUSBデータをキャプチャできる能力と、おそらくClaudeコードの改善の組み合わせが、驚異的な効果を発揮したのだと思います。数時間後、Linuxで初めて動作するスキャンができました。確かに品質には問題がありましたが、ネガフィルムの画像として100%認識可能でした。数日後、ほぼ完璧なドライバー(赤外線スキャンサポートを含む)が完成しました。しかし、私がプロジェクトを諦めてから再度試みるまでの間に、誰かがSANEにスキャナーをサポートするコードをコミットしていたことが判明しました…時々起こることです。また、ネガフィルムスキャナー用のアプリケーションもClaudeに作成してもらい、「Negative Vibes」と名付けました。かわいい名前だと思います。とにかく、スキャナーの件で成功したので、これを最後にラップトップのMIPIカメラサポートの最終的な問題を解決するために使えるのではないかと思いました。そこで、Claudeに作成したハーネスを再利用し、カーネルドライバーとlibcameraを必要に応じて更新して、ラップトップのMIPIカメラを修正するように指示しました。朝から作業を開始し、その日の終わりまでには、カーネルとlibcameraの両方のパッチが準備された、大幅に改善された状況になっていました。そこで、これは世界と共有する価値があるかもしれないと思い、誰でもゼロから始めることができる一方で、Claudeにハーネスを汎用化し、ドキュメント化して、他の人が自分のハードウェアでこれを試すためのパスを少しでも容易にするように依頼しました。 ドキュメント化されていないハードウェア用のドライバーを作成することは、常に面倒でした。バスのトラフィックをキャプチャし、ヘックスダンプを凝視し、各レジスタや制御転送が何をするかについての仮説を立てます。次に、それらを1つずつテストします。通常は数週間かかります。概念的に難しいことは何もありませんが、多大な忍耐とスキルが必要です。その種の作業はAIモデルに適しています。数千行のUSBキャプチャを読み、1バイトが変化するシーケンスが繰り返されることに気づき、そのバイトが何を意味するかを提案できます。それを確認するためのテストを書き、飽きることはありません。人間は依然として何を構築するかを決定し、それが実際のハードウェアで機能するかどうかを確認しますが、退屈な作業は大幅に縮小されます。 hw-harness 私はこれらのプロジェクトでこの形式のhw-harnessを使用しなかったことに注意してください。これは当時基本的にカスタムコードだったため、このプロジェクトは、作業中に使用したスクリプトからハーネスをより汎用的で共有可能なものにする試みです。 hw-harnessがClaudeまたはCodexセッションを支援することを意図していること: 1.参照セッションを記録する。ベンダーのWindowsドライバーをKVM仮想マシンで実行し、実際のデバイスをゲストにパススルーします。 2.VMの外側からキャプチャする。Linuxホスト上のトラフィックをusbmonで記録します。これはパススルーレイヤーの下に位置するため、ゲストからは見えません。 3.Linuxで独自のドライバーを使用して同じ操作を繰り返し、同様の方法でキャプチャします。 4.2つのトレースを比較する。両方とも同じインストゥルメントから取得されるため、直接比較できます。違いはドライバーバグのリストです。 内部MIPIカメラなど、タップするバスがないデバイスの場合、ハーネスは代わりにWindows側の検査を使用します。これは、INFファイル、レジストリデータ、ACPIテーブル、デバイスプロパティを意味します。このアプローチは、コードのコピーに依存せず、ハードウェアが何をするかを観察し、Windowsドライバーからのみ設定データを抽出するため、問題ないはずです。したがって、新しいドライバーのすべての定数は、記録された何かにさかのぼることができます。 したがって、興味のある方のために、私が実行したプロジェクトと必要なものについて3つの短い説明があります。 プロジェクト1:Plustek OpticFilm 8200i用のSANEバックエンド 2つの利用可能なドライバーのドライバー出力を比較します。最初のプロジェクトは、新しいPlustek OpticFilm 8200i用のSANEバックエンドです。Genesys GL128コントローラー(USB 07b3:1825)を使用しており、Linuxサポートはありませんでした。同じ名前の古いモデルはGL845を使用しており、すでにSANEで処理されています。バックエンドは以下をサポートします:カラー、グレースケール、赤外線、カラー+赤外線モード。300から7200 dpiの解像度、8ビットまたは16ビット/チャンネル。赤外線チャンネルからのほこりや傷の除去。高密度のネガフィルム用の露出乗数。 これはFedora RPMとしてパッケージ化されており、プッシュごとに自動的にビルドされます。私は主に自分のNegative Vibesアプリケーションでテストしました。Linuxではネガフィルムスキャニングのオプションがあまりないためです。アップストリームSANEのgenesysバックエンドも2026年9月にこのスキャナーのサポートを獲得したため、両者を比較しました。どちらも3600 dpiで同じ細かいディテールを解決します。私のものはフル解像度(34.6秒対54.4秒)でより高速であり、赤外線ほこり除去をサポートしています。アップストリームはより多くの解像度ステップを提供します。ウェブページには、確認できるインタラクティブなサイドバイサイド比較があります。これらは単一ユニット、単一フレームの結果であるため、1つのデータポイントとして扱ってください。現在2つのドライバーの状態を示すインタラクティブなページを確認してください。発見したことがSANEプロジェクトでアップストリームドライバーのいくつかの小さな問題を修正するために使用されることを願っています。とにかく、私はこのプロジェクトを証明の概念として公開しました。なぜなら、アップストリームドライバーがこれと同等のレベルに達したら、私自身を含む誰もがそれを使用すると予想されるからです。 プロジェクト2:Negative Vibes 赤外線クリーニングを含むネガフィルムのフルスキャンが完了しました。 スキャナーがネガフィルムをスキャンするのが依然として面倒な場合、ドライバーだけではあまり役に立たないため、Negative Vibesを作成しました。これはRustで書かれたGNOMEアプリで、フィルム対応のSANEスキャナーでカラーおよび白黒のネガフィルムやスライドをスキャンするためのものです。スキャンは、スキャナーが提供したとおりに正確に保持されます:16ビット、リニア、赤外線プレーン付き。それ以外のすべては、非破壊設定のスタックであり、外観を変更して再度エクスポートできます。含まれるもの:フィルムベースとダイクロストーク補正を備えた密度空間ネガ反転。フレームごとのオーバーライドを備えたロールワイド設定。赤外線およびソフトウェアほこり除去。ArgyllCMSを介したIT8キャリブレーション。TIFF、JPEG、PNG、DNGへのエクスポート(ICCプロファイルとメタデータ付き)。スキャナードライバーを含むFlatpakとして出荷されます。これまでのところ8200iでテストされています。目標は、SANEがサポートするすべてのフィルムスキャナーをサポートすることです。そのためには、SANEが赤外線チャンネルを公開するための標準的な方法を必要としますが、まだ持っていません。 プロジェクト3:ThinkPadのMIPIカメラの修正 修正の前後のMIPI出力を示しています。部屋が比較的暗かったため、セッション終了時の色は見た目よりも良いです。Lenovo ThinkPad X1 Carbon Gen 14(Aura Edition)のカメラは、Intel IPU7の後ろにSony IMX471センサーを使用しています。Linuxでは、暗い画像、強いビネット、強い黄色がかった緑色のキャストを生成しました。mipi-fixes-x1-auraは修正を集めたものです。これはこのラップトップにのみ関連しているため、より大きなパッケージ化されたプロジェクトではありませんが、カーネルパッチはすでにKate Hsuanに提出されており、libcameraパッチはWim TaymansによってLibcameraへの提出のためにレビューされています。カーネル(IMX471ドライバー):クロップ選択バグにより、クロップ矩形を保存する前にエラーが発生したため、lib