В 10е майнинг шатал планету, но в 20е практически сдулся, став чем-то нишевым. Ужаренные видеокарты мамкины бизнесмены давно поскидывали, и теперь уже мамкины предприниматели скидывают ушатанные пыльные асики. Сами асики линуксовому эмбеддеру не сильно интересны, но вот их КПУ (контрольные платы управления) — другое дело. На них попадаются довольно интересные SoC и много GPIO — чем тебе не devboard за пару-тройку соток, или недозаменитель Rasberry Pi/Oragne Pi. Интересно? Тогда погнали.
Ну а началось все с того, что я случайно наткнулся на несколько КПУ на авито, и решил изучить эту темку поближе, ибо фичастый ембеддед линукс за копейки — моя слабость. При поисках железок я всегда видел примерно одно и то же — рандомную цену (от 100 до 5000), и платку с несильно крутым SoC с несколькими сотнями мегов RAM+NAND. Из периферии обычно имелся только ethernet с micorsd и куча GPIO. Вот пример типичной подборки:






Из интересного заметил:
-КПУ от Antminer S9 c XILINX ZYNQ XC7Z010 — чип является CPU+FPGA на одном SoC с хорошей поддержкой майнлайн u-boot и майнлайн linux. В среднем Б/У devboardы c ними стоят около 7-10 тысяч, поэтому если вы хотите сделать первый шаг к CPU+FPGA с linux без ощутимых трат, то вариант отличный. Понятное дело, что сливов схем на них практически нет, но это решаемо и для первого старта сойдет. Правда в этой статье речь пойдет о другой КПУ.
-КПУ на Allwinner H3 — тоже хороший майнлайн SoC что по части u-boot, что по части Linux, но проще докинуть 1-2 сотки и купить ТВ бокс на этом же SoC с памятью уровня 1/8 ГБ (получив WIFI и HDMI бонусом), или докинуть чуть больше чем пару соток и купить старый Orange Pi на этом же SoC с памятью уровня 0.5-1/4-8 ГБ (чтобы были еще и GPIO). И опять же, в этой статье речь пойдет о другой КПУ.
-КПУ от Antminer L3+/L3+/L3++ — вот об этой КПУ и пойдет речь. На фото виден бутерброд из плат, поэтому маркировку SoC не прочитать, но визуально узнается BeagleBone Black и BeagleBone Green — devboardы c TI AM3358 SoC. Оригинальный BeagleBone — штука очень фичастая и с отличным mainline linux/u-boot, но стоит около полутора тысяч на авито, и это не тот прайс, за который хочется купить их побольше и сунуть в каждый чайник. Но за 200 рублей будет хорошей идеей купить таких пачку, получив linux с lcd, сетью, usb, и кучей GPIO (периферии).
Вот в этой статье мы и проверим, что нам продают майнеры — реально копеечные BeagleBone, или какую-то похожую на него дичь.
Немного про оригинальные платы BeagleBone
Для начала пару слов о том, что такое вообще эти BeagleBone (если ответ вам известен — переходите к следующему разделу). Как было сказано выше — это серия devboards (плат разработчика) с SoC семейства AM335x от Texas Instruments. Основные BeagleBone — это Black и Green. Есть еще Red и White (она же первая и оригинальная в этой линейке). И еще есть Blue и AI, но у них другой SoC. Самая популярная из этих плат — Black, рассмотрим её характеристики:
SoC: TI AM3358 1GHz (armv7hf, 1 core);
RAM: 512Mb DDR3L;
EMMC: 8Gb;
PRUSS: блок с двумя независимыми 32-битными микроконтроллерами реального времени, встроенных в SoC (RISC 200 МГц, 2xPRU core, Shared RAM 12Kb, Local RAM по 8 КБ), дают наносекундные задержки, имеют прямой доступ к GPIO, McASP, SPI, I2C (через bit-bang), PWM, eCAP, eQEP, DDR (через OCP master port); PRU работают параллельно с Linux, из реальных кейсов — Step/Dir для ЧПУ (до сотен кГц без джиттера), EtherCAT, PROFINET, Sercos, Bit-bang интерфейсы (WS2812, OneWire, HD44780, др.), высокоскоростной захват сигналов, логический анализатор, собственные SPI/Manchester/Software-defined PWM (документация полностью открыта);
Ethernet: 100Mbit;
USB: 1х2.0;
MicroSD: SDHC;
MicroHDMI: звук и изображение до 720p/1080i;
MiniUSB: usb peripheral и/или питание платы (не может быть host, так как PMIC сюда не дает 5 вольт);
Питание: 5 вольт через 5.5х2.1 или через MiniUSB.
И конечно же куча пинов: 2 колодки по 46 пинов для подключения модулей и компонентов (LCD дисплей, VPFE камера, ..), 65 могут быть использованы для GPIO, при этом некоторые из них предоставляют дополнительные возможности:
-8 каналов ШИМ на 4 независимых таймерах;
-7 аналоговых входов, подключённых к 12-битному АЦП (4096 градации);
-4 интерфейса UART и 1 дополнительный UART только с линией передачи (TX);
-2 шины TWI/I2C;
-2 шины SPI;
-25 портов ввода-вывода реального времени.

