Etichete
amd bittorrent bug centos debian enlightenment fedora fedora 8 fedora 9 fedora 10 fedora 11 fedora 12 fedora 13 fedora 15 fedora 16 FedoraMD fglrx firefox flash player gnome google intel interview java kde kernel linux livecd migrate moldova nvidia openoffice OpenStreetMap opera Orange ovirt radeon red hat rpmfusion Sandel skype video virtualisation vmware wine
IoT зоопарк: прошиваем BL602
2023-04-03 16:21 | Autor: jekader | Filed under: FedoraMD
Как упоминал в прошлых записях, платформа ESP32 стала очень популярной в мире IoT решений. Существует множество FOSS проектов, позволяющих "отвязать" IoT устройство от интернета и управлять им локально - например, с помощью Home Assistant. Естественно, на рынке есть и другие производители микроконтроллеров, основное преимущество которых - цена.
Для всяких дешёвых устройств, вроде умных лампочек, это существенный параметр. Поэтому в продаже начали массово появляться устройства с дивными недокументированными микроконтроллерами, некоторые из которых даже совместимы по контактам с ESP32, но имеют другую архитектуру. Изначально, желающие установить свою любимую прошивку в такое устройство вынуждены были перепаивать микроконтроллер на поддерживаемый, но это во-первых требует прямых рук, а во вторых удорожает конечное устройство и замедляет процесс. Вскоре, началась работа над прошивками и для этих новых платформ. Всё же, не так давно и ESP8266 был ровно таким недокументированным дешёвым решением, а в нынешнее состояние пришёл лишь благодаря интересу сообщества.
Чтобы поиграться с подобной экзотикой, заказал дешёвый контроллер для RGB светодиодной ленты. Пришло вот такое:
Не стал даже его включать. Сразу извлёк плату и припаял её к UART адаптеру:
Благо, площадки были подписаны и выбрать нужные не составило труда. Единственная непонятка была с выбором BOOT режима - нигде не смог найти, на землю замыкать или на +3 вольта, но методом перебора выяснил, что для прошивки нужно подать +3 вольта.
Далее - воткнул переходник в компьютер и подключился к последовательному порту:
screen /dev/ttyUSB0 2000000
Побежали логи загрузки модуля в его родную прошивку и даже открылась какая-то консоль. Ничего интересного там нет, зато это хороший способ убедиться, что провода припаяны верно.
Подключился для интереса к точке доступа этого устройства, но web интерфейса там не было обнаружено. Производитель предлагает скачать стрёмное APK приложение для настройки устройства и его подключения к чужим серверам в интернете. Не наш метод, поэтому сразу перешёл к перепрошивке.
Наиболее популярные IoT прошивки - это Tasmota и ESPHome, однако они не поддерживают данный контроллер. Благо, существует проект OpenBeken, который поддерживает довольно большое количество китайских IoT микроконтроллеров:
- Beken - BK7231T, BK7231N, BL2028N, T34
- Bouffalo Lab - BL602
- WinnerMicro - W600, W601, W800, W801
- XR809
При наличии исходников SDK возможна поддержка и других чипов. Сообщество довольно активное, хотя способ разработки и отдаёт нулевыми: Windows как основная платформа, Visual Studio как IDE, форум как средство общения и всё такое прочее.
Но как говорится, нам шашечки или ехать? Код на гитхабе, бинарники прошивок тоже там, поэтому двинулся дальше. Скачал полный образ UART для BL602 отсюда (можно прошивать и без пайки прямо через родное приложение, для этого там же есть OTA версия)
Для самой прошивки использовал утилиту blflash которая написана по последней моде на языке Rust.
Первым делом, отключил плату и подпаял 3 вольта на ногу BOOT, затем сохранил оригинальную прошивку на всякий пожарный:
blflash dump orig_firmware.img --port /dev/ttyUSB0
Затем, прошил OpenBeken:
blflash flash OpenBL602_1.15.624.bin --port /dev/ttyUSB0
Если что-то не работает, рекомендую между запусками blflash перезапускать модуль. После успешной прошивки отпаял BOOT, подключил плату и вновь пронаблюдал за процессом загрузки через screen. Всё в норме, полёт нормальный.
Подключился к открытой точке доступа wifi, ввёл данные желаемой сети, и уже на новом IP можно настраивать модуль согласно назначению. Для этого нужно указать, на какой ноге контроллера какая функция. Удобнее это делать с использованием шаблонов, нажав кнопку "Launch Web Application":
Здесь, выбрав тип устройства, можно сразу активировать нужные функции. Так это выглядело в моём случае:
Конкретно у меня настройки не сохранялись, но не составило особого труда их ввести вручную пользуясь этой шпаргалкой. Далее можно интегрировать устройство с умным домом согласно документации и управлять им извне по MQTT или HTTP, и всё это при помощи открытой прошивки причём на RISC-V микроконтроллере.
Экспериментом остался вполне доволен. Прошивка, конечно, не столь стабильна как Tasmota, зато ничего не пришлось изобретать самому, а устройство больше не требует доступа в интернет. Можно было даже обойтись без пайки, прошив всё из родного приложения по WiFi. Значит, любой энтузиаст может смело взять практически любую подобную "умную" приблуду и вправить ей мозги, чтобы не стать потенциальной частью IoT ботнета.
Etichete: IoT, microcontroller, risc-v