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 комментария »


    Релиз CentOS 8.0

    2019-09-25 11:36 | Автор: jekader | Filed under: Новости

    Спустя несколько месяцев после RHEL вышел долгожданный релиз CentOS 8.0, имеющий все шансы стать стабильной платформой для развёртывания приложений на ближайшие несколько лет.

    Данная версия, помимо обновления пакетной базы до уровня Fedora 28, несёт с собой и AppStreams - новый способ доставки приложений, являющийся результатом проекта Fedora Modularity. Этот механизм позволяет поставлять приложения вместе с необходимыми им библиотеками, не привязанными к системным версиям.

    Скачать образ установщика можно из нашего зеркала: http://repo.fedora.md/centos/8/isos/x86_64/

    Release notes

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

    Метки:

    Comments (0) »


    Дедупликация с помощью VDO

    2019-01-06 21:48 | Автор: jekader | Filed under: Jekader

    Дедупликация - довольно интересная технология, использующаяся повсеместно в хранилищах данных для более эффективного использования дискового пространства. Несколько лет назад Red Hat приобрёл компанию Permabit, разработавшую решение для дедупликации блочных устройств в Linux под названием VDO. С тех пор, что называется "тихо и незаметно" эта технология стала доступна прямо в RHEL/CentOS и я хочу рассказать о её возможностях.

    (далее…)

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

    Метки: , ,

    Comments (1) »


    Chromium + VA-API = RPMFusion

    2018-10-03 11:44 | Автор: Vasile Chelban | Filed under: Vasile

    Продолжение истории о сборке RPM пакета браузера chromium с поддрежкой апаратного ускорения декодирования видео. Автора COPR репозитория несколько месяцев в сотрудничестве с коммандой RPMFusion работал над включением пакета в состав этого популярного репозитория. И, со вчера, пакет chromium-vaapi уже в updates-testing. Непростые инструкции из предыдущих постов заменяются коммандой:

    dnf --enablerepo=rpmfusion-free-updates-testing install chromium-vaapi

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

    Метки: , ,

    Comments (0) »


    Доменная авторизация — решение ошибок в Midnight Commander’e

    2018-09-10 14:03 | Автор: Vasile Chelban | Filed under: Vasile

    На моей рабочей станции (под управлением Fedora 29) используется доменная авторизация в Active Directory настроенная через winbind. Последнее важно, так как в новых установках Fedora примерно с Fedora 27 доменная авторизация использует realmd и sssd, вместо winbind. А в моем случае получаемое имя пользователя - что-то вроде "WORK\vasile". Именно так - с бэкслешем, так как это значение по умолчанию параметра "winbind separator" (см. smb.conf). Бэкслеш это еще очень популярный метод экранирования спецсимволов в строках в различных интерпретаторах, к примеру - Bourne Shell и производных. А вот к какой ошибке это приводит при использовании Midnight Commander'a:


    (далее…)

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

    Метки: ,

    Comments (0) »


    Обновление процедуры установки Chromium VA-API

    2018-08-13 16:13 | Автор: Vasile Chelban | Filed under: Vasile

    Ранее я рассказывал как установить "правильную" сборку Chromium с поддержкой ускорения декодирования видео. Из за обновления видения разработчика о структуре проекта, а также из за невозможности хостинга компонентов содержащие декодер h.264 (а он пока еще очень нужен) на мощностях Fedora, то процедура чуть усложнилась. Этот Chromium уже разделен на несколько пакетов, большинство которых находятся в COPR репозитории. Но пакет с поддержкой h.264 кодека находится в GITLab.com репозитории автора (и появляется с порядочной задержкой). (далее…)

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

    Метки: , ,

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