На грани отвала eMMC: Устанавливаем Android на SD-карту на любом смартфоне/планшете! Вторая жизнь для дешевых кит. устр

К сожалению, китайские производители бюджетных девайсов всё туже и туже затягивают пояса для уменьшения конечной цены девайсов. Попытки сэкономить сказываются не только на качестве дисплеев, пластиковых тачскринах, слабых процессорах, но и на памяти. Причём последнее время в устройства до 5-6 тысяч рублей ставят откровенно неликвидную и отбракованную память брендов Foresee и Barum, которая может прослужить как пару месяцев, так и 5 лет. Сегодня мы с вами: узнаем небольшую историю «затягивания» поясов китайцами, во всех подробностях перенесём Android на MicroSD-флэшку (гайд применим для любых производителей и чипсетов), посмотрим, как будет работать Android с такого накопителя и подведем выводы. Интересно? Тогда добро пожаловать!

На грани отвала eMMC: Устанавливаем Android на SD-карту на любом смартфоне/планшете! Вторая жизнь для дешевых кит. устр

❯ Предыстория

Пожалуй, стоит отметить, что данная статья является ремейком одной из моих самых первый статей, которую я написал еще летом 2022 года. На тот момент я был совсем неопытным автором и написал достаточно скомканный и не подробный текст, однако понимая, что такой гайд может быть полезен многим, я решил переписать его, снабдив большим количеством скриншотов и пояснений к каждому пункту процесса. В действиях описанных ниже нет ничего сложного, а перенести Android таким образом можно почти на любом устройстве (MTK, Spreadtrum/UniSoc, Qualcomm, Kirin, Exynos).

На самом деле, китайские производители и импортеры в РФ практически всё время пытаются забить ультра-бюджетный сегмент гаджетов различными дешевыми смартфонами и планшетами. До 5.000 рублей можно легко купить 10" планшет или 5" смартфон на относительно свежих версиях Android Go. Подавляющее число девайсов работает на весьма известном чипсете — MediaTek MT6580, 4х-ядерный чипсет аж 7 летней давности, финальная форма эволюции очень неплохого на своё время MT6582, а в качестве памяти используются eMCP модули с 1гб DDR3 ОЗУ и 8гб ПЗУ. Немудрено, что таких характеристик на 2023 год не просто мало, а очень мало: смартфон из коробки не потянет ни онлайн-банкинг (Сбер, привет тебе с твоим тяжелющим приложением. Запилите лайт версию хотя-бы. Тинькофф/Альфа скорее всего в те же ворота), ни современные игрушки, ни даже клиент ВКонтакте или Telegram! Смартфоны откровенно позиционируются производителями как девайсы начального класса, которые подойдут в роли смарт-звонилки с возможностями что-то загуглить при необходимости. В них даже LTE нет, только 3G, который потихоньку в МСК начинают сворачивать.

На грани отвала eMMC: Устанавливаем Android на SD-карту на любом смартфоне/планшете! Вторая жизнь для дешевых кит. устр

Почти всё выше написанное применяется и к похожим смартфонам на Ali до 4.000 рублей. То же железо, разве что могут сделать в дизайне свежего флагмана с большим дисплеем неплохого качества. Чип практически 8 летней давности… в 2023… что-то здесь не то, да? В 2013 году выходило просто кучу девайсов за те же 2-3 тысячи рублей (примерно как сейчас 4-5 тысячи рублей), которые работали на очень свежих и бодрых MT6572/MT6577 в те годы. То есть, чипсет брался по году выпуска или чуть-чуть старше и все эти «мегафоны логины», «билайн смарты» легко тянули банки, оф. клиенты соц. сетей и мессенджеры. Но видимо MediaTek изначально сделала огромные заказы на 6580, захотев отнять рынок ультрабюджетных девайсов у Spreadtrum. И таки да, план работает, устройства на 6580 до сих пор продолжают выходить, с одними и теми же чипсетами, одними и теми же чипами памяти и кое-где даже схожими платами (все они наследуются от одной референсной платы). И если 5-6 лет назад в качестве самой дешевой памяти использовали eMCP от Hynix, которая была вполне неплохой: у меня многие девайсы с ней до сих пор живут и здравствуют, то сейчас используется некая Barum и Foresee. Ни по маркировке, ни по CID ничего официального найти не получается, что даёт нам возможность предположить, что это просто перемаркированная бракованная память от Hynix/Samsung с перебитым CID.

На eMMC обычно есть JTAG-поинты, а на заводах их наверняка проверяют на кол-во бэдблоков и перезаписываемость. Лично мне кажется, что сотрудники условного Hynix просто за «дешман» перепродают полуживые eMCP модули производителям смартфонов, а те их ставят в свои смартфоны. Ведь хотя-бы месяц-два они походить должны! Вышенаписанное касается только ПЗУ, ОЗУ бракованную я не видел никогда.

На грани отвала eMMC: Устанавливаем Android на SD-карту на любом смартфоне/планшете! Вторая жизнь для дешевых кит. устр

Сегодняшним нашим героем станет некий Xgody Y20 — в своё время довольно популярная модель-«лопата» на AliExpress, которую я купил на «сдачу» с покупки свеженькой GTX1050. Смартфон я приобрел за 4.000 рублей, за такие деньги производитель обещал весьма неплохой набор характеристик: 6580, Android 5.1 (в 2018 то году!), 1гб ОЗУ (здесь наврал) и аж 6 дюймовый IPS дисплей с разрешением 480x800.

На своё время, смартфон был в целом неплох за свою цену нового девайса — 5.1 не особо много ресурсов кушает, там можно было поиграть и в NFS Most Wanted, и в оф. клиенте ВК посидеть, пока он ещё не разжирел, и просто пользоваться «на повседнев». Для меня он имеет особое значение, поскольку это первый смартфон, который я купил на первую лично заработанные 400$, когда в 16-17 лет запилил гиперкеж на юнити для своего товарища. Теперь я храню его как память, вместе с родной коробочкой, но его работоспособность под сомнением…

На грани отвала eMMC: Устанавливаем Android на SD-карту на любом смартфоне/планшете! Вторая жизнь для дешевых кит. устр

Причем я нашел страницу производителя: Shenzhen Xin Sheng Shang Techonology. XGody — похоже ее личный бренд.

❯ Немного теории

В своё время, я не сделал дамп прошивки с этого девайса, а их выходило по меньшей мере 2-3 ревизии. Прошивка в сети только для одной ревизии, поэтому когда моя система окончательно захламилась, я перепрошил его, не снимая галочки с preloader. На устройствах с MediaTek, Preloader помимо загрузки вторичного загрузчика lk, инициализирует контроллер ОЗУ и ПЗУ. Список поддерживаемых модулей eMCP хранится в виде таблицы CID -> настройки ОЗУ. Именно поэтому если прошить «левый» preloader мы будем получать постоянную ошибку в SP Flash Tool — смартфон банально не сможет инициализировать ОЗУ (DRAM_FAILED)! Если производитель захотел заменить eMMC на определенной ревизии, он добавляет в csv параметры ОЗУ eMCP модуля, его CID и пересобирает Preloader. Дошло до того, что прелоадеры сортируют по номеру сборки (preloader_wegc, preloader_magc, preloader_gemini и т. п.), а поддерживаемые CID вычитывают спец. софтом для подбора подходящего preloader'а!

Кто бы сомневался, что китайцы в один и тот же смартфон поставят несколько разновидностей памяти, так случилось и с моим. Похоже к концу производства, в них начали ставить самую дешевую память, поэтому когда я год спустя нашёл подходящий preloader (помог человек с программатором, сейчас найти preloader можно и без программатора — CID флэшки пишется в лог BROM Flash Tool'а), я прошил стоковую прошивку. И всё работало (кроме камеры), вот только девайс начал самопроизвольно зависать через ~час работы. И тут я предположил, что дело может быть именно в eMMC…

Теперь давайте по порядку: если вы когда-то прошили смартфон с неподходящим preloader, то его еще можно оживить, с помощью подбора prleoader'ов с других девайсов. Для этого пытаемся что-нибудь прошить, заходим в логи Flash Tool (Help -> Show logs), открываем лог BROM и ищем там «eMMC». Download Agent сам вычитывает ID флэшки и напишет её в лог. Забиваем CID флэшки в гугл, обычно гугл приводит на форумы, где сервисники сливали спец. софтом прошивку и выкладывали логи, где сервисный софт пишет CID флэшки. Прелоадер от этого девайса можно будет взять!

Если после оживления девайса вы получили белый экран — проблема в lk или ядре. lk — эдакий аналог U-Boot в MTK, инициализирует дисплей и показываем первую «заставку» (до появления бут-анимации). Ищем подходящее ядро (boot.img) или lk. Если остался родной рекавери/бут — ядро можно вытащить оттуда и «собрать из двух один». Ну а теперь к основной теме статьи!

❯ Перенос Android на MicroSD

Давайте определимся с необходимыми работами. Android поделен на 3 основных раздела, которые необходимы для работы системы:

  • system — /system/ в файловой системе, read-only раздел с основными файлами системы, android.jar, приложениями.
  • userdata — /data/ в файловой системе, хранит установленные приложения, их данные.
  • cache — /cache/ в файловой системе, хранит собственно кэш ART/Dalvik (в более старых системах).

Сначала preloader загружает lk, затем lk в зависимости от режима загрузки (charger/normal/recover) выбирает нужный образ с ядром и рамдиском. boot.img — основной образ с ядром, запускающий систему, а recovery.img — рамдиск с рекавери, который содержит абсолютно такое же ядро, но вместо zygote запускает recovery. Точки монтирования основных разделов лежат в vold.fstab, который можно найти в /etc/ каждого образа. Суть переноса проста:

  • Делим флэшку на 4 раздела с помощью fdisk.
  • Форматируем 3 раздела в ext4, а 1 — в fat (для пользовательских файлов).
  • Патчим vold.fstab.
  • Копируем подмонтированный как loopback устройство system.img на первый раздел флэшки с сохранением всех прав.
  • Перезагружаемся, ждём первой загрузки и радуемся спасенному девайсу!

В первую очередь нам надо разбить флэшку на разделы. Есть два варианта: с устройства и с ПК. Я лично всё делаю с устройства для наглядности. Для этого нам понадобится TWRP, ADB и флэшка на 8-16гб. Можно и на 2-4 уместить, но будет немного… тесновато! Флэшку лучше брать 10 класса: скорость eMMC редко ниже чем 100мб/c, а на флэшке 4-5 класса все будет совсем печально. Прошиваем TWRP с помощью SP Flash Tool:

На грани отвала eMMC: Устанавливаем Android на SD-карту на любом смартфоне/планшете! Вторая жизнь для дешевых кит. устр

Загружаем скаттер MT6580, выбираем наш recovery.img и жмем Download. Подключаем выключенный смартфон, дальше софт всё сделает сам!

На грани отвала eMMC: Устанавливаем Android на SD-карту на любом смартфоне/планшете! Вторая жизнь для дешевых кит. устр

После прошивки рекавери, в него нужно зайти с помощью громкости вверх + включения. Девайс предложит выбор режима загрузки — выбираем Recovery. В TWRP сразу открыт доступ к смартфону через adb, поэтому мы можем работать как root пользователь с обычного терминала. Разбиваем нашу флэшку с помощью fdisk. На большинстве устройств mmcblk0 — это eMMC/NAND, а mmcblk1 — это внешняя microsd флэшка.

fdisk /dev/mmcblk1 n p 1 <желаемый размер в цилиндрах для системы> n p 2 <желаемый размер в цилиндрах для юзердаты (лучше побольше)> n p 3 <желаемый размер в цилиндрах для кэша (можно ~50мб)> n p 4 Enter (разметит остаток флэшки для данных пользвоателя) w exit (выходим из шелла) adb reboot recovery (перезагружаемся снова в recovery).
На грани отвала eMMC: Устанавливаем Android на SD-карту на любом смартфоне/планшете! Вторая жизнь для дешевых кит. устр

Таблица разделов обновится только после перезагрузки. То, что сыпет ошибками ioctl — норма. Если вы всё сделали правильно, то в /dev/block увидите mmcblk1p1, p2, p3, p4 — это наши разделы. Еще раз вспоминаем: 1 раздел под system, 2 раздел под userdata, 3 раздел под cache, 4 раздел под всё остальное. Порядок следования значения не имеет, но я решил пронумеровать так для удобства.

Теперь нам нужно отформатировать наши разделы и подмонтировать /system/. Копируем только файлы из /system/, если вам не нужны данные на устройстве — наш /data/ достаточно будет отформатировать вместе с /cache/. Осторожно! На старых мобилках busybox на 32х битных системах не умеет форматировать ext2 на больших разделах. Ниасилили. Тут либо копировать раздел напрямую с помощью dd (что мы и сделаем), либо форматировать флэшку с ПК через кард-ридер. У меня cygwin на ПК не установлен, как и виртуалки с линухом, поэтому это вполне неплохая альтернатива:

adb shell mount /dev/block/platform/mtk-msdc.0/by-name/system /system/ mkdir /systemsd/ mount /dev/block/mmcblk1p1 /systemsd/ dd if=/dev/block/platform/mtk-msdc.0/by-name/system of=/dev/block/mmcblk1p1 bs=1M
Со скоростью флэшки не обманули!
Со скоростью флэшки не обманули!

В этой версии busybox есть баг с форматированием разделов >2гб на 32х битных системах. Поэтому если вы не хотите замарачиваться с установкой cygwin/линуха в виртуальную машину, можно просто взять dd. Нулями забить не выйдет — Android автоматом /data/ не форматирует. Если Android не сможет его подмонтировать — получите либо бутлуп, либо в системе ничего не будет сохраняться.

dd if=/dev/block/platform/mtk-msdc.0/by-name/userdata of=/dev/block/mmcblk1p2 bs=1M dd if=/dev/block/platform/mtk-msdc.0/by-name/cache of=/dev/block/mmcblk1p3 bs=1M

Теперь нам осталось пропатчить vold в родном boot.img, чтобы система загружалась с microsd флэшки. Для этого берем AndImgTools или готовую «кухню» (я использую MTKImgTools) и распаковываем родной boot.img из прошивки:

На грани отвала eMMC: Устанавливаем Android на SD-карту на любом смартфоне/планшете! Вторая жизнь для дешевых кит. устр

В Unpack/boot/ramdisk/fstab.mt6580 заменяем:

/dev/block/platform/mtk-msdc.0/by-name/system /system ext4 ro wait /dev/block/platform/mtk-msdc.0/by-name/userdata /data ext4 noatime,nosuid,nodev,noauto_da_alloc,discard wait,check,resize,encryptable=/dev/block/platform/mtk-msdc.0/by-name/metadata /dev/block/platform/mtk-msdc.0/by-name/cache /cache ext4 noatime,nosuid,nodev,noauto_da_alloc,discard wait,check /dev/block/platform/mtk-msdc.0/by-name/protect1 /protect_f ext4 noatime,nosuid,nodev,noauto_da_alloc,commit=1,nodelalloc wait,check,autoformat /dev/block/platform/mtk-msdc.0/by-name/protect2 /protect_s ext4 noatime,nosuid,nodev,noauto_da_alloc,commit=1,nodelalloc wait,check,autoformat /dev/block/platform/mtk-msdc.0/by-name/nvdata /nvdata ext4 noatime,nosuid,nodev,noauto_da_alloc,discard wait,check,autoformat

На:

Обратите внимание на encryptable. Этот флаг нужно убрать, иначе система упадет в бутлуп. Шифрование нинужно!

На грани отвала eMMC: Устанавливаем Android на SD-карту на любом смартфоне/планшете! Вторая жизнь для дешевых кит. устр

Собираем boot.img, прошиваем с помощью SP Flash Tool и тестируем что получилось! По самому распространенному списку ошибок:

  • Ребут сразу после начальной заставки, до анимации загрузки — либо поврежден boot.img, либо вы неверно скопировали /system/
  • Бутлуп: отформатируйте правильно /data/
  • Система очень сильно лагает после загрузки: это же первая загрузка, будьте терпеливей. Система с SD стартует заметно медленнее.
  • Жалуется на невозможность расшифровать пользовательский раздел: Либо форматировать с помощью mke2fs (только twrp), либо пропатчить таблицу разделов самого twrp и сменить ФС уже с его помощью!

Кстати! Забавный нюанс: во время подготовки оригинала статьи, какая-то китайская флэшка на 16гб с алика у меня померла прямо во время записи образа dd. Так что будьте осторожнее! :)

❯ Юзабельно ли?

На грани отвала eMMC: Устанавливаем Android на SD-карту на любом смартфоне/планшете! Вторая жизнь для дешевых кит. устр

Друзья! Очень важно понимать, что после первой загрузки Android нужно закэшировать приложения, а после каждой загрузки — прогрузить все ассеты минимально необходимых приложений в ОЗУ. Для особой наглядности, я назову этот процесс «пропердеться» :) После 1-2 минутной загрузки, система начинает работать неплохо, но не особо отзывчиво. Очень важно не забывать, что даже быстрая MicroSD в десятки раз медленней самой дешевой eMMC памяти, поэтому система будет работать не особо быстро.

Если бы в устройстве было хотя-бы 2-3гб ОЗУ, то теоретически систему можно было бы загнать в рамдиск и распаковывать с флэшки при каждой загрузке. Да, загрузка системы будет занимать минут 5, но сама система будет прямо таки летать!

Сёрфинг девайсу даётся неплохо. В целом, всё работает шустро, главное не заставлять девайс выгружать приложения в фоне. Иначе переключение на мессенджер или рабочий стол обернется 10 секундным ожиданием!

На грани отвала eMMC: Устанавливаем Android на SD-карту на любом смартфоне/планшете! Вторая жизнь для дешевых кит. устр