Про остальные платы серии:
—Green от Black отличается вдвое меньшим ОЗУ и отсутствием MicroHDMI (с HDMI PHY);
—White от Black отличается SoC AM3359 (вместо AM3358), вдвое меньшим ОЗУ DDR2 (вместо DDR3), отсутствием EMMC и отсутствием MicroHDMI (с HDMI PHY);
—Red от Black отличается только лишь возможностью эксплуатации в более жестких условиях (Red работает при −40…+85 °C; Black только при 0…+60 °C);
—У Green и Black плат есть WIFI+BT версии (на WL1835MOD модуле) без ethernet, и Enhanced версии (с увеличенной памятью).
Приведу фотки BeagleBone Green и BeagleBone Black плат:




Глянув на железо, многие скажут «Что это за старье? Даже старые малинки уделают такое». Так то оно так, но не путайте теплое с мягким😁.
Rasberry Pi создавались в первую очередь в образовательных целях с упором на хорошее железо — взял мальчик малинку, скачал образ, загрузился в систему, и поюзал её как слабый комп (не забывая навешать радиаторов и вентиляторов). Более умные люди реально подключают простые девайсы по GPIO/другим интерфейсам + используют плату в каких-либо проектах. Но для ембеддера малинка плохой выбор — SoC Broadcom закрыт (документацию разрабы малинки получают по NDA), загрузчик закрыт, многие драйвера закрыты тоже (куча блобов), открытых схем/трассировок референсных плат тоже нет. Назвать такое девбордом язык не поворачивается, и создавать промышленные устройства с нуля (делая свою плату) с малинкиным SoC по сути невозможно (Compute Module платы не рассматриваем). Не последнюю роль тут играет и сама Broadcom — самая закрытая от линуксойдов и эмбедеров корпорация. Так что ниша малинок — слабые ARM ПК, платы для прототипирования/встраивания в свои проекты в готовом виде, всякие киоски и прочее полупромышленное (так как стабильные долгие поставки и поддержка).
У BeagleBone же ситуация обратная — SoC хорошо документирован, также бонусом он майнлайн что по части u-boot, что по части linux (хотя есть и актуальные uboot/ядра от TI для идеалистов), схемы и трассировки референсных плат публикуются в близком к open hardware виде, пинов больше, и реалтайм контролеры в SoC существенно расширяя сферу применения в промышленности — ведь это не просто реалтайм МК рядом на плате, а реалтайм МК в SoC с тесной интеграцией с этим самым SoC (что по пинам, что по памяти). Ну и бонусом — мизернейшее потребление, и практически полное отсутствие нагрева. Так что ниша BeagleBone — devboard для прототипирования своих девайсов, которые в последствии будут созданы с нуля.
Не думайте что я диванный фанатик старья — эти платы все еще используются, и не только мной😄. Об этом много инфы в инете, да и в проектах на моей работе ребята до сих пор поддерживают девайс на TI AM3358. Подробней не покажу (ибо ФСБшная тема), но да — я тоже с ним знатно поигрался со своими кастомами и debian😁.
Так что если вы начинающий линукс эмбедер — берите BeagleBone как первый опыт, для простых проектов это находка. Ну а когда проекты станут сложнее — берите какие-нибудь серьезные devboardы с какими-нибудь хорошо документированным SoC и хорошим майнлайном (если с деньгами все ок), или Orange Pi с +-аналогичным SoC (если с деньгами не все ок).
Переходим к Animiner BB_black
Ну вот и приехали майнерские версии BeagleBone. Специально взял черную и зеленую, так как предполагал, что они могут отличаться. Каждая плата обошлась в 250 рублей, и доставка что-то около пары соток. Рассмотрим прибывшие платы:


