Как прошить Zigbee‑координатор: краткая инструкция

Краткий ответ: сначала сделайте бэкап database.db и coordinator_backup.json, определите точную модель адаптера (CC2652 vs EFR32), скачайте соответствующий образ и прошейте: для CC2652 — cc2538‑bsl (или Docker‑образ), для EFR32 — Simplicity Commander / SWD. После прошивки проверьте версию и целостность сети.

Подготовка и бэкап (самое важное)

  • Остановите сервис Zigbee2MQTT/ZHA и скопируйте database.db и coordinator_backup.json (или штатный бэкап для ZHA/DeCONZ). Это единственный быстрый путь отката при проблемах.
  • Снимите подпись платы: маркировка чипа (CC2652RB/P/R7, EFR32MG21 и т.п.), PID/VID в dmesg/Device Manager — без точной модели можно "попасть в кирпич".
  • Установите нужные драйверы для USB‑UART (CP210x/FTDI/CDC). Подготовьте USB‑удлинитель для лучшего приёма.

Если сеть большая — сначала повторите процедуру на тестовой флешке/временном координаторе.

Прошивка CC2652 — пошагово (без вскрытия, для USB‑стиков)

  1. Скачайте образ, специально собранный под вашу ревизию CC2652 (Z‑Stack‑coordinator / Koenkk‑build). Убедитесь, что имя файла соответствует вашей плате.
  2. Подготовьте окружение (пример для Linux):
   sudo apt update
   sudo apt install python3 python3-pip -y
   pip3 install pyserial intelhex
  1. Скачайте или распакуйте cc2538‑bsl.py и запустите прошивку:
   python3 cc2538-bsl.py -evw -p /dev/ttyUSB0 firmware.hex --bootloader-sonoff-usb

Пояснение флагов: -e (erase), -v (verify), -w (write). 4. Альтернатива — Docker (если используете контейнеры):

   docker run --rm --device /dev/ttyUSB0:/dev/ttyUSB0 -e FIRMWARE_URL=<URL> ckware/ti-cc-tool -ewv -p /dev/ttyUSB0 --bootloader-sonoff-usb
  1. Вход в режим загрузчика: удерживайте кнопку BOOT/FLASH, нажмите RESET, затем отпустите BOOT — комбинация зависит от платы. После успешной записи подключите адаптер к сервису и проверьте версию координатора в логах.

Не прошивайте CC2652‑образ на EFR32 и наоборот — это приведёт к неработоспособности радио.

Прошивка EFR32 (Silicon Labs) — Simplicity Commander / SWD

  1. Определите формат прошивки (.s37, .rps, .bin). Для EFR32 чаще используются .s37/.rps.
  2. Подключение: если есть встроенный USB‑загрузчик — можно по USB; иначе используйте SWD (J‑Link или OpenOCD).
  3. Примеры команд Simplicity Commander:
    • Информация об устройстве:
     commander device info --tif SWD --speed 1000
     ```
   - Запись прошивки:
     
 commander flash firmware.s37 --device
 ```
  • Конвертация и загрузка .rps:
     commander rps convert out.rps --app firmware.s37
     commander rps load out.rps
     ```
4. После прошивки убедитесь, что в интерфейсе координатор отобразил корректную версию и что network key / PAN ID совпадают с бэкапом.

## Практические советы и чек‑лист
- Перед началом:
  - [ ] Сделан бэкап database.db и coordinator_backup.json.
  - [ ] Проверена модель платы (маркировка, PID/VID).
  - [ ] Установлены драйверы и утилиты (cc2538‑bsl / Simplicity Commander).
  - [ ] Подключён USB‑удлинитель, отключены лишние USB‑устройства.
- Дополнительно: в конфиге Zigbee2MQTT попробуйте отключить rtscts, если загрузчик не определяется.

## Частые ошибки
- Неверный образ для ревизии чипа → адаптер не стартует.
- Прошивка прерывается из‑за неустойчивого питания/USB‑шумов — используйте удлинитель.
- Старые записи в database.db не совпадают с новым NVRAM адаптера — координатор "не видит" сеть.
- Некорректный вход в режим загрузчика из‑за неправильной комбинации кнопок.

## FAQ
- Как откатиться, если после прошивки сеть пропала?
  - Откат через восстановление database.db и coordinator_backup.json. Если адаптер потерял NVRAM, может потребоваться перепаривание устройств.
- Можно ли прошивать по воздуху (OTA)?
  - Нет — прошивка координатора выполняется локально через USB/SWD.
- Что выбрать для безопасности: Zigbee2MQTT или ZHA?
  - Это зависит от интеграции: процедуры прошивки одинаковы, важно правильно восстановить бэкап, совместимый с выбранным стеком.

Если нужна конкретная команда и файл прошивки для вашей платы — пришлите маркировку платы (точная подпись на плате или вывод dmesg с PID/VID) и укажите, используете ли вы Zigbee2MQTT или ZHA; подготовлю точные шаги.