Метки
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 | Автор: 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 ботнета.
Метки: IoT, microcontroller, risc-v
Своя прошивка для Ulanzi TC001
2023-02-20 18:52 | Автор: jekader | Filed under: FedoraMD
Пришло время обновить настольные часы в спальне. Основные требования - большой шрифт и точный ход. С нуля делать не имело смысла, поэтому были куплены 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 из коробки, включая шрифт часов, описанный в этой статье.
Метки:
Первые впечатления от RISC-V
2022-07-08 19:25 | Автор: jekader | Filed under: FedoraMD
RISC-V - довольно молодая процессорная архитектура: впервые набор команд был опубликован в 2011 году, первые микроконтроллеры появились в 2016, а первый кремний, способный запустить Linux - в 2018.
Особый интерес к этой архитектуре проявляет Китай, поэтому уже в этом году (2022) на рынке появилось множество дешёвых плат с китайскими процессорами архитектуры RISC-V, чем я и поспешил воспользоваться:
Работа с модулем SIM800C на Pine64
2021-04-07 01:58 | Автор: jekader | Filed under: FedoraMD
Интернет - штука удобная, но телефонию пока никто не отменял. Поэтому взял поиграться Pi-совместимый GSM модуль SIM800C от Waveshare и в этой статье документирую свой вполне удачный опыт.
Метки: armbian, pine64, sim800c, waveshare
Pine64 — часть 3 — оазис веселья в скучном мире СПО
2020-10-29 01:34 | Автор: jekader | Filed under: FedoraMD
Мир свободного ПО стал скучен. Казалось-бы, всё работает из коробки. Софт и драйвера пишут работники крупных компаний за зарплату, а GitHub сделал исходые коды доступными каждому школьнику. На этом фоне очень выделяется проект Pine64, пытающийся создать экосистему устройств на китайских ARM процессорах.
Добавляем 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 и раскопал для этого заброшенный драйвер. В этой записи освещу шаги, необходимые для его работы в современном окружении.
(далее…)
Метки:
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-х лет. (далее…)
Метки: Sandel
oVirt — часть 15 — краткий обзор oVirt 4.2
2017-12-22 12:16 | Автор: jekader | Filed under: FedoraMD, Jekader
Прошёлся кратко по нововведениям в oVirt версии 4.2
(далее…)
Метки: ovirt
Pine64 – часть 2 – корпус
2016-10-23 01:14 | Автор: jekader | Filed under: FedoraMD
Как говорил в прошлой части, корпус мне прислать забыли. Поэтому глаз-алмаз был настроен на поиск подходящей по размеру диэлектрической ёмкости.
(далее…)
Метки: pine64
соединение гипервизоров при помощи VXLAN
2015-11-20 18:44 | Автор: jekader | Filed under: FedoraMD, Jekader
После настройки openvswitch на нескольких машинах для использования с виртуальными машинами я решил пойти дальше и воспользовался некоторыми плюшками, такими как создание распределённых коммутаторов. В моём примере это позволяет соединить гипервизоры по технологии VXLAN и сделать так чтобы виртуальные машины на разных гипервизорах общались напрямую, и даже DHCP сервер на одном гипервизоре выдавал IP виртуалкам с другого. При этом весь L2 траффик оказывается изолирован и энкапсулирован в IP пакеты.
(далее…)
Метки: openvswitch, ovs, vxlan