Как прошить 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‑стиков)
- Скачайте образ, специально собранный под вашу ревизию CC2652 (Z‑Stack‑coordinator / Koenkk‑build). Убедитесь, что имя файла соответствует вашей плате.
- Подготовьте окружение (пример для Linux):
sudo apt update
sudo apt install python3 python3-pip -y
pip3 install pyserial intelhex
- Скачайте или распакуйте 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
- Вход в режим загрузчика: удерживайте кнопку BOOT/FLASH, нажмите RESET, затем отпустите BOOT — комбинация зависит от платы. После успешной записи подключите адаптер к сервису и проверьте версию координатора в логах.
Не прошивайте CC2652‑образ на EFR32 и наоборот — это приведёт к неработоспособности радио.
Прошивка EFR32 (Silicon Labs) — Simplicity Commander / SWD
- Определите формат прошивки (.s37, .rps, .bin). Для EFR32 чаще используются .s37/.rps.
- Подключение: если есть встроенный USB‑загрузчик — можно по USB; иначе используйте SWD (J‑Link или OpenOCD).
- Примеры команд 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; подготовлю точные шаги.