Дорога в IoT или знакомство с обзором Orange Pi i96 (OrangePi IoT не 2G)

Дело было не вечером, а делать что-то нужно.

Это краткое предисловие. Если нужно кратко и по делу goto «Оживление полуживого»
Появился интересный проект для сбора данных с устройств которые в большинстве своем оборудованы лишь USB интерфейсом и способны отдавать данные по USB-SERIAL порту.
Сказано — сделано, взяли что-то умеющее в USB host в виде небольшого мини компьютера orangepi pc plus и пошла разработка софта. Только со временем стало ясно что тут нужно что-то ИоТнутое, с батареей и нормальной системой power management.
Выбор пал на 2 устройства, одно из них которое OrangePi i96 (Урезанная версия OrangePi 2g IoT)

Что ты такое?

Orange Pi i96 представляет из себя миникомпьютер из мира интернета вещей.
В нем — минимум всего что нужно как раз для того самого IoT Интерфейс камеры, питание от батареи, встроенная зарядка аккумулятора, простенький процессор 1Ghz архитектура x32 и 256Мb RAM на борту.
Вроде даже есть встроенная nand на 512Mb (вроде как). Там путаница с GBYtes\GBits, непонтяно.
Базирован на SoC RDA8810 который позиционируется как smartphone aplication processor что как бы дает надежду на полную мобильность и все фишечки вроде поддержки модемов, клавиатур, радио и аудио тракты (так да?) внешней памяти sim интерфейс и прочее. Подробнее в даташите.
И почитав все это вдохновляет на покупку и оседлание))

Реальность

Ну, тут как всегда. Процессор оказался не популярным, инвестиций похоже на него небыло, либо поддержка кривая, либо кому-то не доплатили. С софтом на это железо оказалось грустно.
Я хочу сразу заявить что могу быть не прав, и оказаться под влиянием интернет-воздыхателей, что мол все плохо и никому нет дела, а на практике все просто решил недостаточный спрос, соответственно смысла допиливать софт на мало кому интересное железо — нет.

Хотя как по мне странно, что на open source оборудование не выкладывают должным образом даташит с необходимой информацией о том что и как там устроено, и «красноглазикам» познавшим дзэн в linux и железе методом проб и ошибок удается как-то что-то патчить и запускать ядра\u-boot даже на полу открытом железе.

C’MON Do something!

После ознакомления с Getting Started guide стало понятно что linux и android использует different baudrate а именно 921600. Оба. Да они разные. 921600 и 921600.
Может кривой китайско-английский перевод?!

Первые попытки подкинуться к консоли терпели крах. Обычно скорость у подобного рода железа 115200, это уже как стандарт. Простенький CH340 вполне себе адекватно работает на такой скорости, но 921600 — сказал — до свиданья и осыпал меня непонятными символами в черном окне.
Эта скорость свойственна для GSM модемов дающие 3G или 4G интернет.
Но не на таком адаптере что у меня. Другие скорости так же не помогли, я уж думал что там не 8N1 а что-то другое, но нет.
Описание про переключатели никакого нет. Только те что на uart порту, откуда грузиться.
А те 8 свичей… «ну делай так чтобы грузить linux, а вот так чтобы android — все»
По порту даже попытался подкинуться с serial1 от OrangePi PC Plus через minicom не помогло, зато 115200 завелся сразу после загрузки самого linux. Вроде уже неплохо. Но путь в U-Boot нам пока закрыт 🙁