Как видим, платы находящиеся в основании — одинаковы, и содержат: коннектор питания 12V (как в ATX БП, но обратная распиновка), гребенки на GPIO, и неинтересные мелочи типа стабилизаторов, конденсаторов, кнопок, и светодиодов.
Сдергиваем (движением вверх) BB_Blackи и глядим на них:




Флешек не видно, так как они под наклейками, и это NAND (а не EMMC):


Судя по стилистике плат (да и по названию) понимаем, что обе платы клонировались с BeagleBone Black (просто зеленая из ранних ревизий), так что не отходя от кассы делаем сравнение Antminer BB_black с оригинальной BeagleBone Black:


1,2,3 — вместо кнопок POWER/RESET/BOOT имеем только посадочные места для них;
4 — имеем NAND флешки на 256 МБ у зеленой и на 128 МБ у черной платы (вместо EMMC на 8 ГБ);
5 — имеем SoC AM3352 (вместо AM3358);
6,7,8,9 — не имеем подсистемы HDMI (PHY/защиты/кварца/разъема), что интересно — место под кварц зачем-то оставили;
10,11,12,13 — не имеем разъема USB с обвязкой (кондеры, ключ, защита, обвязка защиты, подтяжка детекта повышенного тока, предохранители по питанию и по детекту питания на порте);
14,15,16 — аналогично нет разъема MiniUSB и его защиты с обвязкой защиты;
17 — на черной плате не имеем I2C флешку 24й серии с ID платы (зачем её вообще оставили на зеленой);
18 — на зеленой плате вместо разъема питания имеем только посадочное место, на черной не имеем даже посадочного места;
19 — на черной плате немного отличается контроллер питания — TPS650250 (вместо TPS65217С как у зеленой платы и оригинала);
20 — на обоих платах имеем 256 МБ ОЗУ (вместо 512 МБ);
21 — не имеем распаянной гребенки для UART.
По важным отличиям между зеленой и черной платой:
-размер NAND (на зеленой 256 МБ, на черной 128 МБ). Эти NAND из одной серии, поэтому имеют одинаковую физику (erase block/page size/oob/ecc), так что отличия не критичны (держим во внимании только разный размер);
-разные PMIC (TPS65217С общается по I2C, а TPS650250 настраивается подтяжками и описывается в dts как fixed regulators или не описывается), поэтому драйвер TPS65217С на TPS650250 будет крашить ядро. Соответственно, образы и dts для этих плат будем делать разные.
И кстати, судя по фоткам с инета — деление Antminer BB_Black на зеленую (раннюю) и черную (позднюю) условно — иногда попадаются и черные с элементами как на зеленой, и наоборот.
По отличиям плат от оригинального BeagleBone Black — самые значимые: SoC, RAM, и NAND. С RAM и NAND писал выше, а с SoC хорошо бы уточнить в даташите по различиям между AM3352 и AM3358. Смотрим:

И видим отличия лишь в отсутствии GPU и PRUSS (те самые два реалтайм контроллера, которые я хвалил выше). Отсутствие GPU в embedded чипах такого уровня не напрягает (ведь есть пины для LCD). Но отсутствие PRUSS ставит крест на применение этой платы в реалтайм ембеддед проектах (без внешнего МК).
Ну и кратко про другие отличия из списка выше:
—Кнопки: POWER/RESETособо не нужны, но можете замыкать их пинцетом если очень надо; а кнопка BOOT тут бессмысленна, ибо вместо EMMC тут NAND, и зажатие кнопки не меняет страпов порядка загрузки — они стоят жестко для загрузки с NAND. Тем не менее, с MicroSD грузиться все равно можно, и самое лучшее решение — стереть NAND (тогда загрузка пойдет с MicroSD). Но если стирать NAND желания нет (или вы зашили в NAND битый загрузчик), то принудительный запуск с MicroSD все равно возможен премычкой (на разных платах независимо от цвета могут работать разные перемычки):


