Прошивка стиков EFR32

Сегодня я расскажу вам о том, как прошить еще один вид zigbee-стиков (кроме стиков на базе чипов TI ccXXXX). Эти стики пока не очень популярны в zigbee-тусовке, но возможно это изменится со временем.

Стики

В продаже на различных площадках можно найти стики/платы на базе модулей SiliconLabs EFR32, которые могут работать со стеками Zigbee, BLE и Thread.

Среди них есть уже полноценные устройства, например:

Есть устройства, которые можно перепрошить и использовать:

А есть для “домашнего творчества”, например такие:

На текущий момент нас интересует работа с Zigbee, поэтому будем делать из этих устройств координаторы.

Для запуска координатора на этих чипах, нужно прошить соответствующую NCP прошивку. Осталось выбрать прошивку и научиться прошивать.

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

Чипы

В модуле Ebyte E180-ZG120B чип имеет маркировку EFR32MG1B232F256GM48
А в модуле SM-011 (кстати, точно такой же модуль используется в Sonoff Zigbee Bridge) — EFR32MG21A020F768IM32.

Что это означает?

Расшифровка основной части маркировки MG1B232F256GM48

M - family code
G - Gecko
1 - series 1
B - type: P (Performance), B (Basic), V (Value)
2 - Feature Code reserved
3 - Feature Code TXRX
2 - Feature Code Band 2.4GHz
F256 — Flash 256K

DataSheets:
https://www.silabs.com/wireless/zigbee/efr32mg1-series-1-socs/device.efr32mg1b232f256gm48
https://www.silabs.com/documents/public/data-sheets/efr32mg1-datasheet.pdf

Расшифровка основной части маркировки EFR32MG21A020F768IM32

M - family code
G - Gecko
21 - series 2 mod 1
A - Secure Vault (A - no, B - yes)
020 - 20dBm maximum power output
F768 — Flash 768K

DataSheets:
https://www.mouser.sg/datasheet/2/368/efr32mg21-datasheet-1627395.pdf
https://www.silabs.com/wireless/zigbee/efr32mg21-series-2-socs/device.efr32mg21a020f768im32

Чип MG1B232F256GM48 EFR32MG21A020F768IM32
MCU Core ARM Cortex-M4 ARM Cortex-M33
Core Frequency (MHz) 40 80
RAM (Kb) 32 64
Flash (Kb) 256 768
Tx (dBm) 19.5 20
Rx (dBm) -101 -104

Видим, что во втором модуле используется более новое и производительное поколение чипа, с большим количеством памяти..
Различия между чипами весьма существенные, по этой причине прошивки будут разные.

Прошивка bootloader’а

Для прошивки модуля, нам нужно сперва загрузить bootloader. Возможно, какие-то модули будут уже с прошитым bootloader, но пока будем прошивать.

Для этого понадобиться:

Для стика SM-011 bootloader можно взять тут:

файл BTL_STD_S2_768.s37 в каталоге https://github.com/grobasoz/zigbee-firmware/tree/master/EFR32MG2x-768k

Для платы Ebyte bootloader можно взять тут:

файл BTL_STD_MG1B232_TX-PA0_RX-PA1_BT-PB11-combined.s37 в каталоге https://github.com/grobasoz/zigbee-firmware/tree/master/EFR32%20Series%201/EFR32MG1B-256k/Bootloaders

Подключаем Jlink к модулям, контакты подписаны на модулях.

Достаточно соединить 4 контакта:

VTref --- +
  GND --- -
SWDIO --- SWO
SWCLK --- SWK
(на фото показан еще контакт rst, но это не обязательно)

Запускаем Simplicity Commander и подключаемся к Jlink. Должен определиться чип и можно посмотреть информацию.

На странице Flash можно стереть чип и, выбрав файл с прошивкой bootloader, прошить его.

Результат прошивки можно увидеть в Device Info нажав кнопку Map.

Прошивка NCP

Теперь понадобиться gbl-прошивка.
Рекомендуется брать прошивку на базе текущего протокола EmberZNet v8 и прошивки старше 6.7.8 (где по словам разработчиков исправлены важные баги).

Для стика SM-011 прошивку можно взять тут:

файл NCP_USW_115k2_ZBBridge_678.gbl в каталоге https://github.com/grobasoz/zigbee-firmware/tree/master/Sonoff-ZBBridge

Для платы Ebyte bootloader можно взять тут:

файл NCP_UHW_MG1B232_678_PA0-PA1-PB11_PA5-PA4.gbl в каталоге https://github.com/grobasoz/zigbee-firmware/tree/master/EFR32%20Series%201/EFR32MG1B-256k/NCP

Можно прошить NCP прошивку также через Simplicity Commander и Jlink:

Но, с появлением у нас bootloader, можно шить и обновлять прошивки через USB.
Например, с помощью этой утилиты https://github.com/Elelabs/elelabs-zigbee-ezsp-utility

После прошивки bootloader, подключив стик к USB, узнав порт (у меня это COM9), выполним команду:

>python Elelabs_EzspFwUtility.py probe -p COM9
2021/02/25 21:21:58 Elelabs_EzspFwUtility: EZSP adapter in bootloader mode detected:
2021/02/25 21:21:58 Elelabs_EzspFwUtility: Gecko Bootloader v1.A.3

Т.е. успешно работает bootloader — можно прошивать. Выполняем команду flash указав файл соответствующей прошивки:

>python Elelabs_EzspFwUtility.py flash -f ../NCP_UHW_MG1B232_678_PA0-PA1-PB11_PA5-PA4.gbl -p COM9
2021/02/25 21:46:40 Elelabs_EzspFwUtility: EZSP adapter in bootloader mode detected:
2021/02/25 21:46:40 Elelabs_EzspFwUtility: Gecko Bootloader v1.A.3
2021/02/25 21:46:40 Elelabs_EzspFwUtility: Allready in bootloader mode. No need to restart
2021/02/25 21:46:41 Elelabs_EzspFwUtility: Successfully restarted into X-MODEM mode! Starting upload of the new firmware... DO NOT INTERRUPT(!)
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.
2021/02/25 21:47:12 Elelabs_EzspFwUtility: Firmware upload complete
2021/02/25 21:47:12 Elelabs_EzspFwUtility: Rebooting NCP...
2021/02/25 21:47:20 Elelabs_EzspFwUtility: Generic EZSP adapter detected:
2021/02/25 21:47:20 Elelabs_EzspFwUtility: Firmware: 6.7.8-117
2021/02/25 21:47:20 Elelabs_EzspFwUtility: EZSP v8

После окончания прошивки, стик переключится в обычный режим и будет выведена версия прошивки: 6.7.8 EZSP v8.

Софт для работы

Что теперь с этим всем делать?

Я не знаю всё программное обеспечение, которое может работать с чипами EFR32, но применительно к теме Умного дома вы можете использовать эти прошитые стики в следующих приложениях:

Home Assistant — ZHA

Этот модуль изначально работал с чипами EFR32 и протоколом EmberZNet. В прошлом году его доработали для поддержки протокола EmberZNet v8 и теперь он тоже поддерживает современные прошивки NCP.

Tasmota

Эта прошивка для ESP8266/32 также может работать с этими чипами, достаточно подключить к ESP модуль с EFR32 проводами (например, как тут https://github.com/zigpy/zigpy/discussions/584) и запустить в режиме Sonoff ZBBridge.

SprutHub

Это новая разрабатываемая система Умного дома также успешно поддерживает работу со zigbee-стиками и протоколом EmberZNet.

Zigbee2MQTT

Работы ведутся и уже совсем скоро, протокол EmberZNet v8 будет доступен и на этом популярном решении.

Дополнительные ссылки

Постскриптум

Первые тесты показывают, что эти стики достаточно производительны, у них большая зона покрытия и чувствительность. Не хуже, чем стики на базе чипов от TI (модуль eByte можно сравнить с чипом cc2538, а SM-011 с cc2652p). Но многое также зависит от используемого программного обеспечения.

При относительно небольшой цене (около 800руб за плату eByte и 1500руб за стик SM-011), они могут составить конкуренцию другим решениям.
А скорое появление аналогичного стика от Sonoff позволит сделать их более доступными и распространенными.

Будем дальше использовать и набираться опыта работы с этими чипами в чате https://t.me/zigbeer.

Отдельное спасибо за участие телеграм-пользователям http://t.me/AFaron0v и http://t.me/lmahmutov

Запись опубликована в рубрике Обмен опытом. Добавьте в закладки постоянную ссылку.

8 комментариев на «Прошивка стиков EFR32»

  1. ABATAPA говорит:

    А ещё EFR32 есть в роутере Smart Box Turbo+, и его уже научились использовать:
    https://mysku.ru/blog/diy/84501.html

  2. Уведомление: #Обмен опытом | Всё чем хочется поделиться…

  3. vkozlov говорит:

    Китайские клоны JLink v9 с алиэкстпресса справятся с Cortex-M33?

  4. Алексей говорит:

    Было бы неплохо для коллекции пинаут efr32 добавить. Обязательно использую эту статью. Илье большое спасибо

  5. Vladimir Kozlov говорит:

    Мне пришли залоченные стики, на них уже был какой-то древний бутлоадер 🙂 JLink не хотел коннектиться к ним.

    Чтобы разлочить, нужно из командной строки выполнить:

    ./commander device recover —device=EFR32MG21A020F768IM32
    ./commander device masserase —device=EFR32MG21A020F768IM32

Добавить комментарий