Raspberry Pi Zero 2W の BadUSB を Claude Code でデバッグ:「ありえない」バグの修正

約10か月前、開発者がPi Zero 2W BadUSBツールキットを構築したが、「攻撃間の完全リセット」機能が動作しなかった。WIPとしてマークされ、放置されていた。今週、彼らはClaude Codeをペアプログラマーとしてプロジェクトをエンドツーエンドで再構築した。結果、「不可能」とされた機能が動作し、セッションでいくつかの微妙なバグが明らかになった。
Claude Codeが行ったこと
- 1回の読み取りで根本原因を診断: リスナーは
/dev/hidg0の存在を監視していたが、これは起動時からtrueであり、ホスト接続に関係なく電源投入時にペイロードが発射されていた。正しい信号は/sys/class/udc/<udc>/state == "configured"である。 - ハードウェアの制約を実証的に確認: 最初の修正が完全に機能しなかったとき、ClaudeはSSHで接続し、開発者にケーブルの抜き差しを依頼しながらsysfsとdwc2のdebugfs
regdumpレジスタをポーリングした。GOTGCTLレジスタがケーブル状態に関係なく0x000d0000で固定されていることを発見 — Pi Zero 2WにはSoCのOTGブロックにVBUSセンスが配線されていない。クールダウンとレート制限付きのアクティブアンバインド回避策に切り替えた。 - 無音のPythonバグを発見:
open(udc_path, "w").write("")はゼロバイトでのwrite(2)を呼び出さない — CPythonのTextIOWrapperが呼び出しを省略する。アンバインドは1時間のテスト中no-opだった。os.write(fd, b"\n")に修正し、システムコールを強制。 - configfs上での禁止されたティアダウンを修正:
rm -rfが失敗していたのは、configfsがカーネル管理の属性ファイルのリンク解除を禁止しているため。正しい手順は、葉から根へのrmdirのみ。 - モックHIDエンジンに対する34テストのpytestスイートを作成、Piなしで任意のホストでパーサーテストを可能に。
- AIメモリを更新: 開発者はClaudeの長期記憶としてPostgresを使用 — これらのバグエントリは、類似のconfigfs/USBガジェットプロジェクトで参照されるようになった。
作業セッション全体は約4時間で、ほとんどが物理的な抜き差しの待機時間だった。PRには適切な共同作成者タグとテスト計画を含む6つの適切にスコープされたコミットがあった。プロジェクト(Pi-Zero-2W-Bad-USB)はMITライセンスで、Ducky-Scriptスタイルのペイロード言語、変数、IF/WHILE、HOLD/RELEASE、INJECT MOD、RANDOM *、US/UKキーマップ、オプションのROマスストレージガジェット、systemd統合、べき等インストーラを含む。
Claude Codeを使用したハードウェアインザループワークフローを扱う開発者にとって、これはsysfsおよびレジスタレベルでのAI支援デバッグの魅力的なケーススタディである。
📖 全文を読む: r/ClaudeAI
👀 See Also

開発者がアイデア出しからデバッグまでClaude AIを使って3つのiOSアプリを数週間で構築
開発者がClaudeを使って3つのiOSアプリ(Smart Facts、Jar of Joy、Bloom Studio)を構築し、アイデア出し、機能の洗練、ロジックの記述、デバッグ、イテレーションを行った事例。
ローカル対VPS OpenClawデプロイ:AIコーディングエージェントの実用的な違い
OpenClawをローカルで実行すると、既存のログインセッションとローカルファイルへのアクセスを備えた実際のブラウザアクセスが可能になりますが、VPSでのデプロイは基本的なタスクに機能が制限され、ウェブサイトの制限にも直面します。

エルメス対オープンクロウ:違いはスピードではなく個性
HermesとOpenClawを並行して使っている開発者が両者を比較し、重要な違いはアイデンティティの扱い方にあると指摘。Hermesは記憶を保存するのに対し、OpenClawはsoul.mdを通じて性格のファセットを保存する。

ピカーロボットカーがOpenClawによる自律的な映像制作を実演
Raspberry Pi 5でOpenClawとClaude Sonnetを実行するPiCar-Xロボットが、メモリログからスクリプトを書き、DALL-E 3で画像を生成し、クローン化したElevenLabsの声でナレーションを録音し、ffmpegで組み立てることで、YouTube動画を自律的に作成しています。