Отладка BadUSB на Pi Zero 2W с помощью Claude Code: исправление «невозможной» ошибки

Около 10 месяцев назад разработчик создал набор инструментов BadUSB на базе Pi Zero 2W, но одна функция — «полный сброс между атаками» — так и не заработала. Помеченная как «в разработке», она была заброшена. На этой неделе он пересобрал проект «под ключ» с Claude Code в качестве парного программиста. Результат: «невозможная» функция теперь работает, а в ходе сессии были обнаружены несколько тонких ошибок.
Что сделал Claude Code
- Диагностировал первопричину с первого прочтения: Прослушиватель проверял наличие
/dev/hidg0— оно было с момента загрузки, поэтому полезные нагрузки запускались при включении питания независимо от подключения хоста. Правильный сигнал —/sys/class/udc/<udc>/state == "configured". - Эмпирически подтвердил аппаратное ограничение: Когда первое исправление не сработало полностью, Claude подключился по SSH, попросил разработчика подключать/отключать кабель, пока сам опрашивал sysfs и регистр
GOTGCTLв dwc2 debugfsregdump. Выяснилось, что регистрGOTGCTLзастывает на значении0x000d0000независимо от состояния кабеля — на Pi Zero 2W сигнал VBUS sense не подключен к блоку OTG SoC. Был применён обходной путь с активным отключением, включающий период охлаждения и защиту от частых срабатываний. - Обнаружил молчаливую ошибку Python:
open(udc_path, "w").write("")не вызываетwrite(2)с нулевым количеством байт —TextIOWrapperв CPython пропускает этот вызов. В течение часа тестирования операция отключения фактически не выполнялась. Исправлено наos.write(fd, b"\n"), чтобы принудительно вызвать системный вызов. - Исправил запрещённый в configfs демонтаж:
rm -rfне срабатывал, потому что configfs запрещает удаление файлов атрибутов, управляемых ядром. Правильная последовательность — толькоrmdir, от листьев к корню. - Написал набор тестов pytest из 34 тестов для имитации HID-движка, что позволяет тестировать парсер на любом хосте без Pi.
- Обновил память ИИ: Разработчик использует Postgres для долговременной памяти Claude — теперь записи об этих ошибках используются в аналогичных проектах с configfs и USB-gadget.
Вся рабочая сессия заняла около 4 часов, в основном из-за ожидания физического подключения/отключения. В пул-реквесте было шесть хорошо структурированных коммитов с правильными тегами соавторов и планом тестирования. Проект (Pi-Zero-2W-Bad-USB) распространяется по лицензии MIT, включает язык сценариев в стиле Ducky-Script, переменные, IF/WHILE, HOLD/RELEASE, INJECT MOD, RANDOM *, раскладки US/UK, опциональный гаджет RO mass-storage, интеграцию с systemd и идемпотентный установщик.
Для разработчиков, использующих Claude Code в циклах с аппаратным обеспечением, это убедительный пример отладки с помощью ИИ на уровне sysfs и регистров.
📖 Источник: r/ClaudeAI
👀 Смотрите также

Магазин на базе ИИ использует CLI для совершения покупок.
Ultrathink создала магазин, полностью управляемый ИИ-агентами, без участия человека в дизайне, выполнении заказов или маркетинге. Покупки ориентированы на терминал: пользователи могут просматривать товары, добавлять в корзину и оформлять заказ через CLI-команды.

Запуск OpenClaw 24/7: Практическая архитектура для постоянных автономных агентов
Разработчик делится проверенными решениями для запуска OpenClaw в качестве круглосуточного сервера с cron-заданиями, включая разделённые по темам файлы памяти, агрессивное управление жизненным циклом сессий, обрезку контекста с заполнителями восстановления и обёрточные инструменты для структурированного хранения и восстановления после сбоев.

Claude Opus 4.6 использовался для создания приложения для знакомств с более чем 700 пользователями за один месяц
Разработчик использовал Claude Opus 4.6 для создания полноценного приложения для знакомств с интерфейсом на Flutter, серверной частью на Node.js и базой данных MongoDB. Приложение привлекло более 700 зарегистрированных пользователей примерно за месяц и включает функции подбора пар, чата и реферальной системы.

Запуск Claude Code в Kubernetes CronJob: Производственный опыт и открытая конфигурация
Команда everyrow.io делится опытом запуска Claude Code в автоматическом режиме в качестве Kubernetes CronJob, документируя неописанные особенности и открывая исходный код своего Dockerfile, entrypoint-скрипта, Helm-чарта и настройки логирования.