-Мелкая NAND вместо EMMC: Придется либо не пользоваться NAND (ибо есть MicroSD), либо подготовить образ ОС в UBI (с параметрами NAND). Впрочем, не всегда на 256 МБ NAND можно разгуляться, так что на NAND есть смысл ставить или OpenWRT (об этом ниже), или самосборные дистры для конкретных задач (например, через Buildroot);
-USB: Разъем можно запаять, если лень подпаиваться (он типовой, USBA-1J например подойдет, на фото выше как видите уже запаял его). Защиту и обвязку защиты можно не распаивать (она не в разрыве, а параллельно). Резистор R52 (10K 0603) по желанию можно распаять, чтобы убрать сообщения over-current condition (можно сдернуть R46 с нижней платы-основы буретброда), а можно и не распаивать — сообщение на работу не влияет. Электролит по питанию (С34, №11 обведен на фото) очень желательно распаять (6.3-16В/100-330uF). Предохранители FB7 и FB8 надо распаять перемычками (иначе PHY подумает что нет питания, и USB не будет работать), также вместо ключа по питанию надо поставить перемычку:


-MiniUSB: Защиту и её обвязку аналогично можно не распаивать. Керамический кондер по питанию (С36) можно тоже не распаивать (или возьмите любой 0603 с нижней платы-основы буретброда). Разъем можно распаять, если лень подпаиваться (необязательно искать аналог, я впихнул похожий, и пофиг что встало кривовато):


-I2C флешку 24й серии с ID платы — нужна ядру от BeagleBone для идентификации платы, нам не нужна;
-Разъем питания 5.5х2.1 — тоже типовой, так что можно взять визуально похожий и распаять, если лень подпаиваться (как видите, его тоже распаял). А можно вообще забить на него, и питать плату по другому: через входные пины DGND и VDD5V, или через MiniUSB, или через основную плату по обратному 12V ATX разъему.


Включаем, проверяем,заводим официальные и кастомные образы
Для начала — распиновка UART (параметры 115200n8):

Включив зеленую плату, я увидел по UART загрузку u-boot 2013.04, ядра linux 3.8.13, и прошивки angstrom v2013.06 (на основе старого OpenWRTшного снапшота). Включив черную плату, по UART я ничего не увидел, но user-светодиоды намекали, что плата работает. Достал мультиметр, и увидел КЗ на UART по TX. Благо схема открыта, и я решил проверить, насколько все серьезно. Увидел, что по UART стоит защита — проверил, и да — её пробило. Пришлось заменить перемычкой, после чего UART ожил:


