Жизнь после отвала eMMC. Часть 3: оживляем уникальный QWERTY-смартфон и загружаем Android с MicroSD

У меня страсть к коллекционированию и реставрации интересных смартфонов прошлых лет. Недавно один пользователь подарил мне довольно странный и необычный гаджет 2011 года: дешевый QWERTY-смартфон Samsung Galaxy Y Pro, оснащенный чипсетом от Broadcom. Помимо того, что этот смартфон имеет QWERTY-клавиатуру, меня также очаровало его родство с Raspberry Pi первого поколения. Но вот в чем проблема: смартфон не включается и просто зависает на логотипе. Если вас интересует необычный случай «сброса» eMMC и переноса Android на MicroSD флешку — жду вас!

❯ Теория

Проблемы с «потерей» памяти преследуют смартфоны и планшеты с начала 2010-х годов. После массового перехода с памяти NAND на eMMC многие смартфоны начали страдать от проблемы, заключающейся в том, что в один прекрасный день они зависали и больше не загружались… или, загружаясь, бесконечно зависали на экране загрузки. Обычные пользователи отнесут свой смартфон в сервисный центр, более продвинутые пользователи пойдут на специализированные ресурсы, чтобы скачать прошивку.. и с грустью обнаружат, что ничего не помогает, и смартфон так и застрял на знаке.

это происходит потому, что для загрузки системе необходим доступ как минимум к трем разделам: системному для чтения, а также разделу данных и кэша для чтения и записи. И eMMC, и современная память UFS имеют в чипе свой контроллер, который определяет SMART накопителя по своим параметрам, и если он считает, что флешка близка к «смерти», то просто переводит ее в режим «только чтение», благодаря чему данные пользователя остаются на своих местах, но смартфон уже никогда не сможет загрузиться без вмешательства специалиста.

Теоретически все замечательно: данные есть, сервису нужно просто считать дамп старой флешки, выбрать новую идентичную или совместимую микросхему, записать на нее дамп и восстановить все данные без потерь. Но на практике некоторые инциденты случаются: например, некоторые чипы Samsung с 2012 по 2014 год имели ошибку в прошивке, из-за которой они полностью выходили из строя с потерей всех данных, после чего смартфон вообще не подавал признаков жизни (примеры: Galaxy S4 Mini 9008, S4 Zoom, Note N8000), иногда eMMC просто полностью переходил в состояние «только для чтения» (HTC Desire SV и некоторые другие HTC с 2011 по 2012 год), иногда чип просто частично переходил в состояние «только для чтения» — операции записи в конечном итоге не выполнялись (вероятно, из-за того, что не было места для переназначения плохих файлов), и смартфон даже загружался.. но все приложения продолжали вылетать, а телефон не сохранял настройки.

Примерно то же самое произошло и со мной. В январе пользователь Андрей предложил мне прислать очень необычный смартфон — Samsung Galaxy Y Pro. Читатель попытался обновить страницу еще раз, но смартфон остался на заставке. Я, конечно, согласился, да и в принципе хотел познакомиться с платформой и, если получится, перенести всю систему на MicroSD флешку.

❯ Переносим на MicroSD

Получив смартфон, я определил, что он действительно застрял в цикле загрузки и никак не реагировал ни на сброс настроек до заводских, ни на восстановление прошивки. Смартфон продолжает находиться на загрузочной анимации — это значит, что можно сделать вывод, что ядро ​​Linux загружено, а сам смартфон вошел в финальную стадию загрузки — запуск zygote и «прорастание» из него app_process.

Чтобы понять, что все это значит, давайте кратко рассмотрим процесс загрузки Android:

  1. Запуск BootROM, SPL и загрузчика: когда смартфон включен или подключен к зарядному устройству, контроллер питания обеспечивает подачу питания на все модули устройства. После этого процессор начинает выполнять код загрузчика, но поскольку ни NAND, ни eMMC не поддерживают XIP (eXecute In Place — возможность подключения флэш-накопителя напрямую к шине процессора, как ПЗУ в Spectrum), процессор сначала выполняет код из BootROM — небольшого загрузчика, физически прошитого в небольшую ПЗУ на заводе, в задачи которого входит аварийный режим восстановления в случае выхода устройства из строя (порт MTK USB на MediaTek, 9008 на Qualcomm, FEL на AllWinner) и загрузка вторичного загрузчика из eMMC/NAND — SPL (называемого Preloader на MediaTek). Его задача — инициализировать оперативную память и передать управление вторичному загрузчику — загрузчику, который вы, вероятно, захотите разблокировать и загрузить ядро ​​Linux.

    Но вот в чем дело: чипсеты Broadcom не имеют BootROM: ядро ​​ARM загружается графическим процессором VideoCore, который по сути является векторным цифровым сигнальным процессором! Так что Y Pro интересен еще и этой тривиальной, но интересной деталью :)

  2. Linux: Обычно ядро ​​не хранится в сыром виде, а находится в специальном разделе загрузки/восстановления и представляет собой образ zImage + ramdisk. Этот ramdisk содержит минимум программ, необходимых для загрузки устройства: init, busybox (не всегда) и.. всё!

    Формат таких изображений условно стандартизирован и может быть разобран и объединен с помощью специальных программ. Например, AndImgTool!

  3. init: Далее основная программа с PID 0 - init, запускает набор скриптов с расширением .rc в корневом каталоге ramdisk. Скрипт содержит обработчики событий (ранний запуск, запуск, поздний запуск и т д.) и список служб для запуска. Скрипт монтирует разделы, запускает службы при необходимости, создает ссылки, загружает динамические модули и настраивает драйверы/ядро, а также режимы USB и adb. Кроме того, init заботится о свойствах, указанных в build.prop и default.prop, которые позволяют включить adb, даже если устройство не загружается. Это нам понадобится позже.

  4. app_process: После монтирования системного раздела запускается RIL и выполняет другие важные операции — скрипт rc наконец запускает app_process с параметром zygote. Это самый важный процесс в Android, и его сбой приведет к «мягкой перезагрузке» — то есть появится анимация загрузки и появится рабочий стол app_process похож на машину Dalvik Java (или ART в Android 5.1+), похож на java.exe, но для воспроизведения использует метод порождения — с помощью системного вызова fork.

  5. Когда все службы запущены, устройство отображает рабочий стол и вызывает событие ON_BOOT_COMPLETE.

Да, все так просто. Итак, исходя из вышеизложенной ситуации, как нам перенести Android на MicroSD? Правильно, пропатчить загрузочные скрипты так, чтобы они монтировали системный раздел и разделы данных с кэшем не с внутреннего хранилища, а с флешки. Однако для того, чтобы исправления работали, eMMC должна быть хотя бы частично перезаписываемой.

Сначала я попробовал установить кастомную прошивку с помощью CWM (она не перепрошивалась вечно, а начиналась с ошибки в update.zip) и заметил изменение в поведении смартфона: он просто завис на главном логотипе, даже не загрузив загрузочную анимацию. Это означает, что какая-то операция перезаписи завершилась с ошибкой и init не может смонтировать систему, или что-то там пошло не так. Но все равно что-то перезаписалось и после прошивки стоковой системы смартфон снова начал показывать загрузочную анимацию... Означает ли это, что флешка не полностью доступна только для чтения?

я решил пропатчить boot.img и активировать в нем режим отладки по USB, чтобы посмотреть, что происходит в dmesg. Для этого я распаковал образ с помощью AndImgTool, открыл файл default.prop и заменил свойства ro.secure = 0, ro.debuggable = 1 и persist.service.adb.enable = 1

в те годы Samsung еще не заблокировал загрузчик, поэтому любой раздел можно было прошить с помощью фирменного прошивальщика. Для этого необходимо создать tar-архив, поместить внутрь него образ (например, boot.img), выбрать его в программе и нажать «Старт".

после прошивки смартфон по-прежнему зависает на заставке.. но в диспетчере устройств распознаётся и команда adb devices показывает, что смартфон подключен. Это означает, что раздел был перезаписан, и только часть eMMC становится доступной только для чтения! Нормально ли работают разделы, которые никогда не перезаписывались (включая системный, загрузочный, восстановления и SPL?

пишем в dmesg и.. видим, как драйвер eMMC отправляет в printk информацию об ошибке перезаписи в раздел /data/. Но я же говорил, что Android просто обязана загрузиться!

Но если устройства eMMC в Linux обычно называются mmcblk, то что такое stl11? Давайте посмотрим на init.rc:

Разделы используют некую самодельную файловую систему RFS (собственная разработка Samsung) и J4FS вместо более распространенных YAFFS или EXT4. Давайте сделаем логический вывод: если системный и efs-разделы (с настройками модема) в порядке и никогда не перезаписывались, а Android требуется перезаписать данные и кэши после загрузки ядра..

Обратите внимание: 12 лучших смартфонов Xiaomi.

то вы можете просто переместить эти разделы на MicroSD и заставить init.rc смонтировать разделы оттуда!

Для этого мы используем флэш-накопитель MicroSD и с помощью fdisk разделяем его на три раздела: один для /data/ (30% емкости MicroSD — или не менее 256 МБ), второй для /cache/ объемом около 64 МБ и третий для обычных файлов. Затем мы используем программу mke2fs для форматирования первого и второго разделов как ext2, а третьего раздела как обычного FAT32 (или ext2, если это необходимо).

далее регистрируем новую точку монтирования в init.rc, компилируем boot.img и прошиваем его на смартфон:

И вот, через несколько минут загрузки.. нас встретил рабочий стол! Радости нет предела :) Но некоторые читатели могут усомниться в практичности всей этой идеи, ведь MicroSD как минимум в десять раз медленнее eMMC... Но так ли все плохо? Давайте посмотрим на практике!

❯ Тестируем

Поскольку у нас есть смартфоны с QWERTY-клавиатурами и горизонтальными дисплеями, здесь лаунчер был адаптирован для частичного управления с помощью кнопок, но важно отметить, что не все приложения подходят для такого DPI. У него также есть сенсорный экран, причем емкостный, что является отличной новостью. Дисплей использовал технологию TN и имел разрешение всего 240x320, что обычно довольно много для смартфона, но нормально для недорогого QWERTY-телефона того времени.

Внутри установлен чипсет от Broadcom — BCM21553 с ядром ARM1136, работающим на частоте 832 МГц. Да, это ядро ​​ARMv6, что существенно сужает круг поддерживаемых игр и приложений. Некоторое время на 4pda даже существовал клуб специально для владельцев смартфонов с этим чипсетом, где люди жаловались на отсутствие поддержки ARMv7! Смартфон также оснащен 384 МБ оперативной памяти DDR2 и 512 МБ встроенной памяти.

В качестве графического процессора используется фирменное ядро ​​Broadcom VideoCore IV. Он также стал объектом критики на профессиональных форумах. Дело в том, что, как и у графического процессора Samsung (FIMG), у VC IV были плохие драйверы GLES, которые в то время были критически важны для игр. Во многих играх на Y Pro присутствуют белые текстуры или графические артефакты, поскольку большинство версий оптимизированы для Qualcomm Adreno и Mali.

Для сравнения: Raspberry Pi моделей A и B — братья смартфона, и их аппаратное обеспечение практически во всем схоже. Теперь мы узнаем, что этот смартфон представляет определенную коллекционную ценность для любителей гаджетов с уникальными процессорами!

После переноса части системы на MicroSD производительность смартфона снизилась лишь незначительно. Устройство по-прежнему продолжало работать относительно плавно, без заметных замедлений загрузки или задержек. Многие приложения работают нормально, но задержки не редкость:

Но можем ли мы в наше время сказать, что смартфоны бесполезны? Я так не думаю, он все еще способен выполнять определенные задачи. Например, серфинг в Интернете — самые простые операции по-прежнему можно выполнить с помощью Opera Mini 7, которая все еще работает более 10 лет после своего выпуска. Многие страницы отображаются некорректно, и нет ни одного интерактивного сайта.. но вы все равно можете читать Википедию или Хабр!

Вы сможете пользоваться своим почтовым клиентом, если отключите проверку сертификата (Безопасность -> «SSL (Принимать все)») и будете использовать одноразовый пароль. Он работает быстро, но не поддерживает push-уведомления, поэтому проверяет наличие сообщений примерно каждые 5 минут.

