Перейти к содержанию

Мини 1 (2019): root и ADB по USB через Station Mini Root

Способ для Станции Мини первого поколения, YNDX-0004, Amlogic A113X. Программа сохраняет исходный system, собирает из него образ с USB-ADB, записывает его и проверяет uid=0 после загрузки. Разборка корпуса, пайка, смена DNS и заводской сброс для этого способа не требуются.

Только Мини первого поколения

Мини 2, Мини 3, Лайт и Станция первого поколения — другие устройства. Проверьте маркировку YNDX-0004. Во время записи и полного обратного чтения сохраняйте питание и USB-соединение. Рабочую папку с бэкапом и личным ADB-ключом храните у себя, не прикладывайте её к публичным сообщениям.

Что понадобится

  • Своя Мини 1 YNDX-0004 и USB-кабель с передачей данных.
  • Компьютер с Windows x64 и поддержкой WSL либо Linux x86_64.
  • Интернет для скачивания зависимостей и свободное место под Linux-сборщик и образы.
  • Возможность подтвердить установку зависимостей и USB-драйвера с правами администратора.

Инструкция соответствует Station Mini Root 0.3.12. В готовой Windows-сборке уже есть libusb и WinUSB-помощник: собирать их через WDK вручную не нужно. В Windows образ собирается через WSL; приложение выбирает совместимый установленный дистрибутив, а при необходимости устанавливает WSL и официальный Debian. Существующие дистрибутивы не удаляются, дистрибутив по умолчанию не меняется.

Готовая Linux-сборка выпущена для Ubuntu 24.04 / glibc 2.39. Для более старой системы используйте инструкцию сборки из исходников на целевой системе.

Установка

  1. Откройте Releases, скачайте архив для своей ОС и распакуйте его полностью:

    • Windows: StationMiniRoot-windows-x64.zip, запустить StationMiniRoot.exe.
    • Linux: StationMiniRoot-linux-x86_64.tar.gz, выдать право запуска и открыть приложение:

      chmod +x StationMiniRoot
      ./StationMiniRoot
      
  2. Нажмите «Установить зависимости». Программа найдёт или скачает ADB, подготовит сборщик и USB-доступ. Подтвердите системные запросы UAC/драйвера в Windows; в Linux будут подготовлены инструменты и правила udev. Если Windows требует перезагрузки для WSL, выполните её и снова запустите приложение.

  3. Подключите колонку USB-кабелем, когда об этом попросит приложение. В подтверждённом способе кнопки зажимать не нужно. Программа ждёт устройство 1B8E:C003, захватывает загрузчик и удерживает его опросом — в журнале это называется «TPL захвачен» и «якорь». Дождитесь готовности зависимостей: до завершения этого этапа root и восстановление недоступны.

  4. Нажмите «Установить root», подтвердите модель и дождитесь окончания:

    • считывается полный исходный system размером 80 МиБ и сохраняется его SHA-256;
    • из собственного бэкапа колонки собирается изменённый UBI/UBIFS-образ;
    • образ записывается в system, затем раздел полностью считывается обратно;
    • сравнивается SHA-256, колонка перезагружается, через ADB проверяется id.
  5. Убедитесь, что в журнале появились uid=0(root) и подтверждение root. После этого программа автоматически устанавливает Alice Homebrew с автозапуском. В комплекте 0.3.12 — Homebrew 0.5.3. Его интерфейс открывается по адресу <http://IP-КОЛОНКИ:8088>, без входа и токена; используйте доверенную локальную сеть. Плагины, в том числе AirPlay, устанавливаются отдельно.

  6. Сохраните рабочую папку и исходный бэкап на компьютере. Путь к бэкапу напечатан в журнале. По умолчанию рабочая папка расположена здесь:

    • Windows: %LOCALAPPDATA%\StationMiniRoot\work;
    • Linux: ~/.local/share/StationMiniRoot/work либо каталог по XDG_DATA_HOME.

    Если приложение использовало прежний каталог ~/StationMiniRoot с session.json, сохраните именно его. Внутри находятся keys/adbkey, бэкапы и session.json.

Root и обновления

Программа блокирует распознанные OTA-входы, сохраняет остальные службы Алисы и не обновляет её голосовой стек до другой версии. Неизвестная схема обновлений останавливает сборку до записи. Дополнительные SSH и пакеты описаны в разделах «SSH и обновления» и «Пакеты yse».

Как открыть ADB вручную

Приложение само проверяет root. Для дальнейшей работы по USB нужен тот же личный ключ, публичная часть которого записана в образ. Обычный adb с другим ключом может показать unauthorized.

Закройте Station Mini Root и другие программы, использующие ADB; отключите от ПК другие ADB-устройства. Следующие команды читают сохранённые пути приложения и перезапускают ADB-сервер компьютера. Его текущие подключения будут закрыты; колонка не перезагружается.