Пробуем общаться на high speed. Увы(

Приветствие консоли уже обрадовало, точки доступа от устройства я так и не увидел что обещали в документации для конфигурации wifi.

Живой да. Но работать он нормально все равно не захочет. Лентяй однако.

Попытки залогинится не особо увенчивались успехом, ибо поначалу система занята resizeFS что приятно, не придется вручную работать с разделами.
Вот только и далее на вводе пароля, железка зависает и не принимает пароль, якобы ничего не вводилось.
Раза с 4-го удалось с паузой после логина войти с стандартным паролем orangepi.
Нас приветствуют, целуют, предлагают orangepi-config настроить. И тут ждет нас еще один подводный камень.
Видили-те, что-то не так с alsa-utils, вникать мне было лень, но совет по его удалению до настройки wi-fi сети успешно решает проблему невозможности загрузиться в систему!
Следующая проблема — wi-fi, но мы то его настроили. Да. Но проблемы с DHCP подкрались изподтешка. В стандартной сборке debian stretch и ubuntu (какойто там) косяк в драйвере доступа к NAND где хранится информация о MAC адресе, и он его будет постоянно менять, а может не менять. Не угадаете.
А еще он б\удет терять связь по wifi. Нужно любым способом отключить регулировку мощности!
Ну тут уж извините, где и как поищите сами))
А вот offering lease without success может иногда не проходить, после перезагрузки будет key exchange timeout или extensive data loss.
Это не я, это mikrotik мне сказал c профилем tkip и aes один хрен ему не нравится что-то или подвисает. Проблема известная оказалась. Дело в драйвере. Опять.

Что же делать?

Брать другое железо. Да. Бывает такое что попросту эта штука не стала такой популярной чтобы некоторому программисту «цяо» заплатили за счет продаж на патч ошибок и драйверов к этому устройству. Это бизнес. Не уверен что выпускают устройства и сейчас, думаю что распродают остатки. НО, я могу ошибаться. В Telegram чате описали ситуацию именно так. На форуме жаловались на проблемы начала работы с этим железом, и о поддерживаемых sd картах спрашивали и о камерах. Информации крайне мало. Кто-то попытался озвучить что и как исправить если «очень надо» там хоть что-то.
Хотя аппаратный потенциал у устройства есть, софт подкачал.

И все же. Если досталась такая штука в подарок, или было целенаправлено куплена, есть некоторый нечеловек который мало того что пересобрал linux до последней версии ядра debian bullseye (11) Тот что на сайте stretch (9).
Там много много исправлений чтобы кое-как это чудо жило. И оно правда работать стало лучше.
Заводятся все карты памяти, адекватно работает wifi не меняет MAC. нормальная работа GPIO и интерфейсов i2c\bluetooth\usb\spi.

Оживление полуживого

Возиться с патчами особо смысла не вижу. Разве что нужна конкретная версия linux. Ядро старое. Кто-то собирал под 5.0+ а на 5,4+ что-то отваливалось либо вообще не загружалось.

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

*UPD*
Нашел еще полезности по данной железке. Называется она еще OrangePi Iot 2G Только без 2G (по ссылке есть соус с SDK)
Здесь пояснения и какие-то кастомные версии Linux вроде Armbian на Ubuntu — Там же небольшое обсуждение и прекомпилироанных сборок.
Упоминается buildroot для этого cpu здесь
Там даже смогли адекватно завести железку судя по всему.
Что-ж уже что-то приятное, разве что usb… если запустить плату с подключенным чем-то при старте, он просто отказывается видеть его.
Патча\фикса пока не нашел 🙁
Остальное настраиваем согласно комментариям на странице проекта. Можно пользоваться но есть один нюанс.

Странности

Я знаю что ничего не знаю. А иногда не понимаю. В моем проекте имеется python3 код который опрашивает устройство через usb-serial и разбирает ответы. Все остальное работает кроме…
Одного куска кода на одинаковой версии linux, python, отрабатывал по разному, а именно функция поиска близкого числа от заданного из списка… Выглядит так:
nearfilefwver = l[min(range(len(l)), key=lambda i: abs(l[i]- soft))]

How is that possible? Понятия не имею, подозреваю что процессор или ядро как-то иначе видит математическую функцию python ¯\_(ツ)_/¯

Дело было не вечером, а делать что-то нужно. Это краткое предисловие. Если нужно кратко и по делу goto «Оживление полуживого»Появился интересный проект для сбора данных с устройств которые в большинстве своем оборудованы лишь USB интерфейсом и способны отдавать данные по USB-SERIAL порту. Сказано — сделано, взяли что-то умеющее в USB host в виде небольшого мини…