Как прошить координатор CC2652P / CC1352P — быстро и безопасно

Коротко: скачайте сборку Z-Stack (coordinator или router) под вашу плату, остановите Zigbee‑службу, сделайте бэкап coordinator, прошейте через SmartRF Flash Programmer (Windows) или cc2538‑bsl (Linux), а при отсутствии реакции — восстановите через OpenOCD/SWD. Ниже — конкретные команды и чек‑листы.

Подготовка и выбор прошивки

  • Выбор файла: берите из репозитория Z-Stack‑firmware сборку для вашей платы (пометка launchpad / other / E72 и т.п.) и тип — coordinator для USB‑донгла, router — для репитера. Неправильный вариант — частая причина проблем.
  • Бэкап: остановите Zigbee2MQTT / ZHA и сохраните coordinator_backup.json (или полную папку конфигурации). Это ускорит восстановление сети.

Если у вас большая сеть — сначала делайте бэкап данных Zigbee и снимите образ текущей флеш‑памяти (чтение через SmartRF или cc2538‑bsl).

  • Оборудование: USB‑кабель, ПК (Windows или Linux), при необходимости доступ к кнопке BSL/BOOT. Для восстановления — отладчик (J‑Link / ST‑Link / Raspberry Pi) и провода SWD.

Прошивка: пошагово для Windows и Linux

Метод A — SmartRF Flash Programmer 2 (Windows, GUI)

  1. Остановите все сервисы, которые могут держать порт. Подключите устройство, удерживая BSL/BOOT при необходимости. Убедитесь, что устройство видно в списке.
  2. Прочитайте и сохраните содержимое флеш (опционально).
  3. В разделе Flash image(s) выберите .hex и режим Erase & Program.
  4. Запустите прошивку, дождитесь верификации, затем перезагрузите устройство и запустите Zigbee‑службу.
  5. Проверьте, изменился ли путь устройства (например ttyACM0 ↔ ttyUSB0) и обновите конфиг.

Метод B — cc2538‑bsl.py (Linux / Docker) Пример команды: sudo python3 cc2538-bsl.py -ewv -p /dev/ttyUSB0 --bootloader-sonoff-usb ./CC1352P2_CC2652P_launchpad_coordinator.hex

  • Ключи: -e erase, -w write, -v verify. Опция --bootloader‑sonoff‑usb нужна для некоторых донглов.
  • Если получаете timeout/sync errors — проверьте, не занят ли порт, смените кабель/порт, удерживайте BSL при подключении.
  • После прошивки обновите настройку порта в Zigbee2MQTT/HA, если путь изменился.

Восстановление и проверка (OpenOCD / SWD)

Если BSL не отвечает — используйте SWD/JTAG и OpenOCD с подходящим отладчиком. Основные команды в telnet (после запуска OpenOCD и подключения): init reset halt flash write_image erase firmware.hex flash verify_image firmware.hex reset run Если верификация прошла успешно — перезапустите сервис и проверьте видимость координатора.

OpenOCD/JTAG — продвинутая процедура. Неправильное подключение может вывести плату из строя. Используйте только если уверены в схемотехнике и имеете отладчик.

Частые ошибки

  • Неправильный .hex (launchpad vs other) — устройство не загружается или нестабильно.
  • Порт занят Zigbee‑сервисом — прошивка не стартует или выдаёт timeout.
  • Прерывание питания/плохой USB‑кабель — частичная запись и неконсистентный образ.
  • После прошивки смена имени порта (ttyACM0 ↔ ttyUSB0) — сервис не видит координатор.
  • Игнорирование бэкапа — при восстановлении сети придётся заново привязывать устройства.

FAQ

Q: Нужно ли всегда обновлять прошивку?
A: Нет. Обновляйте при наличии багфиксов или улучшений, но читайте обсуждения по вашей модели: иногда появляются регрессии.

Q: Координатор не определяется после прошивки — что сначала проверять?
A: Кабель/порт, не запущен ли Zigbee‑драйвер, правильный .hex и наличие BSL при подключении. Если ничего не помогает — переходите к SWD‑восстановлению.

Q: Могу ли прошить прямо из Docker/аддона Home Assistant?
A: Да — многие аддоны поддерживают автоматизацию прошивки, но нужно указать корректный порт и режим BSL; всегда делайте локальный бэкап перед запуском.

Чек‑лист перед прошивкой:

  • Скачан корректный .hex и сделан бэкап конфигурации;
  • Остановлены сервисы, освобождён порт;
  • Подготовлен кабель, ПК/BSL кнопка;
  • На руках план отката (старый .hex и инструкции по восстановлению через SWD).

Если хотите, подготовлю точную команду под вашу модель донгла и ОС — укажите модель платы (Sonoff Dongle‑P / RF‑Star / Ebyte и т.п.) и текущую версию прошивки.