Как прошить координатор 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)
- Остановите все сервисы, которые могут держать порт. Подключите устройство, удерживая BSL/BOOT при необходимости. Убедитесь, что устройство видно в списке.
- Прочитайте и сохраните содержимое флеш (опционально).
- В разделе Flash image(s) выберите .hex и режим Erase & Program.
- Запустите прошивку, дождитесь верификации, затем перезагрузите устройство и запустите Zigbee‑службу.
- Проверьте, изменился ли путь устройства (например 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 и т.п.) и текущую версию прошивки.