$path = Join-Path $HOME '.config\StationMiniRoot\settings.json'
$cfg = Get-Content -LiteralPath $path -Raw -Encoding UTF8 | ConvertFrom-Json
$env:ADB_VENDOR_KEYS = Join-Path $cfg.work 'keys\adbkey'
& $cfg.adb kill-server
& $cfg.adb devices
& $cfg.adb shell id
& $cfg.adb shell
settings="$HOME/.config/StationMiniRoot/settings.json"
adb_path="$(python3 -c \
  'import json,sys; print(json.load(open(sys.argv[1]))["adb"])' "$settings")"
work_path="$(python3 -c \
  'import json,sys; print(json.load(open(sys.argv[1]))["work"])' "$settings")"
export ADB_VENDOR_KEYS="$work_path/keys/adbkey"
"$adb_path" kill-server
"$adb_path" devices
"$adb_path" shell id
"$adb_path" shell

Ожидаемый результат shell id — uid=0(root). Выход из оболочки — exit. Если задавался STATION_ROOT_CONFIG_DIR, укажите его settings.json вместо стандартного пути. Это инструкция для USB-ADB; команда adb connect IP:5555 здесь не требуется.

Совместимость

Ограничения по номеру прошивки нет: приложение не использует список разрешённых номеров версий и собирает образ из бэкапа подключённой колонки.

Совместимость определяется доступностью TPL, разметкой и содержимым system. Проверяются модель, полный раздел 80 МиБ, геометрия UBI/UBIFS, компоненты ADB и известная схема отключения OTA. Поэтому отсутствие ограничения по номеру не означает гарантии для любой будущей или произвольно изменённой прошивки. При неизвестном варианте подготовка останавливается до записи.

В описании проекта подтверждён путь на Mini 1 с 1.356.4.5.4321993220.20260629. Для других сборок нет требования совпадать с этим номером. Версия 0.3.12 распознаёт штатный updatesd, подтверждённый прежний патч noupdate и исследованный вариант с updater_switcher; отдельная аппаратная проверка каждой возможной прошивки не заявляется.

Как это работает

  1. USB-загрузчик TPL/U-Boot позволяет прочитать и записать раздел system. Приложение удерживает доступ опросом IDENTIFY примерно каждые 0,5 секунды.
  2. Считывается собственный раздел колонки. Из него в Linux-ФС извлекается rootfs с сохранением владельцев, прав и ссылок, затем собирается новый UBI-контейнер.
  3. В исследованной прошивке штатный adbd уже способен работать от root. Патч восстанавливает его запуск, добавляет публичную часть локального ADB-ключа, отключает распознанную деактивацию ADB и выбирает USB-ветку гаджета.
  4. Известные пути автоматических обновлений блокируются. Записывается только system; bootloader, tpl, boot, nv, bkupgrade и recovery не прошиваются.
  5. Полное обратное чтение подтверждает записанные байты. После перезагрузки результат проверяется отдельно через adb shell id: сам факт записи не считается доказательством root.

Это подтверждённый доступ к TPL, а не заявленная эксплуатация ошибки BootROM. Утверждение о «незакрываемой дыре процессора» этими проверками не подтверждается. Подробности и первичные источники приведены в техническом описании.

Восстановление

  1. Используйте сохранённую рабочую папку с исходным бэкапом и session.json.
  2. Запустите приложение и пройдите этап зависимостей/подключения загрузчика.
  3. Нажмите «Восстановить бэкап» и следуйте подсказкам. Перед восстановлением сохраняется текущий system; после записи выполняется полное обратное чтение.

Возвращается именно сохранённый исходный system, включая его поведение OTA. Если он уже был модифицирован до запуска программы, это не будет произвольной «заводской прошивкой». Homebrew и его данные расположены в /data; возврат system сам по себе не означает их удаления.

Если не получилось

  • Не найден libusb / инструкция предлагает собрать WinUSB-помощник. В старой версии 0.3.8 встречалась неполная упаковка. Скачайте готовый выпуск 0.3.12 или новее, распакуйте его целиком и повторите установку зависимостей. Инструкция сборки помощника предназначена для разработчиков, не для готового EXE.
  • Ожидание 1B8E:C003 не заканчивается. Проверьте модель и кабель с линиями данных, затем переподключите USB по подсказке программы. Обычный режим ADB и режим загрузчика — разные этапы. Произвольные кнопочные комбинации из инструкций для других моделей использовать не нужно.
  • Не найден updatesd в launch.json. Если старая версия остановилась до записи, обновите приложение до 0.3.12 и сохраните прежние рабочую папку, WSL, ключ и бэкап. В этой версии добавлена поддержка подтверждённых вариантов noupdate и updater_switcher. Если ошибка сохраняется, вариант не распознан: приложите обезличенный журнал к issue проекта, не обходите проверку удалением произвольных служб.
  • ADB показывает unauthorized или отсутствует. Дождитесь полной загрузки колонки, проверьте USB-кабель и драйвер, затем повторите подключение с ключом keys/adbkey из той рабочей папки, в которой собирался образ. Не создавайте вместо него новый ключ. При нескольких устройствах выберите колонку явно через adb -s <SERIAL>; реальные серийные номера в публичный журнал не включайте.