Найти в Дзене
mamaich

Запускаем урезанный Армбиан на Яндекс Модуле 2

Мне нравится Яндекс Модуль 2 как устройство - в нем большой объем eMMC, 4-ядерный процессор, 2 гб оперативки. И он также довольно легко модифицируется, как Станция первого поколения и Станция Макс. И даже паять для этого придется немного меньше. В отличие от Макса, все Модули второго поколения сразу с завода идут с установленным паролем на USB загрузку, так что описанный мной ранее метод использовать не удастся. Зато, как и в Максе, работает запуск скриптов u-boot с USB накопителя, хоть и делается он по другому. Как обычно отмечу, что информация приводится здесь без каких-либо гарантий. Повтор описанных действий может привести к неработоспособности устройства, блокировке вашего аккаунта Яндексом, потере времени, здоровья, рассудка и вообще ко всему что угодно. Сперва требуется немного пайки: Назначение тестпоинтов: Т25 - земля
Т22 - питание
Т15 - TX
Т16 - RX Эти же точки звонятся на USB разъеме, но мне было удобнее припаяться к тестпоинтам. Далее готовим флешку по аналогии со статьей

Мне нравится Яндекс Модуль 2 как устройство - в нем большой объем eMMC, 4-ядерный процессор, 2 гб оперативки. И он также довольно легко модифицируется, как Станция первого поколения и Станция Макс. И даже паять для этого придется немного меньше.

В отличие от Макса, все Модули второго поколения сразу с завода идут с установленным паролем на USB загрузку, так что описанный мной ранее метод использовать не удастся. Зато, как и в Максе, работает запуск скриптов u-boot с USB накопителя, хоть и делается он по другому.

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

Сперва требуется немного пайки:

Назначение тестпоинтов:

Т25 - земля
Т22 - питание
Т15 - TX
Т16 - RX

Эти же точки звонятся на USB разъеме, но мне было удобнее припаяться к тестпоинтам.

Далее готовим флешку по аналогии со статьей https://dzen.ru/a/Z0HGTpeN6UYdy3pu. Цитата:

Образ я взял отсюда: https://imola.armbian.com/archive/aml-s9xx-box/archive/, архив Armbian_23.8.1_Aml-s9xx-box_bookworm_current_6.1.50_minimal.img.xz
Далее, после записи образа на флешку (я использовал Raspberry Pi Imager), требуется добавить на нее скрипты под наше устройство отсюда: https://github.com/devmfc/amlogic-bootscripts-Armbian. Можно просто записать все файлы с Git на FAT32 раздел флешки, перезаписав существующие. Затем требуется в файле armbianEnv.txt исправить строку "fdtfile=amlogic/meson-sm1-x96-air-gbit.dtb" на "fdtfile=amlogic/meson-g12a-x96-max.dtb", так как этот DTB к нам ближе по устройствам.

Дополнительно к этому:

  1. Файл aml_autoscript на флешке требуется переименовать в factory_update_param.ubt
  2. В файле armbianEnv.txt в строке fdtfile= прописать amlogic/meson-g12a-u200.dtb, а не то что написанов цитате выше (это тоже device tree не для нашего устройства, но по крайней мере он не заваливает экран ошибками при загрузке).

Вставляем подготовленную флешку через переходник USB OTG с power injector, а RX, TX и GND подаем на переходник UART2USB:

-2

Если в наличии только USB OTG без возможности дополнительного питания - можно подать +5в и землю напрямую через описанные выше тестпоинты (я сам так делал в самом начале).

Проверяем, что на UART видим лог загрузки, обрывающийся на загрузке Android из-за silent=1:

-3

А вот далее начинается хитрость.

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

Далее - стандартная первоначальная настройка: привязка пульта и подключение к Wi-Fi. Модуль скачает обновление и перезагрузится.

После перезагрузки следует поймать момент, когда после строки "uboot time: сколько-то us" появятся две строчки "aml log : R1024 check pass!":

-4

на экране при этом прогресс бар дойдет примерно до слова "обновления":

-5

После этого необходимо выдернуть питание из Модуля.

Возвращаем питание назад, и видим, что u-boot инициализирует USB и запускает оттуда скрипт factory_update_param.ubt:

-6

Подготовленный ранее скрипт на флешке содержит команды u-boot, загружающие Армбиан:

-7

Далее внутри Армибиана можем смонтировать любой раздел, например, так:

mount -o offset=0x146a00000 /dev/mmcblk1 /data
(адреса начала остальных разделов можно увидеть при загрузке в recovery)


При желании, внутрь factory_update_param.ubt можно поместить свои команды, например:

go 77DB425C

это запустит интерактивный режим u-boot (да, rabbit hole снова успешно обойдён). Адрес работает в u-boot из последнего обновления, в u-boot сразу после сброса до заводских настроек адрес другой (я его не искал за ненадобностью).

Настоятельно рекомендую выполнить:

setenv silent 0
saveenv

Это выключит silent режим. Как приятный бонус, вы получите консоль на UART в загруженном Андроиде из которой можно устанавливать приложения командой "pm install ..." или делать "reboot update".

Напомню, что скрипты требуется преобразовать из текстового в двоичный формат командой:

mkimage -C none -A arm -T script -d aml_autoscript.command factory_update_param.ubt

P.S.
Спасибо инженерам Яндекса, оставивших нам полноценный root да еще и без selinux в режиме установки обновления (он же recovery). Там даже есть полноценный busybox в /sbin:

-8

Обновление от 06.03.2025

С помощью платы, как на фото (на Озоне ее можно найти по названию "Разъем Type-C папа+мама USB3.1 с платой для распайки 24 вывода"), можно провести описанные выше действия без необходимости разбирать Модуль:

-9

Выводы на USB плате:

A2 / B11 - RX
A3 / B10 - TX

Земля и питание (для тех у кого USB OTG кабель без инжектора) - согласно стандарту.