Товары из Китая

Прошивка и активация Zigbee координатора в роутере Smart Box Turbo+. Интеграция в homeassistant


Прошивка и активация Zigbee координатора в роутере Smart Box Turbo+. Интеграция в homeassistant

Описание модернизация маршрутизатора Beeline smart box turbo+, которая позволит активировать распаянный на плате отдельный SoC с функционалом Zigbee координатора, прошить его и использовать его в системе умного дома.

Вводная

ТТХ роутера Beeline smart box turbo+
Manuf/OEM/ODM SerComm PCB ID: CQR00B-1.6

Блок питания: 12 VDC, 1.5 A

CPU: MediaTek MT7621AT (880 MHz, 2 cores, 4 threads)

FLASH: Nand 128 Mb

RAM: 128 MB DDR3 (NANYA nt5cc64m16gp-di)

USB: 3.0 (разведен) + 2.0 (не разведен на разъем)

UART: да, J4

Wifi1: MediaTek MT7603EN bgn MIMO 2×2:2 (до 300 Мбит/сек)

Wifi2: MediaTek MT7615N n+ac MIMO 4×4:4 160 МHz (до 1733 Мбит/сек)

Zigbee 3.0 chip: EFR32 MG1B232GG

Switch: MediaTek MT7621AT 10/100/1000 (5 портов всего)

LAN ports: x4 10/100/1000

WAN ports: x1 10/100/1000

Zigbee антенна и пара 5ГГц антенн с фронтальной направленностью выполнены на верхнем крае основной платы.

Комбинированные 2,4+5ГГц антенны 2дБ в торцах корпуса формируют боковые лепестки. Можно установить вместо них 5дБ антенны с ufl пигтейлами (обзор здесь делал) и развернуть к передней или задней стенке).

Оригинальная прошивка не поддерживает USB модемы.

При работе CPU греется, желательно наклеить радиатор.

ТТХ модуля Zigbee
В маршрутизаторе установлен чип EFR32MG1B232GG с функционалом Zigbee 3.0 производства Silicon Labs.

SoC содержит процессор с ядром Cortex M4, 32K SRAM, 256K Flash, порты ввода-вывода и выходной усилитель мощности с КУ до +19дБ.

Производительность сравнима с широко известным CC2538 в комбинации с усилителем СС2592.

В Itead Sonoff Zigbee bridge используется аналогичная микросхема EFR32MG2 следующего поколения — Gen2.

Прошивки для Gen1 и Gen2 между собой не совместимы.

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

M — family code

G — Gecko

1 — series 1

B — Performance Grade Basic

2 — Feature Code reserved

3 — Feature Code TXRX

2 — Feature Code Band 2.4GHz

G — Flash 256K

G — Temperature Grade -40 to +85C

Дополнительное поле маркировки, например 1820C00OXE

18 – The last 2 digits of the assembly year.

20 – The 2-digit workweek when the device was assembled.

C00OXE – A trace or manufacturing code. The first letter is the device revision.

Как это используется в роутере
А никак 🙂

SoC EFR32MG1 распаян под небольшим экраном в углу платы, чуть выше расположена контактная группа JP1 для установки разъема SMT типа с шагом 1,27мм (используется для прошивки и отладки чипа).

Прошивка и активация Zigbee координатора в роутере Smart Box Turbo+. Интеграция в homeassistant

Тип корпуса QFN32, соответствие выводов чипа и JP1 будут показаны в разделе «1. Перепрошивка EFR32», там же подписан функционал выводов.

Интерфейс связи с CPU — UART с Software flow control, выводы PA0=TXD, PA1=RXD.

На стороне CPU (MT7621) используется UART3, который не активирован ни в одной прошивке (профилях устройств).

По прихоти разработчиков устройства кнопка WPS роутера заведена на выход GPIO#11 CPU, который предназначен для выхода TXD2 UART2.

Чтобы сохранить функционал кнопки и не заморачиваться с мультиплексированием GPIO проще оставить UART2 деактивированным.

Соответственно в системе UART3 CPU отображается в /dev/ttyS1 (нумерация начинается с 0 и сдвигается на 1).

В исходном состоянии «с завода» в EFR32 прошит загрузчик и прошивка EmberZNet v6, реализующая функционал координатора.

Подготовительная часть

Для корректной работы Zigbee модуля необходима прошивка с поддержкой UART3, например вот эта.

В этой сборке дополнительно установлен и активирован модуль ser2net, который пробрасывает /dev/ttyS1 на клиентское устройство.

При желании можно портировать Zigbee2Tasmota c Sonoff zigbee gateway и собрать модуль для Openwrt (с этим еще разбираюсь, не специалист).

Шлюза Zigbee2mqtt для этого чипа пока нет, и скорее всего реализовать его в виде модуля на роутере не получится (обычно он работает в node.js, требовательного к производительности и объему памяти).

Для собирающих прошивки самостоятельно предлагаю ознакомиться с выложенными на github патчем, dts и конфигом сборки.

На текущий момент актуальная версия EmberZNet v8 и версия SDK v6.9.0 (но шить будем прошивку собранную с SDK v6.7.8).

Для прошивки понадобится любой SWD программатор

например китайский $1 клон STLink v2
Прошивка и активация Zigbee координатора в роутере Smart Box Turbo+. Интеграция в homeassistant

4 гибких провода (обычно идет с STLink в комплекте).

Для прошивки из Windows понадобятся драйвера ST-Link и прошивальщик EBLink (он в принципе кроссплатформенный).

1. Перепрошивка EFR32

1.1 Откройте крышку роутера, найдите контактную группу JP1.

1.2 Подпаяйте 4 провода: к GND, RST, SWCLK=PF0, SWDIO=PF1 и соедините их с соответствующими выводами программатора.

Прошивка и активация Zigbee координатора в роутере Smart Box Turbo+. Интеграция в homeassistant

1.3 Установите драйвера для STLink программатора и убедитесь что он определился в системе.

1.4 Подайте питание на роутер (дожидаться загрузки необязательно, требуется только питание 3.3в).

1.5 Распакуйте файлы из архива в папку с исполняемым файлом eblink.exe и прошейте:

сначала bootloader

eblink.exe -I stlink,dr -S silabs-auto -P ../scripts/ -F erase,verify,run,file=BTL_STD_S1_256-COM_PA0-PA1-PD15.srec

потом прошивку

eblink.exe -I stlink,dr -S silabs-auto -P ../scripts/ -F verify,run,file=NCP_USW_115K2_S1_F256_678_PA0-PA1.srec

Отпаяйте провода.

В этой прошивке вывод PD15 (#6 контакт JP1) задействован для принудительного входа в режим bootloader (активный уровень низкий).

Для активации необходимо подключиться к UART (с настройками 115200-8-N-1, XON/XOFF) порту EFR32 локально или через проброшенный порт, замкнуть #6 контакт JP1 на GND и удерживая сбросить чип (замкнуть RST #3 контакт JP1 на GND).

В консоли отобразится меню из 3х пунктов.

Прошивка и активация Zigbee координатора в роутере Smart Box Turbo+. Интеграция в homeassistant

Для прошивки новой версии нужно выбрать соответствующий пункт и отправить файл прошивки в режиме xmodem.

2. Настройка роутера для проброса портов

2.1 Подключитесь к роутеру по SSH

2.2 Откройте для редактирования файл /etc/ser2net.conf. По умолчанию он содержит такой конфиг:

1880:raw:0:/dev/ttyS1:115200 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS remctl

где первая цифра «1880» — номер TCP порта, который можно сменить на более удобный.

raw — режим работы порта с максимальной прозрачностью (это требуется для правильного проброса ASH — см. ниже)

0 — таймаут

/dev/ttS1:115200 — пробрасываемый порт, его скорость и доп. настройки.

2.3 После внесения изменений перезапустите службу

/etc/init.d/ser2net restart

2.4 На удаленном контроллере запустите ответный процесс для подключения к роутеру.

<code>sudo socat pty,raw,link=/dev/ttyVS1 tcp:192.168.2.1:1880, user=root,group=dialout,mode=660,forever,reuseaddr,keepalive

2.5 Проверка соединения из консоли роутера:

conntrack -E | grep sport=1880

При успехе в ответе будет нечто подобное:

[UPDATE] tcp      6 7440 ESTABLISHED src=192.168.2.3 dst=192.168.2.1 sport=53250 dport=1880 src=192.168.2.1 dst=192.168.2.3 sport=1880 dport=53250 [ASSURED] 

3. Интеграция в homeassistant

Настройка проброса порта в Docker
Комментарий для тех кто использует системы автоматизации, работающие внутри виртуальных контейнеров (например hass.io / homeassistant работает в контейнере Docker.

Полученный в разделе 2 предыдущей статьи порт ttyVS1 с точки зрения операционной системы не является блочным устройством и не будет проброшен внутрь docker-контейнера (это особенность docker). Соответственно автоматизация «Zigbee Home Automation» этот порт автоматически не распознает и не «увидит».

Для тех кто хочет лично убедиться еще раз замечу, что для этого типа порта бесполезно создавать правила udev, скрипты автоматического подключения в rc.local и прочие обходные пути – все это не срабатывает.

Даже если бы контейнер homeassistant запускался явно (а его запуском управляет отдельный контейнер hassio-supervisor), то подстановки -v /dev/ttyVS1:/dev/ttyVS1 и/или —device-cgroup-rule ‘a *:* rwm’ в скрипт запуска docker run… все равно не сработают.

Варианты работающих костылей которые работают:

а) Использовать сервис который однократно выполнит скрипт при перезапуске сервера:

#!/bin/bash

function run_script() {
local STR
STR=$(sudo docker stats --no-stream | grep homeassistant);
if [ -n "$STR" ]; then
sleep 3;
sudo docker exec -it homeassistant bash -c "socat pty,raw,link=/dev/ttyVS1 tcp:192.168.2.1:1880,forever,reuseaddr,keepalive";
fi
}
run_script

b) Вручную в консоли после перезапуска homeassistant:

sudo docker exec -it homeassistant bash -c "socat pty,raw,link=/dev/ttyVS1 tcp:192.168.2.1:1880,forever,reuseaddr,keepalive"

К счастью оказалось что EZSP и Itead Sonoff bridge используют похожие методы подключения в интеграцию Zegbee Home Automation и допускают подключение сразу внутри docker контейнера через сокеты.

3.1 Откройте веб-интерфейс Homeassistant, перейдите в «Настройки», выберите пункт «Интеграции» и добавьте «Zigbee Home Automation». В настройке последовательного порта интеграции выберите пункт «Enter manually».

Прошивка и активация Zigbee координатора в роутере Smart Box Turbo+. Интеграция в homeassistant

3.2 Выберите тип радиоустройства — «EZSP»

Прошивка и активация Zigbee координатора в роутере Smart Box Turbo+. Интеграция в homeassistant

3.3 Установите настройки порта: socket://<ip адрес роутера>:<номер проброшенного TCP порта>. Скорость = 115200. и нажмите «Подтвердить».

Прошивка и активация Zigbee координатора в роутере Smart Box Turbo+. Интеграция в homeassistant

3.4 Через несколько секунд UART порт с вашего роутера будет проброшен в контейнер, интеграция ZHA автоматически распознает тип протокола (на самом деле там ASH over UART).

Прошивка и активация Zigbee координатора в роутере Smart Box Turbo+. Интеграция в homeassistant

3.5 После завершения настройки интеграции можно ее переименовать.

Прошивка и активация Zigbee координатора в роутере Smart Box Turbo+. Интеграция в homeassistant

3.6 А после сопряжения всех устройств отключить опцию автоматического обнаружения.

Прошивка и активация Zigbee координатора в роутере Smart Box Turbo+. Интеграция в homeassistant

3.7 И исправить неправильно распознанные классы устройства, так как производители оборудования кладут болтне точно соответствуют стандартам, поэтому интеграция ZHA может неправильно классифицировать подключенные устройства.

Чтобы это исправить требуется посмотреть адрес и endpoint сопряженного устройства

Прошивка и активация Zigbee координатора в роутере Smart Box Turbo+. Интеграция в homeassistant

И вписать в файл configuration.yaml:

zha:

device_config:
11:22:33:44:55:66:77:88-1: # format: {ieee}-{endpoint_id}
type: 'switch' # corrected device type

И перезагрузить сервер.

Выражаю большую благодарность

АВАТАРА и azt59 за предоставленные трассировки и моральную помощь,

Австралийскому разработчику Gary (aka Gobasoz) за помощь с адаптацией прошивки под схему включения EFR32.


СМОТРИ ТАКЖЕ

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *