Root на Retroid Pocket 5: Тернистый путь к SSH и scanmem

🇬🇧 Читать по Английски


ROOT на Retroid Pocket 5 (на прошивке .189) оказался чуть сложнее, чем предполагал мануал на Reddit.

Оригинальный тред на 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

Всё! Полный доступ к памяти получен. Можно искать адреса, менять параметры и ломать игры.


---


Назад к разделу Android


Домой



/ru/