Вы также можете провести некоторое время в мессенджерах. Я написал клиенты ВКонтакте и TG для смартфонов на Android 1.5+ (работающих через прокси) и даже запустил их на первых в мире серийных Android-смартфонах, где они работают действительно хорошо. Об официальном клиенте речи не идет — большинство разработчиков считают Android 2.3 слишком устаревшим.

Конечно, вы тоже можете играть. Начиная с Java-игр, в которые очень удобно играть благодаря аппаратным кнопкам, и заканчивая эмуляторами консолей, которые в основном тут летают и нативными играми. Таким образом, старый смартфон превращается в миниатюрную портативную консоль. Единственным недостатком является то, что производительность графического процессора VC IV очень низкая при запуске 3D-игр. Даже Raging Thunder 2 с его идеально оптимизированным рендерером иногда демонстрирует здесь некоторую задержку, хотя он отлично работает на Adreno 200 (ATI Z430), Mali-300 и даже Vivante GC-600!

Хоть спектр задач и не очень широк, смартфон все равно очень интересный и классный :)

❯ Заключение

Представляем вам статью о восстановлении необычного смартфона 2011 года. Надеюсь, она была вам интересна и полученные знания были вам полезны. Ну а если у вас есть какие-либо вопросы о возможности переоборудования смартфона для загрузки с MicroSD, не стесняйтесь спрашивать в комментариях!

Всего голосов:

Если вам интересны темы ремонта, модификации и программирования гаджетов последних нескольких лет - подписывайтесь на мой Telegram-канал "baldezh fan club", где я выкладываю закулисье статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и заблокированные посты. Видеоверсию статьи можно найти на моем канале YouTube.

Очень важно! Необходимое оборудование для будущих статей!

Друзья! В рамках подготовки статьи о разработке самодельных игрушек из необычных устройств объявляется поиск телефонов и приставок! В 21 веке китайцы часто выпускают недорогие телефоны с игровой направленностью — обычно у них есть какой-нибудь геймпад (джойстик) или как минимум две кнопки, выполняющие функции A/B на верхней панели устройства, а также предустановлен эмулятор NES/Sega. Фишка в том, что на таких телефонах можно запускать нативный код и портировать на них новые эмуляторы, что я и хочу сделать, написать подробную статью и записать видео об этом! Если у вас есть телефон с таким форматом и вы готовы его подарить или продать, напишите мне, пожалуйста, в Telegram (@monobogdan) или в комментариях. Меня также интересуют Android-приставки для смартфонов (Func Much-01 точно есть на российском рынке), формат контента будет немного отличаться :)

Я также ищу старые (2010-2014) копии смартфонов таких брендов, как Samsung, Apple и т д. Они обычно оснащены очень интересными чипсетами и хорошо поддаются моддингу, несколько статей об этом уже опубликованы, но у меня все еще есть несколько идей по их моддингу! Также, возможно, у кого-то все еще есть один из самых ранних смартфонов Xiaomi (серия Mi), Meizu (все еще использующий Exynos) или телефоны Motorola на базе Linux (такие как EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E5, ZINE ZN5 и т д. Я хотел бы подготовить специальную статью и видео о них, потому что на самом деле они использовали очень мощные процессоры того времени, допускали серьезный моддинг и даже могли запускать Quake!). Большое спасибо за ваше пожертвование!

Я также поместил все свои телефоны в одну корзину (это значит, что все проекты находятся на одном облачном провайдере) – Timeweb. Вот почему я беззастенчиво рекомендую то, чем пользуюсь сам — добро пожаловать.

[Мое] Голосование Мобильный телефон Смартфон Гаджет Подарок Пожертвование Samsung Galaxy Qwerty Прошивка Модификация Microsd Linux Android Samsung Galaxy Видео Без звука Короткое видео Длинный пост 23

Больше интересных статей здесь: Гаджеты.

Источник статьи: Жизнь после отвала eMMC. Часть 3: оживляем уникальный QWERTY-смартфон и загружаем Android с MicroSD.