IoT зоопарк: прошиваем BL602

    2023-04-03 16:21 | Автор: jekader | Filed under: FedoraMD

    Как упоминал в прошлых записях, платформа ESP32 стала очень популярной в мире IoT решений. Существует множество FOSS проектов, позволяющих "отвязать" IoT устройство от интернета и управлять им локально - например, с помощью Home Assistant. Естественно, на рынке есть и другие производители микроконтроллеров, основное преимущество которых - цена.

    Для всяких дешёвых устройств, вроде умных лампочек, это существенный параметр. Поэтому в продаже начали массово появляться устройства с дивными недокументированными микроконтроллерами, некоторые из которых даже совместимы по контактам с ESP32, но имеют другую архитектуру. Изначально, желающие установить свою любимую прошивку в такое устройство вынуждены были перепаивать микроконтроллер на поддерживаемый, но это во-первых требует прямых рук, а во вторых удорожает конечное устройство и замедляет процесс. Вскоре, началась работа над прошивками и для этих новых платформ. Всё же, не так давно и ESP8266 был ровно таким недокументированным дешёвым решением, а в нынешнее состояние пришёл лишь благодаря интересу сообщества.

    Чтобы поиграться с подобной экзотикой, заказал дешёвый контроллер для RGB светодиодной ленты. Пришло вот такое:

    RISC-V микроконтроллер BL602 собственной персоной

    Не стал даже его включать. Сразу извлёк плату и припаял её к UART адаптеру:

    Don't turn it on, take it apart!

    Благо, площадки были подписаны и выбрать нужные не составило труда. Единственная непонятка была с выбором 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 ботнета.

    1 Star2 Stars3 Stars4 Stars5 Stars (4 votes, average: 3,00 out of 5)
    Loading...

    Метки: , ,

    Comments (0) »


    Своя прошивка для Ulanzi TC001

    2023-02-20 18:52 | Автор: jekader | Filed under: FedoraMD

    Пришло время обновить настольные часы в спальне. Основные требования - большой шрифт и точный ход. С нуля делать не имело смысла, поэтому были куплены Ulanzi TC001:

    Ulanzi TC001

    Устройство выполнено качественно. В наличии - цветная светодиодная панель 8x32, батарейка, три кнопки, датчик освещённости и пищалка. Это, собственно, не совсем часы, так как умеют из коробки отображать множество видов информации (погоду на Луне, число подписчиков на ютубе, и т.д, какие-то анимации). Функционал можно расширить, подключив устройство к софту по имени AWTRIX, позволяющему выводить на панель ещё больше всяких свистоперделок. Поигравшись вдоволь, я решил что мне всё же нужны лишь точные часы, и держать для этого Java приложение на отдельном компьютере - перебор. Поэтому решил изучить вопрос изменения прошивки, тем более в софте со всех сторон торчали уши платформы ESP32. Ещё хотелось иметь контроль над софтом, так как ботнет у себя в спальне иметь в планы не входило, а с китайскими прошивками такое часто бывает.

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

    К счастью, спустя всего пару дней всё поменялось: видимо, не мне одному пришла посылочка из Китая. Работа в сообществе закипела, произведя на свет форк проекта PixelIt:

    https://github.com/aptonline/PixelIt_Ulanzi

    Установил PlatformIO, склонировал репозиторий, после этого достаточно было нажать заветную кнопку Upload Filesystem Image, чтобы собралась прошивка и отправилась по USB проводу прямиком в часы. Заработала почти без нареканий, был в ней и крупный шрифт, правда не такой как мне хотелось бы.

    Не беда: у нас ведь все исходники под рукой! Набросал в GIMP новые циферки, перегнал их в нужный формат и вот уже всё тикает:

    Который час?

    Теперь всем доволен: часы работают автономно, в интернет лезут только сверить время по NTP, внешнего "мозга" для работы не требуют. При этом, при желании на них можно по сети выводить текст, картинки, и прочие глупости.

    Как вывод могу отметить, что поддержка OpenSource разработки ESP32 за последние годы вышла на качественно новый уровень. Инструменты, такие как PlatformIO, позволяют прямо из VScode вести разработку и отладку сложных проектов с множеством зависимостей, а количество имеющихся готовых библиотек для всяческой периферии сильно упрощает процесс.

    Это на руку и разработчикам устройств. Как уже упоминал, оригинальная прошивка была собрана абсолютно этими же инструментами, с использованием этих-же библиотек. Исходников не публиковалось, Столлман негодует, но к счастью они и не требуются, учитывая что более качественные прошивки появились за какие то пару недель с момента поступления устройства в продажу. Тем не менее надеюсь, что оригинальная прошивка благодаря OpenSource библиотекам получилась менее дырявая, чем если-б её писали с нуля на коленке.

    UPD: На данный момент, оригинальный PixelIt поддерживает TC001 из коробки, включая шрифт часов, описанный в этой статье.

    1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 3,67 out of 5)
    Loading...

    Метки:

    3 комментария »


    Первые впечатления от RISC-V

    2022-07-08 19:25 | Автор: jekader | Filed under: FedoraMD

    RISC-V - довольно молодая процессорная архитектура: впервые набор команд был опубликован в 2011 году, первые микроконтроллеры появились в 2016, а первый кремний, способный запустить Linux - в 2018.

    Особый интерес к этой архитектуре проявляет Китай, поэтому уже в этом году (2022) на рынке появилось множество дешёвых плат с китайскими процессорами архитектуры RISC-V, чем я и поспешил воспользоваться:

    (далее…)

    1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 3,00 out of 5)
    Loading...

    Метки: ,

    Comments (1) »


    Работа с модулем SIM800C на Pine64

    2021-04-07 01:58 | Автор: jekader | Filed under: FedoraMD

    Интернет - штука удобная, но телефонию пока никто не отменял. Поэтому взял поиграться Pi-совместимый GSM модуль SIM800C от Waveshare и в этой статье документирую свой вполне удачный опыт.

    Pine64 + SIM800C
    модуль устанавливается без проблем

    (далее…)

    1 Star2 Stars3 Stars4 Stars5 Stars (4 votes, average: 4,00 out of 5)
    Loading...

    Метки: , , ,

    Comments (1) »


    Pine64 — часть 3 — оазис веселья в скучном мире СПО

    2020-10-29 01:34 | Автор: jekader | Filed under: FedoraMD

    Мир свободного ПО стал скучен. Казалось-бы, всё работает из коробки. Софт и драйвера пишут работники крупных компаний за зарплату, а GitHub сделал исходые коды доступными каждому школьнику. На этом фоне очень выделяется проект Pine64, пытающийся создать экосистему устройств на китайских ARM процессорах.

    (далее…)

    1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 1,00 out of 5)
    Loading...

    Метки: , ,

    3 комментария »


    Добавляем Cаnon LBP-810 в CUPS

    2018-05-09 02:08 | Автор: jekader | Filed under: FedoraMD

    Дома с давних времён валялся без дела древний GDI принтер Canon-LBP-810. Попросили меня подключить его для эпизодической распечатки бумажек. Так как это win-принтер, официальные драйвера существуют лишь под Windows, причём не новее версии XP. Мне даже выдали под это дело системних уровня Pentium-IV, на поверку оказавшийся... Тудорашем*!

    Ностальгия - это хорошо, однако в современном мире использовать XP страшновато. Решил попробовать завести принтер в Linux и раскопал для этого заброшенный драйвер. В этой записи освещу шаги, необходимые для его работы в современном окружении.
    (далее…)

    1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 3,67 out of 5)
    Loading...

    Метки:

    2 комментария »


    Le Roi est mort, vive le Roi!

    2018-03-02 12:14 | Автор: Vasile Chelban | Filed under: FedoraMD

    В январе 2018-го, прямо в канун Рождества наш сервер остановился. Диагностика показала что и эта системная плата "сгорела" (ECS A770M-A). И "эта" - потому что ранее отказала плата Gigabyte GA-M55S-S3 переживущую, кстати, однократную замену вспухших конденсаторов.
    А до этого капризничала ASUS A8N-VM (но тогда и процессоры были одноядерными). Впрочем жаловаться на плохих китайских производетелей нет причин - каждая из них отработала свой заводской ресурс достойно, только в Săndel-e они проработали без остановки по 3-5 лет, и до этого трудились в других системных блоках не меньше 3-х лет. (далее…)

    1 Star2 Stars3 Stars4 Stars5 Stars (4 votes, average: 4,00 out of 5)
    Loading...

    Метки:

    2 комментария »


    oVirt — часть 15 — краткий обзор oVirt 4.2

    2017-12-22 12:16 | Автор: jekader | Filed under: FedoraMD, Jekader

    Прошёлся кратко по нововведениям в oVirt версии 4.2

    (далее…)

    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading...

    Метки:

    6 комментариев »


    Pine64 – часть 2 – корпус

    2016-10-23 01:14 | Автор: jekader | Filed under: FedoraMD

    Как говорил в прошлой части, корпус мне прислать забыли. Поэтому глаз-алмаз был настроен на поиск подходящей по размеру диэлектрической ёмкости.
    (далее…)

    1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 1,00 out of 5)
    Loading...

    Метки:

    Comments (0) »


    соединение гипервизоров при помощи VXLAN

    2015-11-20 18:44 | Автор: jekader | Filed under: FedoraMD, Jekader

    После настройки openvswitch на нескольких машинах для использования с виртуальными машинами я решил пойти дальше и воспользовался некоторыми плюшками, такими как создание распределённых коммутаторов. В моём примере это позволяет соединить гипервизоры по технологии VXLAN и сделать так чтобы виртуальные машины на разных гипервизорах общались напрямую, и даже DHCP сервер на одном гипервизоре выдавал IP виртуалкам с другого. При этом весь L2 траффик оказывается изолирован и энкапсулирован в IP пакеты.
    (далее…)

    1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 1,00 out of 5)
    Loading...

    Метки: , ,

    2 комментария »