Неплохо даются и соц. сети. Пользоваться легким клиентом ВК можно без проблем, Telegram и WhatsApp я бы не рискнул — они нехило наседают на хранилище. Но попробовать можно.

Основные функции звонилки тоже работают адекватно. Никаких проблем с этим нет, хотя теоретически может произойти ситуация, когда при первом звонке после ребута вы сможете ответить только через 1-2 секунды прогрузки интерфейса звонилки.

На грани отвала eMMC: Устанавливаем Android на SD-карту на любом смартфоне/планшете! Вторая жизнь для дешевых кит. устр

Поиграть тоже можно, но в основном в эмуляторы. Никаких вам пубгов на таком железе! Зачем было городить 9 андроид на чипсет 8 летней давности — мне не понять, но 5ка и 6ка бегают хорошо! Есть возможность установки кастомной облегченной прошивки, я лично запускал на этом девайсе «линейку» и ходил… до первого зависона. После полного переноса прошивки на microsd, зависания пропали — а значит девайс мы оживили и дали ему вторую, пусть чуть-чуть и тормозную жизнь! Почти из коробки работают все прошивки для 6580 с той же версией ядра — у моего 3.10.72, что даёт возможность накатить Android 5, 6 и 7. Но по понятным причинам, я остановлюсь на «пятерке». Также не рекомендую ставить на такое железо MIUI, прошивки с Meizu и.т.п — MIUI едва вывозят сами редмики, а тут вы на слабое железо его поставит.

❯ Заключение

Как вы уже поняли, оживить таким образом получится только девайсы, у которых eMMC ещё не совсем упала в readonly. Должны быть доступными хотя-бы первые 50мб USER раздела eMMC. На самом деле, я далеко не первооткрыватель такого способа переноса Android на флэшку: похожим образом работают кастомные свежие прошивки для девайсов 2010-2011 годов, как например Xperia Arc: там часть системы тоже отправляется на microsd, поскольку не «помещается» во внутреннюю память, а в 2011-2012 году, таким образом ставили прошивки на Galaxy Young/Ace, дабы освободить немножечко места во внутренней памяти!

После такого даунгрейда, девайс заметно теряет в отзывчивости и работает гораздо медленнее. Но если вам срочно нужен смартфон, а возможности приобрести другой нет, или вам девайс дорог как память — почему бы не оживить его таким способом? А вы как считаете?

На грани отвала eMMC: Устанавливаем Android на SD-карту на любом смартфоне/планшете! Вторая жизнь для дешевых кит. устр

Материал подготовлен при поддержке TimeWeb Cloud

Можно ли пользоваться девайсом после таких модификаций?
Да, для каких-то базовых задач вполне.
Нет, не юзабельно
Нашли что-то полезное?
Конечно!
Нет
6.1K6.1K показов
1.7K1.7K открытий
11 репост
14 комментариев

СД карта очень быстро сдохнет, ненадежно, но очень интересно

Ответить

уверен что телефон сдохнет быстрее

Ответить

Вот это заморочился, юзать я конечно такое не стал бы.
Однако ради интереса можно и заморочиться

Ответить

Мощно! Уважаемо!

Ответить

О, я этой хернёй маялся как раз лет десять назад. На xDa до сих пор исходники должны быть.

Ответить

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

Ответить

Ну вот да. По сути время (деньги) которое затратится на такое дрочево проще былоб докинуть на изначально более качественный девайс. КПД явно будет выше. Еще и микроСД будет постоянно лагать.

Ответить