Как стать автором
Обновить
2082.47

Исходников нет, но мы не сдадимся: портируем Android без каких-либо исходников от производителя

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров19K
Несмотря на то, что ядро Linux предоставляется под лицензией GPL, ушлые китайские производители зачастую не хотят публиковать исходный код ядер своих устройств. И ладно, если бы это касалось смартфонов по 2-3 тысячи рублей, но ведь даже за 8-10 тысяч вас могут обделить с «исходниками», хотя по закону это их прямая обязанность! Однако, даже отсутствие исходного кода ядра, не помешает нам портировать кастомную прошивку и подарить вторую жизнь герою нашей сегодняшней статьи — поддельной реплике Huawei P20 Pro на базе чипсета MT6580! Сегодня мы с вами: узнаем подробнее про новые смартфоны за 7-8 тысяч рублей из онлайн-магазинов, портируем прошивку crDroid простым копированием файлов и посмотрим, как работает такой девайс в 2023. Интересно? Тогда добро пожаловать под кат!

Дорогие представительницы прекрасного пола, я и TimeWeb Cloud, поздравляем вас с 8 марта!

image


Что за девайс?


Сегодняшний девайс расходится в онлайн-маркетплейсах как горячие пирожки. Хитрые продавцы пишут заведомо ложные характеристики в духе «1TB ROM 8GB RAM», где характеристики нужно поменять ровно наоборот — где 1TB на самом деле 1гб ОЗУ, а где 8GB RAM — на самом деле 8гб ПЗУ. И ведь китайцы сделали собственную вариацию Android, умудряясь подделывать выводимые данные о количестве свободного места во внутренней памяти и ОЗУ.

image

Довольно популярные «сойесы» — мини реплики последних моделей iPhone. Прикольная штука, если честно, эдакий отголосок к Xperia X10 Mini из 2010!

Некоторые ушлые покупатели решили сделать на этом бизнес, намеренно заказывая подобные смартфоны, а затем снимая разоблачения и открывая споры, получая таким образом почти бесплатные гаджеты. И ведь спору ноль: это косяк продавца, что он намеренно обманывает (однако отмазка в том, что «1TB ROM 8GB RAM» — это название устройства), но именно из-за этого AliExpress стал негативно относиться к покупателям из СНГ, зачастую закрывая споры, где права клиента очевидны.

image

Подобные устройства работают фактически на одной и той же аппаратной платформе. Похоже, не меняются даже платы, а лишь корпуса: где-то стилизация под последнюю модель iPhone, где-то под Samsung, ну а где-то под Huawei. Унифицируют всё — шлейфа на разные ревизии смартфонов, нижние платы, да и платы зачастую очень похожи. Вероятней всего, унифицированы и дисплеи, а нужную форму «брови» иногда рисуют в виде оверлея в системе или на рамке тачскрина. Обычно подобные девайсы работают на базе известного ультрабюджетного чипсета 8 летней давности — MediaTek MT6580, который повсеместно встречается в смартфонах до 5-6 тысяч рублей. И ведь чипсет был неплох на момент выхода, но китайские производители умудрились портировать на него последние версии Android и пытаются выжать из них последнее. Как итог, жутко тормознутые устройства с откликом на действия 1-2 секунды. Через месяц-два такие девайсы попадают на онлайн-барахолки за цену в 2-3 раза ниже той, за которую их купили. Таким образом, я подарил своей маме I14 Pro Max за 1.500 рублей, у которого ядро собрано в декабре 2022 года, а попал он на Авито в январе 2023 (!). :)

image

После нового года подобные штуки просто взлетели в цене: китайская реплика S22 может стоить более 20.000 рублей

Кто покупал такие устройства? Самый разный контингент. Конечно, iPhone или Samsung уже не имеют той «крутости», которую могли предложить хотя-бы 10 лет назад, поэтому навряд ли имеют место быть банальные понты. Кто-то ведётся на крутые характеристики, которые обещают китайцы «за дешево», кто-то покупает подобный девайс ребенку (поколения конца 90-х начала нулевых меня поймут, насколько круто было принести в то время реплику айфона), а кто-то просто берёт как «звонилку» с здоровым дисплеем и модным дизайном. И ведь не осудишь людей: устройства вполне себе выполняют свои функции и более того, их можно модифицировать, дабы довести их до ума!

image

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

Причём гайд применим и для планшетов: так уж вышло, что линейка чипсетов MediaTek для планшетов (MT8xx) имеет своих собратьев среди обычных 3G/4G чипсетов (MT65xx, MT67xx).

Нашим подопытным девайсом оказалась китайская реплика Huawei P20 Pro (как-то даже забавно звучит, китайская реплика Huawei) и является представителем смартфонов, описанных выше. Смартфон был выпущен в 2019 году и продавался на «Алике» под видом смартфона «1TB ROM 8GB RAM». Взял я его на известной онлайн-барахолке всего за 800 рублей!

Смартфон работает на Android 6.0, «подкрашенный» в 8.1 на ядре 3.10.72. И это очень хорошо — ведь кастомов на эту версию ядра очень много. Портировать мы будем crDroid — быстрый дистрибутив с кучей настроек, но наш выбор не ограничен только им: под эту версию ядра есть и ColorOS (Oppo), и MIUI (не рекомендую, тормоз), и EMUI, и даже закосы под OneUI/TouchWiz! Выбирать только вам!

Портирование прошивки


image

Нужно понимать, что нельзя просто взять и портировать любую прошивку на подобного китайца. Нет возможности даунгрейда (поскольку более старые версии Android работают на базе более старых ядер), и нет возможности апгрейда, если на этом же ядре не собрали новый Android под другое устройство. Суть вот в чем: порядочные производители, такие как ZTE, Huawei и Lenovo (хотя были жалобы, что «леново» кладёт мусор в исходники вместо драйверов), без каких-либо проблем публикуют исходный код ядер своих устройств. Таким образом, если на ZTE V815W (MT6572) в своё время были исходники, то энтузиасты собирали свежие версии системы на базе старого ядра, которые затем могли себе «протащить» владельцы хайскрнов и прочих бюджетников.

Но поскольку 6580 очень ходовой чипсет, то здесь у нас есть выбор аж из трех систем (при условии, что у вас 3.10.72): Android 5.1, Android 6, Android 7. Весьма неплохо, да? 6580 поддерживает даже Android 9, но на более свежих версиях ядра (скорее всего, MediaTek выпускали патчи, чтобы подтянуть нужные фишки для свежих версий системы).

В основном, портирование заключается в копировании врапперов железа для Android или очень условно — драйверов. Поскольку основная часть драйверов (дисплей, тачскрин, камеры, звук) слинкована с ядром, то для их работы достаточно лишь заменить zImage в boot.img, в то время как для работы вибромотора, звука, отрисовки графики и тому подобного, есть библиотеки в /lib/hw/, замена прошивки модема, перенос других различных либ «пока не заработает». :)

Сначала нам нужно заполучить имеющийся образ /system/. Это можно сделать несколькими вариантами:

1. Сдампить стоковую прошивку. Сделать readback во флэштуле, а затем вытащить system.img с помощью утилиты типа Wwr-MTK. Самый лучший вариант.

2. Скопировать системные файлы на флэшку из под adb. Тут все просто, «cp -rf /system/* /data/media/system/». Затем подключить девайс как MTP устройство и перенести все файлы на ПК. Осторожно, в таком случае теряются разрешения! Как один из вариантов — создать пустой образ, отформатировать его в ext4 и скопировать файлы с сохранением прав. Например так:

  • dd if=/dev/zero of=/data/media/system.img bs=1M count=1500 (где count — подставляем размер системного раздела)
  • mkfs.ext4 /data/media/system.img
  • mkdir /system2/
  • mount /data/media/system.img /system2/
  • cp -rf /system/* /system2/

3. Если есть root, то достаточно сделать лишь dd if=/dev/block/platform/mtk-msdc.000 (тут может быть и по другому, см ls /dev/block/platform/)/by-name/system of=/data/media/system.img. Это даст тот же самый образ, что и первый вариант.

Для получения дампа флэштулом, нам нужно загрузить любой скаттер от смартфона с таким же чипсетом (достаточно просто загуглить MT6580/MT6570 scatter), и во вкладке readback вычитать раздел BOOT1 (его размер обычно 2мб) и USER (размер около 8гб, реально полезные из них первые 2). Добавляем элементы дампа, жмем кнопку readback и подключаем выключенный смартфон. Готово! Разделить дамп на прошивку поможет Wwr-MTK: там всё просто, загружаем обе части дампа, программа вычитает GPT, разделит прошивку и создаст scatter! Если вы с чем-то накосячите, то сможете вернуть стоковую прошивку обратно, как ни в чем не бывало!

image

Также нам понадобится boot.img. Можно поступить почти также, как и с system.img — либо полный дамп (предпочтительнее), либо с рутом сдампить раздел в /dev/block/ в boot.img. Теперь нам необходимо портировать TWRP. На 6580 это делается довольно просто, поскольку карта разделов почти идентичная во многих устройствах. Качаем, например, вот этот recovery. Берем AndImgTool (или готовую кухню типа MTKImgTool) и распаковываем образ рекавери и boot.img, подменяем ядро (т.е zImage) из стока в портируемый рекавери, и собираем TWRP обратно.

image

После этого прошиваем раздел recovery (точно также, с помощью dd, если есть рут или с помощью Wwr-MTK создать scatter на основе имеющегося дампа GPT и прошить флэш-тулом) нашим свежим TWRP и смотрим, что получилось. У меня вышло с первого раза! Если рекавери сыпет ошибками — смотрим таблицу разделов в обычной системе (mount) и правим fstab рекавери в соответствии с fstab в самой системе.

Рекавери у нас есть, а значит теперь можно переходить к портированию прошивки. Доноров заботливо собрали на 4pda. Но, когда я хотел превратить свой смартфон в iPhone с прошивкой в стиле iOS, я судорожно бегал по темам с устройствами на том же чипсете и искал хоть что-то в стиле айфона!

Теперь выбираем кастом. Я выбрал crDroid с Fly Nimbus 7.

Достаём из архива boot.img и точно также подменяем ядро, как и в случае с TWRP. Запаковываем и заменяем boot.img в архиве на новый.

Теперь идём в папку /lib/ стока и /lib/ кастома. Копируем папки hw/, egl/ из стока в кастом с заменой всех файлов. Так мы перенесли все необходимые «врапперы», это необходимый минимум для запуска системы.

В процессе тестирования прошивки у нас может не работать Bluetooth/GPS. Для их фикса переносим libbluetooth*.so, при необходимости переносим хардварные кодеки — libmtkomx*.so.

Если у вас слишком мелкие значки, значит вам необходимо скорректировать dpi. Для этого идём в build.prop и меняем параметр lcd_density на тот, что в стоке и отталкиваясь от него, подбираем под свой дисплей. Там же можно скорректировать имя устройства, кол-во симок и прочие радости.

Если в процессе портирования у вас не завелся модем (нет связи или ошибки сети) — то нужно вручную перенести его прошивку из /etc/ вместе с другими конфигами.

Теперь закидываем любым удобным способом архив с прошивкой на внутреннюю память устройства. Я делаю это через adb — заходим в recovery и устанавливаем zip. Делаем вайпы (wipe cache/wipe data) и перезагружаемся.

Android на MTK загружается в три этапа:

  1. Preloader (без изображения);
  2. lk, аналог u-boot (статичное изображение с логотипом девайса. Логотип хранится в разделе logo и его можно подменить), который загружает ядро;
  3. Сама система (анимация загрузки).

Если всё сделано верно, то система пойдет загружаться.

Если же нет, то см. FAQ:

  • Ребут на первой заставке (т. е. lk) — неподходящая версия системы, либо вы не заменили ядро на родное. Скорее всего, вы выбрали прошивку с версией ядра повыше.
  • Зависание на первой заставке — бывает, если не заменить ядро на родное.
  • Ребут в процессе бутанимации, но не доходя до adb — система не может стартовать, вероятнее всего из-за конфликта с врапперами. Смотрим внимательнее либы, которые переносили.
  • Зависание на анимации загрузки — либо не сделали вайпы, либо есть конфликт с врапперами.

Для точной диагностики можно принудительно включить adb в boot.img (файл: default.prop, secure = 0, debuggable = 1) и листать логи. Система будет циклично пытаться загрузиться и выплевывать исключения — смотрим на них внимательно.

image

Можно ли пользоваться?


image

Давайте ещё раз вспомним вводные: у нас был дефектный девайс без какой либо поддержки, про который производитель забыл сразу после его выпуска. Прошивку найти на конкретно этот экземпляр можно без каких-либо проблем, но ведь люди регулярно продолжают покупать подобные девайсы и в 2023!

image

Но сможет ли такой девайс оставаться приятным для использования ближайший год-два? Ведь сами по себе ТТХ не такие уж и плохие для очень дешевого смартфона: цена подобного устройства на вторичке в плёночках и с коробкой (а зачастую ещё и с комплектом): ~1.000 рублей. Огромный 6" IPS дисплей с довольно низким, но терпимым разрешением 480x960, 4х-ядерный чипсет MediaTek MT6580, Android 5.1-8.1 (как повезет), 1гб ОЗУ, 8гб ПЗУ, возможность расширения памяти за счёт MicroSD. Что можно найти в ДНСе за 2-3 тысячи рублей? Компактный «Дексп» или «Дигму» с тем же железом, но дисплей будет заметно хуже, точно также без какой-либо поддержки для моддеров.

Поскольку прошивка основана на базе CyanogenMod (да, это ещё не LineageOS), то здесь есть кучу дополнительных примочек и настроек, а дизайн устройства можно полностью кастомизировать. Например, перекрасить в стиль Android 4.2 или сделать а-ля Samsung. Trebuchet в качестве встроенного лаунчера почти ничего не кушает!

image

Использовать устройство мы будем без сервисов Google, «как есть». Оценим производительность в старых бенчмарках (новые не запустятся из-за тяжелого 3D теста).

image

Даже несмотря на древнее и откровенно бюджетное железо, смартфон прямо таки получает вторую жизнь — в мессенджерах и социальных сетях работает замечательно!

image

На 5.1 уже появилась возможность обновить WebView, так что проблем с совместимостью сайтов скорее всего не будет. Однако не стоит ожидать, что смартфон сможет легко переваривать тяжелые страницы. Впрочем, полистать новости на Хабре вполне можно. А вот с Пикабу сложнее! Изначально на устройстве установлен WebView на базе Blink 39 — «хром» аж из 2014 года! Девайс даже тянет HD видео 30 FPS. FHD здесь смотреть смысла нет.

image

image

image

Качество фотографий… нуу… так себе. Камера снимает в 5-10 FPS, однако возможно дело в том, что я не перенес фильтры. Суть вот в чем: под капотом Android, видимо, имеет некоторую концепцию «фильтров» для камеры — возможно какие-то микропрограммы для DSP или просто модули для встроенного модуля камеры, которые позволяют делать такие фишки, как софтовая стабилизация. Но и с завода она тут особо не блещет:

image

Синтетические бенчмарки показанные выше хороши, но если у нас есть огромный вытянутый дисплей, почему бы не попробовать поиграть во что-то? И тут Mali-400 оказывается заметно мощнее бюджетных Snapdragon'ов прошлых лет. Игрушки идут в целом неплохо. Например, Raging Thunder 2 2011 года выпуска выглядит здесь отлично и играется приятно:

image

Но ведь мобильная классика без доната — это не то, что может заинтересовать современного игрока в мобильные игры. Поэтому переносимся к более крутым игрушкам, например Dead Trigger:

image

image


А вот тут и вскрывается «косяк» устройства — тачскрин начинает регистрировать касание только если немного поводить по дисплею — иначе реакции нет! Из-за этого получаем неотзывчивое управление (это не инпут лаг, а именно особенность тачскрина) и играть почти невозможно. Но игра идет отлично.

А ещё выясняется, что тачскрин у нас всего-лишь на два касания! Вот так вот!

Одну из лучших гонок на мобилках — NFS Most Wanted, девайс тянет плавно с микрофризами в некоторых моментах.

image

Ну и разумеется, устройство неплохо выполняет функции звонилки. Тут китайцы за сим-лотком спрятали аж два слота под сим и одновременно под MicroSD! А она вам пригодится: 8гб ПЗУ — совсем немного на сегодняшний день.

А что ещё можно сделать с таким девайсом? Ну, как вариант сварганить сервер!

Заключение


Вероятно, мой читатель уже хочет написать в комментариях, мол «друг, чего ты так возишься с этими подделками» — но нет! Гайд применим не только к устройствам на MT6580, но и к более новым/старым устройствам на самых разных чипсетах. В конце концов, половина кастомных прошивок на новодельные устройства появляется благодаря портированию с одного устройства, на другое. «Пробег» кастома может составлять далеко не одно устройство!

Мои читатели на разных платформах спрашивали меня: а как мне оживить планшет на MT81xx, смартфон Highscreen из 2013 или относительно свеженький Xiaomi Redmi. Ну а решать, юзабелен ли такой гаджет в 2023 или нет только вам! Жду ваше мнение в комментариях.

Я регулярно пишу статьи о моддинге различных девайсов. Подписывайтесь на меня и TimeWeb Cloud, чтобы не пропускать еженедельный контент по различным девайсам! :)

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Понравился девайс?
47.14% Да, если урвать до 1.000 рублей в пленках и хорошем состоянии — неплохой гаджет66
52.86% Нет74
Проголосовали 140 пользователей. Воздержались 24 пользователя.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Сцена кастомов жива? Стоит ли ей жить?
85.63% Еще как жива! Конечно стоит, должна быть альтернатива стоковым прошивкам!149
14.37% Нет, мне итак всё нравится в современных смартфонах25
Проголосовали 174 пользователя. Воздержались 17 пользователей.
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
+62
Комментарии66

Публикации

Информация

Сайт
timeweb.cloud
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Timeweb Cloud