Root на Retroid Pocket 5: Тернистый путь к SSH и scanmem
ROOT на Retroid Pocket 5 (на прошивке .189) оказался чуть сложнее, чем предполагал мануал на Reddit.
Задача: Получить root-права, развернуть bash-среду (Termux), поднять SSH-сервер и использовать scanmem для работы с памятью игр/эмуляторов.
Вроде бы ничего сложного и всё предсказуемо, но китайская консоль с A/B разметкой подкинула несколько интересных сюрпризов. Изначально планировала использовать метод "No-PC" с помощью скриптов, запускаемых прямо из меню настроек консоли (фича Run script as Root).
Шаг 1: Успешный бэкап
Началось всё по инструкции:
1. Закинула на устройство скрипт rp5_backup_boot.sh. Он корректно отработал, создав папку bootbackup и сняв дампы разделов через dd.
mkdir -p /storage/emulated/0/bootbackup dd if=/dev/block/by-name/boot_a of=/storage/emulated/0/bootbackup/boot_a-backup-$(date +%F-%T) dd if=/dev/block/by-name/boot_b of=/storage/emulated/0/bootbackup/boot_b-backup-$(date +%F-%T)
2. На выходе получила файлы boot_a-backup-[дата] и boot_b-backup-[дата], каждый размером около 100.7 Мб.
Проблема 1: Magisk выдает файл 0 байт
Что случилось: При попытке пропатчить оригинальный бэкап (boot_a) через приложение Magisk прямо на консоли, на выходе получался файл magisk_patched_*.img размером 0 байт. Упаковщик Magisk банально падал при пересборке образа на самом устройстве (нехватка прав, памяти или конфликт архитектуры).
Решение: Вынесла процесс сборки за пределы консоли. Исходный бэкап перекинула на свой Galaxy S25+, где локальный Magisk без проблем пропатчил файл и выдал здоровый образ весом в те же 100.7 Мб.
Проблема 2: Инверсия тачскрина после прошивки
Что случилось: После прошивки пропатченного образа тачскрин консоли сошел с ума: свайпы влево-вправо срабатывали как вверх-вниз, и наоборот.
Причина: Популярный в сети скрипт rp5_flash_magisk.sh оказался написан отвратительно. Он брал первый попавшийся пропатченный образ и принудительно шил его сразу в оба слота: и в boot_a, и в boot_b.
Кривой скрипт rp5_flash_magisk.sh
dd if=$(ls /storage/emulated/0/Download/magisk_patched-* 2>/dev/null | head -n 1) of=/dev/block/by-name/boot_a dd if=$(ls /storage/emulated/0/Download/magisk_patched-* 2>/dev/null | head -n 1) of=/dev/block/by-name/boot_b mkdir -p /storage/emulated/0/bootbackup mv $(ls /storage/emulated/0/Download/magisk_patched-* 2>/dev/null | head -n 1) /storage/emulated/0/bootbackup/magisk_patched-flashed.$(date +%F-%T) rm $(ls /storage/emulated/0/Download/magisk_patched-* 2>/dev/null | head -n 1)
Решение: Подключила USB-мышку (чтобы хоть как-то управлять интерфейсом) и написала свой скрипт для отката, который через dd вернул оригинальные бэкапы на их законные места. Экран ожил.
# Восстанавливаем оригинальный boot_a (сборка 189) dd if=/storage/emulated/0/bootbackup/boot_a-backup-2026-03-07-16:45:01 of=/dev/block/by-name/boot_a # Восстанавливаем оригинальный boot_b (сборка 189) dd if=/storage/emulated/0/bootbackup/boot_b-backup-2026-03-07-16:45:02 of=/dev/block/by-name/boot_b
Проблема 3: Ловушка A/B слотов
Что случилось: Решив отказаться от кривых скриптов, перешла к прошивке через fastboot со своей Fedora. Пропатчила boot_a, прошила командой fastboot flash boot magisk_patched.img... и экран снова сломался!
Причина: Терминал выдал разгадку при прошивке: Sending 'boot_b'. Оказалось, что активным слотом на консоли в данный момент был слот B. А я упорно патчила дамп от слота A и заливала его в активный слот B. Из-за несовпадения версий ядра и драйверов между слотами после OTA-обновлений, драйвер тачскрина сходил с ума.
Правильный алгоритм (Итог)
Собрав все грабли, вывела единственный верный и безопасный путь:
1. Делаем бэкапы обоих слотов через встроенную функцию RP5 Run script as root, с помощью оригинального скрипта rp5_backup_boot.sh.
2. Подключаем консоль к ПК и проверяем активный слот: fastboot getvar current-slot (в моем случае это оказался слот b).
3. Берем бэкап именно активного слота (boot_b-backup-...).
4. Перекидываем его на другой Android-смартфон, патчим в Magisk, перекидываем готовый образ на ПК.
5. Шьем пропатченный образ нужного слота через терминал:
fastboot flash boot magisk_patched.img
6. Перезагружаемся: fastboot reboot.
Результат: Идеально работающий экран и полноценный Root.
Настройка рабочей среды и сборка scanmem
Казалось бы, рут получен, оставалось только накатить Termux (строго из F-Droid) и scanmem. Но оказалось, что сканера нет в официальных репозиториях. Пришлось собирать его руками из исходников.
Ставим нужные пакеты, задаем пароль (passwd) и поднимаем SSH-демон (sshd), чтобы не печатать с экранной клавиатуры:
pkg update -y && pkg upgrade -y pkg install -y root-repo openssh tsu git clang make autoconf automake libtool readline intltool gettext passwd sshd
Откладываем консоль, открываем терминал на десктопе и подключаемся на порт 8022 (IP можно узнать командой ifconfig wlan0 на консоли):
ssh -p 8022 username@console_IP_address
Клонируем репозиторий, жестко отключаем сборку графического интерфейса и компилируем бинарник:
git clone [https://github.com/scanmem/scanmem.git](https://github.com/scanmem/scanmem.git) cd scanmem ./autogen.sh ./configure --prefix=$PREFIX --enable-gui=no make make install
Ловушка SSH и Root-прав
После успешной установки меня ждал последний сюрприз. При попытке запустить сканер через sudo по SSH, Termux выдал ошибку: "No superuser binary detected. Are you rooted?".
Что произошло: Magisk честно перехватил запрос на повышение прав от Termux, но вывел диалоговое окно с подтверждением на физический экран консоли. А так как я сидела за монитором ПК по SSH, я этого окна просто не видела. Запрос отвалился по таймауту.
Правильный алгоритм запуска по SSH:
1. Берем консоль в руки и разблокируем экран.
2. В терминале на ПК вводим классическую команду:
su
3. Сразу смотрим на экран консоли — там появится запрос от Magisk. Нажимаем "Разрешить" (Grant) и ставим галочку "Запомнить навсегда" (Forever).
4. Приглашение в терминале на ПК сменится с $ на #. Мы в root-shell.
5. Теперь запускаем сканер напрямую, без всяких sudo:
scanmem
Всё! Полный доступ к памяти получен. Можно искать адреса, менять параметры и ломать игры.
---
/ru/