Ratchet – AIエージェント向けMCPサーバーを内蔵したBIOSフラッシュツールキット
Ratchetは、CH341AおよびCH347 USBプログラマ向けに設計された、Rustで書かれたハードウェアデバッグおよびフラッシュプログラミングツールキットです。コアはSPIフラッシュプログラミングとBIOS解析であり、I2C、UART、1-Wire、JTAG、SWD、CANなどのプロトコルをサポートします。MCP(モデルコンテキストプロトコル)サーバーを内蔵しており、AIエージェントがBIOSチップの読み取り、書き込み、検証、修復などのハードウェア操作を直接制御できます。現在プレリリース版で、ソースからビルドする必要があります。
Ratchet は、Rust で書かれたハードウェアデバッグおよびフラッシュプログラミングツールキットであり、CH341A および CH347 USB プログラマ向けに設計されています。その中核は SPI フラッシュプログラミングと BIOS 解析であり、実際のシリコンデバイスをエンドツーエンドで駆動するためのパスを提供します。さらに、ユニットテスト済みのプロトコル層(I2C、UART、1-Wire、パッシブ SPI スニッフィング、JTAG、SWD、CAN)、ターゲット MCU プログラマ(AVR ISP、STK500/Arduino ブートローダ、24Cxx および 93xxx EEPROM、ESP32/ESP8266、SWD および AN3155 UART 経由の STM32)、ARM デバッグサーフェス(ADIv5、Cortex-M の停止/再開/ステップ、ELF 対応メモリピーク)、JTAG IDCODE および BSDL バウンダリスキャン、ロジックアナライザモデル(Saleae/sigrok エクスポート対応)、Bus Pirate/slcan CAN ブリッジも含まれています。ただし、これらすべてが実際のハードウェアに接続されているわけではありません。各コマンドのステータスは [live]、[offline]、または [n/w](未配線)で示されます。ルールとしては、ライブトランスポートがないコマンドは、明確なメッセージとともに非ゼロで終了し、成功を偽装することはありません。
Ratchet は完全に Rust で記述されており、カスタム libusb FFI と手作りの JSON-RPC MCP サーバーを備えた単一の自己完結型バイナリであり、Node や Python ランタイムは不要です。SPI フラッシュパスでは AsProgrammer や NeoProgrammer を置き換え、flashrom、avrdude、esptool、stm32flash、OpenOCD に分散していた機能(ネイティブ USB、イメージ解析、診断ナレッジベース、AI エージェント用 MCP サーバー)をカバーしています。
現在 Ratchet はプレリリース版であり、GitHub Release はまだ公開されていないため、現在唯一のインストール方法はソースからのビルドです。現時点で実際のハードウェアを駆動する機能(CLI および MCP)は次のとおりです:SPI フラッシュおよび BIOS のエンドツーエンド操作(ステータス、検出、識別、読み取り、書き込み、検証、消去、領域消去、ブランクチェック、SFDP、書き込み保護ステータス、完全修復、完全バックアップ)。これらは実在の CH341A または CH347 に対して動作します。書き込みはまず影響を受けるセクタを消去し、ページ単位でプログラムし、書き込み進行中ビットをポーリングし、自動的に書き込み前のバックアップを作成し、読み戻して検証します。16 MB を超えるチップは自動的に 4 バイトアドレッシングに切り替わります。完全修復はガイド付きパイプラインを実行し、完全バックアップはチップ全体を名前付きファイルに読み取ります。
I2C 操作は、CH341A のビットバングまたは CH347 のネイティブモードで実行できます(スキャン、読み取り、書き込み、24Cxx EEPROM の読み書き)。JTAG IDCODE スキャンは CH347 JTAG エンジンを使用して行われます(CH341A には JTAG がありません)。バックエンドは自動選択され、まず CH347、次に CH341A をプローブし、最後にモックにフォールバックします(警告付き)。環境変数でモックを強制することもできます。プロトコル動詞は open_raw_bus() を使用し、デバイスがない場合は静かなモックフォールバックではなく、正直なエラーを返します。
オフラインツールには、I2C スニッフィング(キャプチャした (t_us, scl, sda) トレースをデコード)、JTAG BSDL ファイルの解析、ロジックアナライザのエクスポート(CSV または JSONL)、シリアルポートの列挙(POSIX)、標準入力からの REPL(SPI バックエンド経由)、および分析、差分、チェックサム、チップ情報、検索、ポストデコード、電圧リファレンスなどの分析動詞が含まれます。
まだ実際のハードウェアに配線されていない機能:UART、1-Wire、SWD、AVR、Microwire EEPROM、ESP、STM32、ロジックアナライザキャプチャ、Bus Pirate、CAN、モニター、シリアル接続、障害検索。これらのプロトコルロジックは実装され、モックに対してユニットテスト済みですが、ライブの CH341A/CH347 トランスポートアダプタはまだ配線されていません。これらは非ゼロで終了するか(または JSON-RPC エラーを返す)、決して成功を偽装しません。
破壊的パスは強化されています:短い USB 読み取りはサイレントゼロパディングではなくハードエラーとして処理され、消去および書き込みは書き込み保護されたシリコン、不明な容量のチップ、および静かに選択されたモックバックエンドを拒否します。4 バイトモードは使用後に必ず終了します。全範囲読み取りは単一のチップセレクトアサーション内でストリームされます。SPI 書き込みパスは、LoopbackFlash テストバスを使用してハードウェアなしで検証されており、CH341A USB フレーミングの背後にある SPI NOR チップをエミュレートします。モックバックエンドにより、デバイスが接続されていない場合でも SPI フラッシュ表面を CI で実行可能に保ちます。472 のユニットテストおよび統合テストが通過しています。
インストールは、Rust 1.82+ と libusb-1.0 を必要とし、cargo を使用してソースから行います。詳細な BIOS 修復ガイドが提供されており、必要なハードウェア(CH341A または CH347 プログラマ、SOIC-8/16 テストクリップ)、注意点(電圧確認)、およびバックアップから書き込みまでの完全な手順が含まれています。特に、書き込み前に必ずバックアップを作成すること、書き込みは自動的にタイムスタンプ付きバックアップを作成し、消去前にページ単位でプログラムし、書き込み中ビットをポーリングすることが強調されています。書き込みコマンドは、すべて 0xFF またはすべて 0x00 のイメージ、およびチップ容量より大きいイメージを拒否します。
要約すると、Ratchet は強力で安全な BIOS フラッシュツールであり、内蔵の MCP サーバーにより AI エージェントがハードウェアを制御できるため、自動化されたハードウェアデバッグとプログラミングのシナリオに適しています。