Но майнерский старый сток нас мало интересует, давайте заведем Debian и OpenWRT. Для оригинальной BeagleBone Black уже есть официальные образы: немного раздутый Debian, и OpenWRT (оба для MicroSD). Соответственно, что будем заводить:
-Debian с MicroSD (запустим официальный образ);
-Openwrt c MicroSD (запустим официальный образ);
-Openwrt c NAND (соберем OpenWRT для нашей NAND и прошьем).
И вы наверное думаете, что первые два пункта вообще нет смысла описывать, ведь достаточно лишь записать официальные BeagleBone Black образы на MicroSD и грузануться с неё? Но нет.
Потребуется допилка официальных образов:
-FDT: вендорское dtb от Antminer собиралось для старых ядер, и на новых работать не будет. Взять дерево устройств от BeagleBone Black тоже нельзя — ядро будет молча падать на Starting kernel из-за инициализации несуществующего PRUSS, да и отсутствие в dts NAND с неверным значением RAM не радуют. Решается правками в dts — отключаем все от PRUSS, добавляем NAND с pinmux для нее, и переопределяем размер ОЗУ;
-U-boot: u-boot из официальных образов на нашей плате молча падает. И казалось бы — замени его на вендорский u-boot от Antminer и все ок — он же не залочен, и с радостью хавает envs с MicroSD. Но проблемка — вендорский u-boot косячно работает с ext4. Мелочь, но не приятно, ибо потребуется больше шагов для переделывания официального образа debian от BeagleBone Black под нашу плату (ибо ядро там стартует с ext4). Поэтому решил собрать свежий u-boot. Для BeagleBone в майнлайн u-boot используется дефконфиг am335x_evm_defconfig, но после сборки получаем аналогичную ситуацию — при старте первичный загрузчик (MLO) падает до какого-либо вывода. Копание в борд файлах дало понять, что MLO читает i2c флешку 24й серии чтобы узнать, на какой плате оно запустилось, и только потом стартует с соответствующей инициализацией. У нас же на зеленой плате в этой флешке мусор (а на черной её вообще нет) — получаем висяк. Окей, жестко задаем в борд файле что у нас BeagleBone Black (для этого в board/ti/am335x/board.h в static inline int board_is_bone_lt пишем return 1). Отлично, стартанули, только теперь u-boot не видит NAND. Проверяем — в конфиге MTD и NAND контроллер с поддержкой ONFI NAND RAW (с параметрами NAND) выставлены, а в dts уже прописаны pinmux для NAND с узлом NAND, но детекта все равно нет. Копаем дальше, и видим, что по дефолту в u-boot для нашей цели для NAND все еще используются борд файлы вместо дерева устройств (прямо как 15 лет назад). Без проблем — включаем новый DM драйвер (отключая старый) — и видим зависон на детекте NAND. Ладно, судя по инету для этих SoC для NAND лучше юзать легаси борд файлы, так что убираем амбиции по переходу на DM и копаем борд файлы — и видим, что для NAND и EMMC используются частично одинаковые пины, и так как на BeagleBone Black стоит EMMC, то в бордфайле муксятся пины под EMMC. Окей, правим пару условий (в board/ti/am335x/mux.c после строки /* Beaglebone LT pinmux */ из условий if defined(CONFIG_MTD_RAW_NAND) && defined(CONFIG_EMMC_BOOT) и elif defined(CONFIG_NOR) && defined(CONFIG_EMMC_BOOT) убираем defined(CONFIG_EMMC_BOOT)). И вуаля — NAND видна и корректно определяется.
-ENVs: при загрузке с MicroSD u-boot должен получить envs (чтобы знать, как/что грузить дальше), но в образе debian для BeagleBone Black используются overlays, а образе OpenWRT для BeagleBone Black используется boot.scr. Все это не особо удобно с майнлайн u-boot, так что набросаем текстовый uEnv.txt и настроим его импорт при старте нашего u-boot.
Все это я сделал: официальные образы для Microsd с Debian/OpenWRT допилил, +собрал OpenWRT для шитья в NAND. Скачивание всего этого добра с мануалами по шитью доступно из папки «готовые образы для Antminer BB_black» по этой ссылке.
Ну а если вы хотите допилить официальные образы от BeagleBone Black своими руками, то все по той же ссылке берите папку «для мода официальных образов от BeagleBone Black» + читайте инструкции ниже (все делаем по UART):
Для мода образа Debian от BeagleBone Black под Antminer BB_black алгоритм такой:
1) Качаем образ и пишем на MicroSD (>= 4ГБ) с помощью dd. В примере юзаю am335x-debian-13.3-base-v6.18-armhf-2026-01-22-4gb.img. И получаем на MicroSD три раздела: BOOT (fat32), SWAP, rootfs (ext4);
2) Удаляем всё из раздела BOOT, и в его корень кидаем файлы: MLO и u-boot.img из «для мода официальных образов от BeagleBone Black/u-boot/2026.01/microsd», файл «для мода официальных образов от BeagleBone Black/fdt/am335x-antminer_bb_black-ЦВЕТ_ПЛАТЫ-mainline.dtb» и файл для мода официальных образов от BeagleBone Black/для microsd/debain microsd/uEnv.txt»;
3) Открывайте на разделе BOOT файл uEnv.txt, и в нем имя дерева устройств в зависимости от цвета платы меняйте на am335x-antminer_bb_black-green-mainline.dtb или на am335x-antminer_bb_black-black-mainline.dtb. Также проверьте, что имена ядра и рамдиска (vmlinuz-6.18.6-bone16 и initrd.img-6.18.6-bone16) аналогичны тем, которые вы подсмотрите на третьем разделе rootfs в папке /boot;
4) Размонтируем все разделы на MicroSD и извлекаем её из компа;
5) Переходим на UART BB_black. Включает BB_black, тыкаем ESC для остановки загрузки, и стираем NAND чтобы не мешала:
nand erase.chip
и выключаем BB_black;
6) Вставляем подготовленную MicroSD в BB_black и подаем питание — ждем старта с MicroSD;
7) ОС загрузится, сделает авторесайз на всю MicroSD, и перезагрузится. Если вдруг авторесайз не проходит и ловите вечные ребуты — подключите MicroSD к компу, удалите с rootfs раздела все файлы кроме vmlinuz-6.18.6-bone16, initrd.img-6.18.6-bone16, System.map-6.18.6-bone16, config-6.18.6-bone16, и сделайте ресайз rootfs раздела руками (например через Gparted). Или может быть цикличного ребута нет, но и авторезайза нет — тогда аналогично — растяните rootfs руками;
8) После загрузки логин и пароль подскажет сама ОС на экране логина (default username is [debian] with a one time password of [temppwd]). Если при первом старте приглашения логина нет — их баг, дерните по питанию.
По итогу — имеем работающий официальный образ debian от BeagleBone Black на нашем корыте. А вообще странноватая сборка: кривенькая, есть левые сервисы (на кой-то болт добавили веб консоль), физический SWAP при активном ZRAM, в конфиге ядра отключили CONFIG_MTD_NAND_OMAP_BCH (так что NAND в их debian не видна). Я б мог собрать debian для этого SoC в ~полгига и без таких приколов, но им виднее. Свою мини сборку делать не буду, ибо мне это не надо, да и народу судя по всему тоже (просто выключите ненужные демоны).
Для мода образа OpenWRT от BeagleBone Black под Antminer BB_black алгоритм такой:
1) Качаем ext4 образ и пишем на MicroSD (>= 128МБ) с помощью dd. В примере юзаю openwrt-24.10.5-omap-generic-ti_am335x-bone-black-ext4-sdcard.img (sqashfs образы не качайте — там /overlay идет в RAM и при ребуте будете все терять) — и получаем на MicroSD два раздела: 1й FAT, и rootfs;
2) Удаляем с первого раздела все кроме zImage, и в его корень кидаем файлы: MLO и u-boot.img из «для мода официальных образов от BeagleBone Black/u-boot/2026.01/microsd», файл «для мода официальных образов от BeagleBone Black/fdt/am335x-antminer_bb_black-ЦВЕТ_ПЛАТЫ-mainline.dtb» и файл для мода официальных образов от BeagleBone Black/для microsd/openwrt microsd/uEnv.txt»;
3) Открывайте на первом разделе файл uEnv.txt, и в нем имя дерева устройств в зависимости от цвета платы меняйте на am335x-antminer_bb_black-green-mainline.dtb или на am335x-antminer_bb_black-black-mainline.dtb;
4) Расширяем (например через gparted) второй раздел rootfs на всю MicroSD;
5) Размонтируем все разделы на MicroSD и извлекаем её из компа;
6) Переходим на UART BB_black. Включает BB_black, тыкаем ESC для остановки загрузки, и стираем NAND чтобы не мешала:
nand erase.chip
и выключаем BB_black;
7) Вставляем подготовленную MicroSD в BB_black и подаем питание — ждем старта с MicroSD;
8) Если все ок — увидите консольку по нажатии Enter.
По итогу — имеем и работающий официальный образ OpenWRT от BeagleBone Black на нашем бревне. Очевидный минус этой сборки: NAND на 256 МБ лежит без дела. NAND под рут (+ MicroSD под /overlay при необходимости) было бы более логичным решением. Это решение и реализовано в моей OpenWRT сборке.
Моя сборка OpenWRT для шитья в NAND: хотел бы я её сделать нормальной — поддержкой sysupgrade обнов и сброса в дефолт… и сделал, но в конфиге ядра OpenWRT для нашей платформы не включили CONFIG_MTD_UBI_BLOCK — по итогу старте не создается ubiblock устройств, и ядро не может смонтировать rootfs sqashfs из ubi партиции. Ядро пересобирать не будем (ибо сломаем kmod пакеты с реп), а просто отказываемся от перечисленных выше плюшек, и делаем rootfs обычной ubifs. Я уже делал подобное в статье про Depo Sky A60 (в секции создания образа для устройств с бэдами в области ядра), так что тут опишу максимально краткко:
#потрошим из оригинального образа rootfs и zImage
#дерево устройств и MLO+u-boot заменяем на наши и кладем их в /boot
…
#собираем ubi контейнер с такими параметрами:
#для BB_Black Green
mkfs.ubifs -F -r r -m 2048 -e 129024 -c 2000 -o ow.img
ubinize -o ow24.10.5green.ubi -m 2048 -p 128KiB -O 512 ubinize.cfg
#для BB_Black Black
mkfs.ubifs -F -r r -m 2048 -e 129024 -c 1000 -o ow.img
ubinize -o ow24.10.5black.ubi -m 2048 -p 128KiB -O 512 ubinize.cfg
#конфиг
cat ubinize.cfg
[ubifs]
mode=ubi
image=ow.img
vol_id=0
vol_size=220MiB #или 110 для Black
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize
#склеиваем
dd if=MLO of=ow24.10.5green.dump bs=128K seek=0 conv=notrunc
dd if=MLO of=ow24.10.5green.dump bs=128K seek=1 conv=notrunc
dd if=MLO of=ow24.10.5green.dump bs=128K seek=2 conv=notrunc
dd if=MLO of=ow24.10.5green.dump bs=128K seek=3 conv=notrunc
dd if=u-boot.img of=ow24.10.5green.dump bs=512k seek=1 conv=notrunc
dd if=u-boot.img of=ow24.10.5green.dump bs=512k seek=5 conv=notrunc
dd if=ow_green.envs of=ow24.10.5green.dump bs=512K seek=9 conv=notrunc
dd if=ow24.10.5green.ubi of=ow24.10.5green.dump bs=1M seek=5 conv=notrunc
#шьем
=> nand erase.chip
=> tftp ow24.10.5green.dump (или через fatload с emmc)
=> nand write ${loadaddr} 0 ${fileaddr}
Кстати — MiniUSB у нас в режиме периферии, а значит можем сделать из BB_Black какой-либо usb гаджет по MiniUSB. Вариантов много, на любую фантазию:
-Ethernet (CDC ECM/NCM/RNDIS);
-Serial;
-Mass Storage;
-HID (клавиатура/мышь/…);
-Printer;
-Video (UVC);
-MTP;
-ConfigFS.
Рассмотрим вариант композитного гаджета — usb сетевая + serial:
#ставим пакеты
opkg update
opkg install kmod-usb-gadget kmod-usb-gadget-cdc-composite usbgadget
#грузим модуль
modprobe g_cdc
#делаем автостарт
echo g_cdc > /etc/modules.d/90-usb-gadget
#проверяем на BB_Black — появилась новая сетевая
ip a
usb0: mtu 1500 qdisc noop state DOWN qlen 1000
link/ether ae:64:cc:a3:bc:93 brd ff:ff:ff:ff:ff:ff
…
#и новый serial
ls /dev/ttyGS0
/dev/ttyGS0
#подключаем BB_Black по MinuUSB к компу и проверяем что это же появилось и на компе:
lsusb
Bus 001 Device 127: ID 0525:a4aa Netchip Technology, Inc. Linux-USB CDC Composite Gadge (Ethernet and ACM)
…
ip a
56: enxe6513fb3bbdd: mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether e6:51:3f:b3:bb:dd brd ff:ff:ff:ff:ff:ff
…
ls /dev/ttyACM0
/dev/ttyACM0
Классно, теперь можете делать BB_Black шлюзом для вашего компа (с прозрачным rutube) + еще и OpenWRT консоль вывести на serial (для этого на BB_Black в /etc/inittab добавить строку ttyGS0::askfirst:/usr/libexec/login.sh, ребутнуть, и с компа например через picocom -b 115200 /dev/ttyACM0).
И мелкий FAQ напоследок:
Q: Делаю по инструкции, не грузится вообще ни с чего.
A: Замыкай перемычки для загрузки с MicroSD, грузи u-boot, и стирай NAND из u-boot. После этого старт всегда будет с MicroSD.
Q: Прошил твою OpenWRT в NAND, но хочу перейти на Debian с MicroSD.
A: Стирай NAND из u-boot и создавай MicroSD с Debian.
Q: Подробнее про MiniUSB, что там с OTG например?
A: OTG не вариант. Из коробки порт работает только как peripheral, то есть сам одноплатник будет устройством — еще одной сетевухой/UARTом/чем-либо еще. А если нужен еще один порт в host режиме — правьте dts и подавайте 5В на MiniUSB, ибо PMIC от MiniUSB умеет только питаться.
Q: Что по апгрейду RAM?
A: RAM можно добить до 512 МБ — нужен 16 битный чип DDR3L-800 или выше (BGA96, на 2х гиговой DDR3L 1Rx16 плашке таких 4 штуки). U-boot память увидит сразу, а для ОС потребуется другой dtb.
Q: Что по апгрейду NAND?
A: Потребуется пересборка U-boot с новыми параметрами NAND + сборка образа UBI c ОС (с параметрами NAND).
Q: Какая рассыпуха нужна чтоб обойтись без колхозных перемычек (+если пробило serial)?
A: Вот скрин из Чип и Дипа:

