Показаны сообщения с ярлыком twrp. Показать все сообщения
Показаны сообщения с ярлыком twrp. Показать все сообщения

пятница, 26 мая 2017 г.

История одного recovery. На примере МТС Smart Race2 4G.

Не так давно я рассказывал вам о первом операторском смарфтоне с Android 7.0 (Nougat) на борту - МТС Smart Race2 4G, до полноценного обзора нового устройства руки по не дошли, но он обязательно появится на страницах этого ресурса в ближайшее время. Сегодня же я бы хотел поговорить о "кастомизации", а именно особенностях сборки кастомного recovery (TWRP) под этот аппарат. Пост ориентирован скорее не на конечных пользователей, которые используют возможности TWRP в повседневной жизни, а на разработчиков. Честно говоря, начиная собирать TWRP (естественно из исходников) для данного аппарата я и не предполагал, что придется столкнуться с какими-либо сложностями, т.к. по большому счету платформа Mediatek на базе которой построен гаджет, также как и чипсет MT6737M хорошо изучены и никаких потенциальных проблем со сборкой TWRP для подобных устройств никогда не возникало. Однако в случае с МТС Smart Race2 4G, именно из-за Android 7.0, пришлось столкнуться с определенными сложностями и этот пост - небольшое "руководство-размышление" об их решении.

Сразу скажу, что т.к. аппарат построен на базе Nougat, то собирать TWPR для него обязательно на базе исходников из ветки 7.1 OmniROM (можно конечно собрать android_bootable_recovery и в составе CyanogenMod / LineageOS), но опять же, "платформа" 7.1 обязательна. Почему? Если опустить аргумент об идеологической правильности подобного подхода, скажу, что на базе Marshmallow TWRP также прекрасно соберется, но при попытке запуска под его управлением любых стоковых бинарников, например, vold, logcat и т.п. вы неизбежно получите ошибку cannot locate symbol "__write_chk", т.к. все стоковые бинарники используются экспортируемую функцию __write_chk из libc, которой в Marshmallow просто нет. Таким образом собирая TWRP на исходниках от 6.0 вы автоматически собираете libc без __write_chk, что приведет к неработоспособности части бинарников собранных под Nougat внутри получившегося TWRP. Поэтому если вы часто собираете TWRP для различных устройств и еще не успели склонировать репозитарий того же OmniROM 7.1 - сейчас самое время сделать это, т.к. по всей видимости устройств с Nougat на Mediatek будет появляться все больше и вам рано или поздно придется это сделать.

Других особенностей, касающихся именно процесса сборки TWRP - вообщем-то нет, все штатно, также как и в случае с 6.0. Собранный у меня кастомный recovery отлично запустился на аппарате, но вот как раз тут и начались "приключения". Как известно, раздел userdata в Android N является шифрованным, т.к. объявлен в fstab'е как forceencrypt с хранением ключей шифрования в metadata. Вот как раз это и послужило началом всей истории. Загрузившись в только что собранный TWRP я обнаружил что он запрашивает пароль для дешифровки userdata и не монтирует его. При этом пароль в устройстве, т.е. ни PIN-код для разблокировки, либо загрузки Android, ни графический ключ не был явно задан.

Т.е. фактически TWRP по каким-то причинам не смог расшифровать раздел с помощью default_password. Включение отладочных средств TARGET_USES_LOGD и TWRP_INCLUDE_LOGCAT в BoardConfig.mk при сборке также не помогло установить причину проблемы. Вывод logcat и dmesg в этом плане был малоинформативен.

Конечно в данной ситуации можно было поступить проще (подобное решение можно увидеть в многочисленных сборках TWRP, в котором разработчикам было лень разбираться с шифрованием), например, просто разобрав boot и изменив forceencrypt на encryptable с последующим форматированием раздела userdata и потерей всех данных. Но это ведь не наш путь, т.к. в моем понимании у пользователя устанавливающего TWRP на аппарате уже есть какие-то данные и терять их из-за того что TWRP не может справиться с расшифровкой раздела, как минимум не хотелось бы. Другими словами, TWRP должен монтировать существующий на устройстве раздел userdata, все другие варианты (отключение шифрования и т.п.) являются "полумерами", к тому же еще и снижающими безопасность устройства.

Тогда я вспомнил, что начиная с определенной версии TWPR в нем появилась возможность использования стоковых бинарников vold с помощью включения TW_CRYPTO_USE_SYSTEM_VOLD в сборку, информация об этом есть в этом коммите - crypto: Use system's vold for decryption. Бегло изучив все что там говорится, а также проанализировав содержимое исходников в /bootable/recovery/crypto/vold_decrypt/ я включил этот флаг в BoardConfig.mk и пересобрал recovery. Т.е. теперь уже TWRP использовал бинарник vold находящийся в system ... Однако дешифрование раздела и его монтирование все равно не происходило, т.к. при сборке vold в стоковой прошивке разработчиками была включена проверка boot_mode. Что она из себя представляет?

Для лучшего понимания приведу следующий исходник:

int get_boot_mode(void)
{
  int fd;
  ssize_t s;
  char boot_mode[4] = {'0'};
  char boot_mode_sys_path[] = "/sys/class/BOOT/BOOT/boot/boot_mode";

  fd = open(boot_mode_sys_path, O_RDONLY | O_NOFOLLOW | O_CLOEXEC);
  if (fd < 0)
  {
    SLOGE("fail to open %s: %s", boot_mode_sys_path, strerror(errno));
    return 0;
  }

  s = read(fd, boot_mode, sizeof(boot_mode) - 1);
  close(fd);

  if(s <= 0)
  {
    SLOGE("could not read boot mode sys file: %s", strerror(errno));
    return 0;
  }

  boot_mode[s] = '\0';
  return atoi(boot_mode);
}

Здесь get_boot_mode возвращает текущий режим загрузки устройства, который она читает из /sys/class/BOOT/BOOT/boot/boot_mode . Так вот стоковый vold вызывает некий аналог этой get_boot_mode и если устройство загружено в режиме отличном от system, т.е. в recovery mode или в любом другом доступном режиме, то монтирование / дешифрование userdata невозможны в принципе. В логах вы увидите нечто вроде <5>fs_mgr: %s: bootmode(%d) is NOT normal mode, disable 'default encrytion', flag=(0x%x -> 0x%x)". Скачав и установив бесплатную demo версию IDA v6.95.160810 мы можем увидеть эту проверку самостоятельно:


Где в дальнейшем используются результаты этой проверки и как именно - разбираться досконально я не стал, однако, факт отключения default encryption в vold при загрузке в режиме recovery, естественно, нас не устраивал. Из этой сложившейся ситуации есть несколько выходов:

  • Непосредственный патч vold для обхода этой проверки.
  • Написание собственной библиотеки с размещением ее в LD_PRELOAD, которая перехватывала бы попытки обращения в цепочке open("/sys/class/BOOT/BOOT/boot/boot_mode") -> __read_chk -> close от любых приложений и всегда возвращала бы нужное значение (т.е. 0 = normal_mode).
  • Сборка vold из исходников Android N для MT6737M от Mediatek с корректировкой всех проверок в исходниках.

Любая из этих реализаций должна привести к успеху, поэтому какой именно воспользоваться - не имеет большого значения. Здесь главное не забыть, что собранный из исходников или модифицированный vold должен корректно загружаться из init.recovery.vold_decrypt.rc, например так:

service sys_vold /path_to_your_vold/vold \
        --blkid_context=u:r:blkid:s0 --blkid_untrusted_context=u:r:blkid_untrusted:s0 \
        --fsck_context=u:r:fsck:s0 --fsck_untrusted_context=u:r:fsck_untrusted:s0
    socket vold stream 0660 root mount
    socket cryptd stream 0660 root mount
    setenv PATH /system/bin
    setenv LD_LIBRARY_PATH /system/lib64:/system/lib
    disabled
    oneshot

Однако, даже решив эту проблему - мы не получим полноценного решения по дешифрованию userdata в TWRP, т.к. платформа использует еще и teei_daemon для поддержки шифрования. Изучить как он запускается и работает можно посмотрев внутрь init.microtrust.rc из boot'а. И наконец последний шаг на пути к успеху, это обеспечение корректного запуска и работы этого демона при дешифровании, "красивым" и правильным шагом здесь, на мой взгляд, является помещение его инициализации в соответствующий init.recovery.vold_decrypt.$(item).rc (разобраться с этим подробнее вам поможет /bootable/recovery/crypto/vold_decrypt/Android.mk).

В качестве результата проделанной работы я получил незаменимый опыт (что главное), а также полноценной работающий TWRP 3.1.1-0:


Как видно из фото - раздел userdata успешно расшифрован и примонтирован (Data succefully decrypted, new block device: '/dev/block/dm-0') created). Mission accomplished ;)

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

воскресенье, 18 сентября 2016 г.

Alcatel Idol 3 (4.7") 6039Y. TWRP Recovery. Прошивка.

В этом посте я расскажу вам о новой версии TWRP Recovery 3.0.2-0 для нашего аппарата, собранной мной недавно из исходников (основное отличие от предыдущих версий - полная поддержка Adopted Storage, т.е. карты памяти отформатированной как внутренняя память в Android 6.0.1, а также корректный backup и восстановление EFS), а также об универсальном способе прошивки этого recovery на любой Idol 3 4.7 6039Y. Под "любыми" здесь имеются ввиду даже те аппараты у которых версия прошивки старше чем 010 04 и на которых метод прошивки recovery через QFIL по каким-то причинам не срабатывает. Но для начала давайте попробуем собрать всю накопившуюся на данный момент информацию по Idol 3 воедино, т.к. постов было достаточно много и какие-то из них уже успели устареть, а какие-то актуальны и по сей день.

Подборка информации по Alcatel Idol 3 6039

  • Alcatel Idol 3 (OT-6039). Подборка материалов. - пожалуй самый первый пост от 25.05.2015, когда информация о нем только появилась в интернете. В принципе его можно было бы смело переместить "в архив", если бы не подборка полезных ссылок в нем с обзорами, видеообзорами, тестами и т.п. Так что если вы только присматриваетесь к этому аппарату, то бегло пробежаться по нему будет не лишним.
  • Alcatel Idol 3 (4.7") 6039Y. Взгляд со стороны. - первый взгяд на аппарат от меня. Пост написан когда аппарат уже появился у меня на руках и помимо общей обзорной информации включает в себя mini FAQ, некоторые вопросы из которого актуальны и сейчас. Вопрос "Как установить TWRP?" из этого FAQ уже потерял актуальность.
  • Alcatel Idol 3. Прошивка TWRP на версии ПО 010 04 и выше. - в посте рассказывается об особенностях прошивки 010 04, поясняется почему на ней невозможно прошить TWRP через fastboot, а также приводится альтернативный способ прошивки кастомного recovery через QFIL. В принципе этот метод актуален и до сих пор, но на некоторых (новых) аппаратах может не сработать.
  • Alcatel Idol 3 (4.7") 6039Y. Обновление 01004. - еще один пост, который рассказывает об особенностях релиза прошивки 010 04.
  • Alcatel Idol 3. Как создать backup NVRAM при помощи QPST? - создаем backup собственного NVRAM (nvram + efs) с помощью QPST. Актуально и по сей день, желающие могут сделать его на всякий случай.
  • Alcatel Idol 3 (4.7") 6039Y. Переразметка внутренней памяти. - можно прочитать для общего ознакомления. В настоящий момент потерял актуальность, т.к. существует zip для прошивки в TWRP для автоматической переразметки, а с выходом Android 6.0 и обновлением через MU (Mobile Upgrade) память переразмечается автоматически.
  • Idol 3. Firmware Checker. - утилита, которая позволяет определить физический объем памяти в вашем аппарате, т.е. точно определить 8-ми или 16-ти гигабайтная версия у вас.
  • Alcatel Idol 3 (4.7") 6039Y. Android 6.0.1 Marshmallow. Русская версия. - неофициальный релиз Android M сделанный на основе американской версии прошивки, с выходом официального русского релиза потерял актуальность.
  • Alcatel Idol 3 (4.7") 6039Y. Android 6.0.1 Marshmallow. Официальный релиз. - официальный релиз Android 6.0.1 для России. В посте также присутствует официальный zip-архив с обновлением, а также рассказано о способах его установки через штатный recovery и встроенное приложение обновления. Данная информация актуальна и более того, нигде до этого не публиковалась. Так что рекомендуется к прочтению.
  • Alcatel Idol 3 (4.7") 6039Y. Как получить root на Android 6.0.1? - пост в котором приводится решение проблемы с bootloop'ом при попытке прошить SuperSU и получить root на Android M. Так что если у вас 6.0.1 и вы хотите получить root, также обязательно ознакомьтесь с ним.
Ну вот, если в плане истории - как бы и все ;) Кому лень все это читать - вкратце расскажу как развивался аппарат и работа с ним:

Изначально аппарат появился в продаже с прошивкой 010 01, с ней не было никаких проблем в плане кастомизации, работали все команды fastboot'а, поэтому через какое-то время разработчиками были собраны кастомное recovery (TWRP), получен root и началась работа над кастомными прошивками. Все было хорошо вплоть до версии 010 04, в которой производитель просто вырезал команды fastboot'а из aboot (emmc_appsboot) (точно также как это было сделано в самой первой прошивке для Idol 4), в результате чего использовать fastboot для загрузки кастомного recovery стало нельзя, т.к. в aboot'е просто отсутствовала команда прошивки разделов. После чего petrov.0 на xda-developers собрал набор образов системных разделов (sbl1, rpm, tz, hyp, aboot) от предыдущей версии прошивки для возвращения команд fastboot в аппарат. Прошивалось все это через QFIL. Ну а я тем временем решил пойти по простому пути, просто сделав набор для прошивки TWRP через QFIL (все-таки трогать данные разделы не рекомендуется). Как оказалось не зря, т.к. нашлись аппараты с другим OEM PK Hash на которых ни способ восстановления fastboot, на способ прошивки recovery через QFIL не работали (универсальный способ который будет описан в этом посте - должен работать на любых аппаратах). Параллельно со всем этим появилась информация о том, что часть аппаратов была выпущена с чипом на 8 Gb (как и указано в спецификациях), а часть пошла в продажу с 16 Gb'ным чипом. Часть памяти в этом разделе была просто "скрыта" в неиспользуемом разделе userdatabak. Так и началась тема с "переразметкой". Изначально все это делалось вручную с помощью gdisk ... затем появился zip для автоматической переразметки, использующий консольный gdisk - sgdisk. Но оказалось что у части пользователей которые попытались воспользоваться скриптом для переразметки на 8 Gb'ных аппаратах "слетал" раздел userdata (что неудивительно) и восстановить аппарат после такой "переразметки" можно было только с помощью MU. Затем появилась вторая версия скрипта, в которой уже появилась проверка фактического размера eMMC Flash, то прошивка его на 8 Gb аппаратах не приводила к необходимости полной перепрошивки, скрипт автоматически определял фактический объем установленной памяти. Параллельно с этим я разработал свой Idol 3 Firmware Checker, позволяющий пользователям проверить сколько же памяти в их аппарате на самом деле простым запуском приложения ... Так и прошел год ... ) Ну да ладно, наверное все это читать утомительно и история мало кому интересна. Поэтому перейдем к главному.

TWRP Recovery 3.0.2-0-decker-1 для Idol 3 6039

Скачать последнюю версию всегда можно здесь: recovery-3.0.2-0-decker.img

Краткая история изменений:

  • Поддержка F2FS.
  • Корректное время в TWRP.
  • 24-х часовой формат времени и часовой пояс UTC+3 по-умолчанию.
  • Отсутствует SuperSU, чтобы при выходе из Recovery кто-нибудь случайно не сделал свайп для установки (особенно актуально для пользователей Android 6.0).
  • Отсутствует таймаут выключения экрана при нахождении в TWRP.
  • Возможность Backup'а EFS (разделы modemst1 и modemst2).
  • Поддержка ADB и MTP в TWRP.
  • Ядро от Android 6.0.1 (естественно, что TWRP будет работать вне зависимости от того какая ОС у вас установлена).
  • Полная поддержка Adopted Storage (т.е. SD карта отформатированная как внутренняя память будет видеться в TWRP и на ПК через MTP) [17.09.2016]
  • Исправлена ошибка "Failed to unmount '/system' (Device or resource busy)" после создания backup'а (ошибка проявлялась на предыдущих сборках) [17.09.2016]
  • Раздел Firmware (радиомодуль) добавлен к списку разделов, доступных для backup'а. [17.09.2016]
  • Очередной fix. TWRP теперь полностью построен на базе ветки android-7.0 и включает в себя все последние исправления, включая commit, исправляющий backup подразделов, баг, из-за которого восстановление EFS приводило к невозможности старта устройства. [18.09.2016]

Варианты установки

  • Через fastboot на версиях прошивки до 010 04.
  • Через QFIL на тех аппаратах где это возможно.
  • Через Sahara & Firehose Test (Alcatel Flasher) на любых аппаратах (несколько инструкций на английском и французском)

Как прошить TWRP через Sahara & Firehose Test (Alcatel Flasher)?

1. Переходим в на страницу приложения - Sahara & Firehose Test и внимательно читаем всю информацию, т.е. что это такое, для чего это нужно и т.п., чтобы впоследствии у вас не возникало лишних вопросов. После чего скачиваем архив с приложением и распаковываем его в отдельную папку.

2. Устанавливаем на ПК драйвера Alcatel, если они у вас еще не установлены. Самый простой способ сделать это - это установить утилиту Mobile Upgrade Q отсюда. Она автоматически установит все необходимые драйвера.

3. Переводим свой телефон в Download Mode. Для перевода телефона в режим Download Mode подключаем выключенный телефон к ПК и зажимаем на нем: Громкость Вверх + Громкость Вниз + Кнопка включения питания. Обязательно зажимать их при подключенном к ПК USB кабеле (!). После появления картинки как на скриншоте, нажмите Громкость Вверх для перехода в Download Mode. Если вы подключили к ПК включенный телефон, последовательность действий та же, просто держите нажатые кнопки до тех пор, пока телефон не перезагрузится. Вплоть до появления этой картинки. Далее по инструкции выше.

4. Скачиваем образ TWRP отсюда - recovery-3.0.2-0-decker.img .
5. Запускаем Sahara & Firehose Test:


6. Выбираем вашу модель телефона (1), в нашем случае - это Alcatel Idol 3 4.7" (OT-6039).
7. Нажимаем в программе кнопку Detect (2), программа должна найти список всех COM-портов в системе. Выбираем COM-порт (3) с названием Qualcomm HS-USB QDLoader 9008 (у вас он может называться чуть по-другому, в зависимости от версии драйвера установленного в системе, важно выбрать тот COM-порт, который содержит в названии 9008).
8. Нажимаем кнопку NPRG (4) для загрузки в телефон Firehose Programmer'а. Если все прошло успешно, то в окне лога (5) вы увидите что-то вроде:
18.09.2016 2:43:52: Start Download NPRG ....
18.09.2016 2:43:52: offset[0],len[52]
...
18.09.2016 2:43:52: offset[102400],len[4096]
18.09.2016 2:43:52: offset[106496],len[3044]
18.09.2016 2:43:52: SAHARA_END_IMAGE_TX_ID received

0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  *................*

18.09.2016 2:43:53: Send done command

0000: 06 00 00 00 0C 00 00 00 00 00 00 00              *............    *
9. Нажимаем кнопку Get GPT (6). В результате мы должны увидеть таблицу разделов (7). Если таблица GPT заполнилась, дальше уже можно выполнять другие действия с телефоном.
10. Теперь нам необходимо проверить корректно ли у нас работает приложение, для этого создадим backup собственного раздела recovery (сделать это обязательно - т.к. если по каким-то причинам у вас не создастся backup, т.е. некорректно пройдет чтение данных из аппарата, то использовать запись настоятельно не рекомендуется, верно и обратное, если backup у вас успешно считался, то можно смело записывать новый раздел в аппарат). В таблице разделов (7) ставим галочку напротив раздела recovery и выбираем имя файла (по-умолчанию recovery.img) куда будет сохранен backup. Запускаем создание Backup'а нажав на кнопку (9) Read. Если backup создан успешно в файле recovery.img будет сохранен образ вашего текущего раздела recovery (размер файла для Idol 3 должен быть около 32 Mb).
11. Если предыдущий шаг завершился успешно, то можно прошивать TWRP. Для этого указываем в (10) имя файла с образом TWRP recovery, т.е. recovery-3.0.2-0-decker.img и нажимаем кнопку (11) Write.
12. На экране появится запрос подтверждения:


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


Обратите внимание, после окончания процесса прошивки телефон так и останется в Download Mode, автоматической перезагрузки не происходит (а зачем? мало ли вы захотите совершить еще какие-нибудь операции с телефоном, например считать информацию (8) с помощью кнопки Info).

Поэтому после завершения прошивки TWRP вам необходимо перезагрузить его вручную. Нажимаем и удерживаем кнопку Громкость Вверх и зажимаем (т.е. нажимаем и удерживаем) кнопку Включения Питания. Телефон перезагрузится, после появления заставки Alcatel кнопку включения питания можно отпустить, но кнопку Громкость+ мы продолжаем удерживать вплоть до появления заставки TWRP. Когда она появится можно запустить TWRP. Поздравляю, вы успешно прошили и загрузились в TWRP.

p.s. Любые вопросы, предложения, пожелания, а также мысли по теме вы можете оставлять в комментариях, также стараемся не забывать про поддержку проекта, без которой было бы невозможным написание этого поста и создание утилиты для прошивки.

Внимание! Материалы приведенные в данной статье размещены в ознакомительных целях. Все действия описанные в данной статье вы осуществляете на свой страх и риск! Автор(ы) статьи не несут ответственности за вышедшее из строя оборудование, в результате ошибочных действий или неверного понимания вами смысла изложенного в ней материала, а также в силу любых прямых и косвенных причин, которые потенциально могут привести к неработоспособности вашего устройства или любым другим проблемам с ним. Если вы не уверены в своих силах, сомневаетесь и т.п. - не выполняйте ничего из вышеописанного. Используя материалы из этой статьи вы соглашаетесь с тем, что ответственность за ваши действия несете вы и только вы.

воскресенье, 11 сентября 2016 г.

Alcatel Idol 4 6055K. TWRP Recovery.

В июне этого года я рассказывал вам об одном из флагманов Alcatel - Idol 4 6055K, владельцем которого я являюсь. Если кто-то не читает мой блог постоянно или по каким-то причинам пропустил этот обзор, то вот этот пост - Alcatel Idol 4 6055K. Первое знакомство и краткий обзор. Говорить об этом аппарате, перечислять достоинства и недостатки можно вообщем-то долго, т.к. сколько людей, столько и мнений. Если вы еще не успели составить о нем собственное представление, то достаточно посмотреть пару обзоров, посетить соответствующие ветки обсуждения на различных мобильных форумах и более-менее понять что к чему. Сегодня речь все равно пойдет не об этом ... мы попытаемся заглянуть на "темную сторону силы", а именно рассмотреть как обстоят дела с моддингом этого гаджета, а именно кастомными прошивками, recovery и root'ом. Тем более сегодня как раз есть повод для такого исследования, т.к. мне (наверное первому в мире ;) удалось собрать под него рабочую версию TWRP.

Если до того как вы наткнулись на этот пост вы уже пробовали искать что-то подобное на форумах, например xda-developers и др., то наверняка заметили что вопросов по Idol 4 на данный момент больше чем ответов:


Никому до сих пор так и не удалось получить root на него, не говоря уже о сборке кастомных recovery или прошивок. Несмотря на то MSM8952 на котором построен Idol 4 достаточно распространенный чипсет и аппарат уже успел получить широкое распространение - результата все равно нет. Во-первых это связано с тем что в релизных прошивках аппарата заблокирован bootloader. Более того, даже не смотря на все присутствующие опции разблокировать его штатным образом нельзя (на XDA даже кто-то из США писал в support Alcatel'я, в стиле, прошу выслать инструкцию по разблокировке bootloader'а на Idol 4 для создания кастомных прошивок и т.д. и т.п. - support ответил, что к сожалению на территории США данная возможность не поддерживается и они ничем не могут помочь) ... хотя бы потому что aboot (emmc_appsboot) в релизных прошивках для Idol 4 собран без поддержки команды fastboot oem unlock. Т.е. режим fastboot'а в нем конечно же есть, но aboot в нем собран с флагом DISABLE_FASTBOOT_CMDS , т.е. всего вот этого удовольствия:

#ifndef DISABLE_FASTBOOT_CMDS
                      /* Register the following commands only for non-user builds */
                      {"flash:", cmd_flash},
                      {"erase:", cmd_erase},
                      {"boot", cmd_boot},
                      {"continue", cmd_continue},
                      {"reboot", cmd_reboot},
                      {"reboot-bootloader", cmd_reboot_bootloader},
                      {"oem unlock", cmd_oem_unlock},
                      {"oem unlock-go", cmd_oem_unlock_go},
                      {"oem lock", cmd_oem_lock},
                      {"oem verified", cmd_oem_verified},
                      {"oem device-info", cmd_oem_devinfo},
                      {"preflash", cmd_preflash},
                      {"oem enable-charger-screen", cmd_oem_enable_charger_screen},
                      {"oem disable-charger-screen", cmd_oem_disable_charger_screen},
                      {"oem select-display-panel", cmd_oem_select_display_panel},
#if UNITTEST_FW_SUPPORT
                      {"oem run-tests", cmd_oem_runtests},
#endif

в нем попросту нет. Т.е. из fastboot нельзя прошивать разделы, стирать их, загружать свой образ boot'а, разблокировать bootloader и т.п., т.к. всех этих команд просто нет. Во-вторых, обычно большинство пользователей на новых девайсах получает root-права с помощью KingRoot и аналогичных приложений (ну а где есть root доступ - понятно что есть доступ ко всему и на основе имеющегося ядра аппарата можно довольно быстро собрать какой-нибудь кастомный recovery, тот же TWRP) ... с Idol 4 этот способ тоже не проходит, т.к. даже самая первая версия прошивки получила последние обновления безопасности Android и в ней фактически отсутствуют все те уязвимости за счет которых KingRoot получает root права. С одной стороны это конечно хорошо, т.к. чем меньше уязвимостей в аппарате - тем он лучше, надежнее, и защищеннее. С другой - мы получили "полностью закрытый аппарат" и соответственно все пути для моддинга в нем, казалось бы, обрезаны.

Однако, если задуматься ... ведь тот же самый Mobile Upgrade успешно прошивает гаджет, т.е. фактически заливает в него все разделы, включая boot, recovery, system и т.п. Однако как принято считать подобного рода утилиты работают "на самом низком уровне" (чья-то цитата из диалогов на одном из форумов) и у пользователей вряд-ли получится пойти этим путем. Именно поэтому где-то с месяц назад я вплотную стал заниматься изучением протоколов Sahara и Firehose чтобы хотя бы немного приблизиться к пониманию как все это работает. Результатом стал этот пост - Sahara & Firehose Test. Изучаем методику работы с Qualcomm-аппаратами. и утилита Sahara & Firehose Test, разработкой которой я и занимался в последнее время (правда тут надо отметить что текущий public-релиз не поддерживает работу с Idol 4, т.к. фактически за месяц с выпуска первого билда никто не проявил к ней никакого интереса, а следовательно "продолжение" я делал исключительно для себя).

Итогом практически месячной работы стало то, что я все-таки смог слить со своего Idol 4 образы boot и recovery и благодаря этому смог заняться компиляцией TWRP.

Что из этого получилось в конечном итоге вы можете посмотреть в следующем видео:


Скажу честно, что после получения образов разделов boot и recovery с аппарата сборка рабочего образа TWRP на базе исходников OmniROM и CM13 заняла в общей сложности несколько суток. Естественно, что можно было просто взять имеющийся zImage ядра и портировать TWRP с другого аппарата на таком же чипсете. Именно так я и сделал изначально. Но в портированном recovery не работали множество фукций, например, не дешифровался раздел /userdata, не работало монтирование флешки, не распознавался adopted storage (флешка отформатированная во внутреннюю память) и т.п. Как сказал мне мой знакомый ruslan_3_ - якобы это нормально, т.к. в свое время он и еще несколько человек занимались проблемой создания TWRP для Xiaomi Mi5 ... и они столкнулись при разработке с той же проблемой. В результате они пошли более простым путем и отключили принудительное шифрование раздела userdata пересобрав boot. В принципе здесь можно было бы пойти тем же путем. Но ... лично я не люблю незаконченных решений. Более того я не раз давал себе слово не экспериментировать с рабочим телефоном, хотя бы потому что полное удаление всех данных или перепрошивка - это всегда болезненно (в том плане, что на аппарате который уже "настроен под себя" удаление раздела userdata неизбежно ведет к тому что все надо переустанавливать и т.п., а это время), а в случае замены в boot'е флага forceencrypt=footer на encryptable=footer для /dev/block/bootdevice/by-name/userdata неизбежно привело бы к форматированию этого раздела, т.к. расшифровать уже имеющиеся на нем данные было бы нельзя.

Поэтому я решил что это не мой путь и решил все-таки понять, что такого сложного в дешифровке данных раздела data на Android M. В этом мне помогли несколько ссылок, какие-т о в большей степени, какие-то в меньшей, однако все это пришлось изучить (и при этом не факт что досконально понять ;)

А также следующие топики и проекты на Git'е:

Для начала нужно было понять какой же тип шифрования используется в Idol 4. Для того чтобы это понять необходимо было получить последние 16384 байт раздела userdata, а именно тот самый footer. Вот он:


Даже без знания структуры footer'а, хотя ее описание тоже при желании можно найти, невооруженным взглядом видно, что здесь используется аппаратное шифрование FDE (full-disk-encryption), "тип шифра" - aes-xts essiv:sha256 . Может я немного путаюсь с терминологией, т.к. пишу этот пост уже под утро в воскресенье, после бессонной ночи, ну да знающие люди поймут про что, а те кто смотрит на все это впервые - поверят на слово. Так вот, все образы TWRP которые удалось найти от других аппаратов на схожей платформе были собраны без поддержки этого типа шифрования. Поэтому даже при успешном портировании на Idol 4 расшифровать такой раздел ну никак не могли. Для компиляции TWRP с поддержкой аппаратного шифрования, как можно вычитать из интернета или посмотрев device tree других устройств на Git'е используются два флага (всего два флага, Карл ... ;) Это:

# Encryption
TARGET_HW_DISK_ENCRYPTION := true
TW_INCLUDE_CRYPTO := true

Однако после сборки (в процессе которой я решил еще ряд проблем, например то что при синхронизации с последней версией репозитария OmniROM TWRP просто не собирался, прямо как тут) я столкнулся с проблемой, которую описал здесь. Т.е. TWRP у меня уже знал про аппаратное шифрование, но при попытке инициализации keymaster'а просто зависал. Вернее зависал UI, т.е. как только в логе мы видели:

Attempting to decrypt data partition via command line.
crypt_ftr->fs_size = 21589423
Using scrypt with keymaster for cryptfs KDF
Invalid hex string
Failed to convert passwd from hex, using passwd instead
keymaster module name is Keymaster QTI HAL
keymaster version is 256
Found keymaster1 module, using keymaster1 API.

Больше ничего не происходило. На решение этой проблемы ушли примерно сутки и большей частью здесь мне помогли труды пользователя steadfasterX. Он столкнулся примерно с такой же проблемой при попытке компиляции TWRP для LG G4 H815 - TWRP for h815 2.8.7.0 and 2.8.6.1 can NOT decrypt LG G4 H815. Как он сказал мне в личной беседе, ему помогли разобраться на IRC-канале TWRP, собственно он мне дал ссылку на мануал к подготовке к общению в IRC ... Однако мне "повезло" и до этого не дошло, т.к. большую часть времени помог сэкономить анализ вот этого дерева android_device_lge_h815 (именно за эти труды, пользуясь случаем и хочется выразить отдельную благодарность steadfasterX'у).

Оказалось что у меня не стартовал сервис qseecomd ... правда причина была не в отсутствии symlink'а в bootdevice, а в другом, но все же. Я много почерпнул из этого дерева и через сутки добился желаемого результата. В итоге теперь моя сборка TWRP для Idol 4 6055K умеет:

  • Корректно монтировать раздел userdata зашифрованный aes-xts essiv:sha256. Естественно что пользователю необходимо указать свой пароль (имеется ввиду тот, который используется для экрана блокировки и для загрузки Android ... с графическим ключом я правда не пробовал, т.к. у меня на экране блокировки указан именно пароль, но думаю что с ним все тоже будет работать).
  • Корректно монтировать SD-карту, отформатированную как внутреннюю память (adopted storage), думаю из видео - это видно.
  • Корректно выставлять текущее время в recovery (да, да, мы живем в настоящем времени, а не в epoch0 ;)

На все про все (имеются ввиду суммарно все работы, как по созданию флешера Sahara & Firehose Test, так и по сборке TWRP) у меня ушло чуть больше месяца. А на "допиливание" TWRP и попытки разобраться что к чему вечер пятницы и практически целые сутки в субботу (семья в выходной меня не видела, а видела только мою спину за компьютером). Но ... поставленная цель достигнута, результат получен. А это всегда приятно.

Все свои наработки, которые касаются TWRP к Idol 4, в частности дерево девайса я выложил в Git'е - DeckerSU/idol4_6055k_device_tree, заоодно и немного научился с ним работать. Скажем так на базовом уровне, как сделать push, pull и checkout ;) Т.к. до этого, к моему большому сожалению, работать с чем-то типа GitHub'а не приходилось, т.к. не было необходимости. Это мой небольшой вклад в сообщество.

Готового же решения в виде бинарника recovery_twrp_3.0.2-0-decker.img для Idol 4 и "мурзилки" (пошаговой инструкции) как его прошить - я решил пока не выкладывать. Если тема вам интересна на данный момент вы можете:

  • Попробовать самостоятельно собрать TWRP из выложенного мной дерева на базе репозитария OmniROM (repo init -u https://github.com/omnirom/android.git -b android-6/0), благо мануалов по сборке TWRP recovery для платформы Qualcomm из исходников в интернете предостаточно. Плюс возможность чему-то научиться - это всегда хорошо.
  • Следить за развитием проекта Sahara & Firehose Test, а возможно даже поддержать его и помочь ему вырасти до полноценного флешера для девайсов на базе Qualcomm, ну или как альтернатива - найти свой способ заливки recovery в аппарат.

Ну а у меня на этом наверное всё ... сейчас выложу еще немного скриншотов / фото того что получилось и с чувством глубокого морального удовлетворения завалюсь спать, все-таки 06:55 утра на часах ;)


 p.s. Кстати, интересный вопрос, который наверное зададут многие ... а куда Backup'иться если SD-карта используется как adopted storage, т.е. отфоматирована как внутренняя память? В этом случае вам поможет USB-OTG и обычная флешка:


К слову ... если вы прочитали эту статью выше, то наверное поняли, что если microSD у вас используется как adopted storage, то ключ шифрования от microSD карты хранится в /data/misc/vold , у меня это выглядело так:


Таким образом, если вставить эту флешку в ПК с Linux'ом и сделать что-то вроде:

dmsetup create crypt1 --table "0 `blockdev --getsize /dev/sdb2` crypt aes-cbc-essiv:sha256 <Put the 16-byte hex key here> 0 /dev/sdb2 0"

Где /dev/sdb2 - это непосредственно флешка. То потом можно будет ее примонтировать, как обычный ext4 раздел: mount -t ext4 /dev/mapper/crypt1 /mnt/1/ , правда я пока не пробовал. Но думаю что получится, т.к. ключ-то есть ;)

Таким образом если мы сделали backup раздела userdata, то соответственно и backup ключей от adopted storage (/data/misc/vold/expand_%s.key) и если вдруг телефон у нас по каким-то причинам канет в лету, то мы легко сможем расшифровать содержимое флешки при наличии ключа.

p.p.s. Кстати, выяснил один интересный момент. Итак. если у вас был установлен тип блокировки именно пароль, а не PIN - то раздел userdata шифруется аппаратно с вашим паролем. Если в настройках безопасности вы указали именно PIN - то userdata будет зашифрован с default_password. Т.е. при старте TWRP он примонтируется без запроса PIN'а. Вот такая вот хитрая безопасность.

Обновлено 11.09.2016 07:51 (MSK)

(никак не улягусь) ... Примечательный факт. Если у кого-то из вас был Idol 3 6039Y, то вы наверняка помните что при создании Backup'а в TWRP аппарат имел свойство нагреваться до запредельной температура, да и даже в состоянии "простоя", просто когда запущен TWRP аппарат почему-то ощутимо грелся. В случае же с Idol 4 такого нет в принципе. Т.е. при "простое" в TWRP температура - 28 градусов (если верить показаниям самого TWRP), а в процессе практически 15-минутного backup'а всех разделов на USB флешку подключенную через OTG температура поднялась только до 33 градусов. При этом наощупь аппарат ни нагрелся даже ни на один градус. Т.е. несмотря на то что процесс создания полного Backup'а довольно ресурсоемкий - на температуре гаджета это никак не отражается (вот прямо написал и еще раз порадовался за свой Idol 4 ;)

Ну и конечно же пару слов про root. С установленным TWRP получить его по описанному здесь методу, т.е. с установкой SuperSU как systemless не составляет никаких проблем. Вот результаты:


Кстати, ядро нашего аппарата не поддерживает модификацию TTL. Т.е. использовать на нем программы типа TTL Editor и т.п. добавляющие правило для фиксации TTL в iptables не получится, т.к. /proc/net/ip_tables_targets не содержит TTL.

Ну вот теперь, когда все увидели первый в мире Idol 4 6055K с полученным root'ом (ну за исключением разве что девелоперских версий, т.е. аппаратов разработчиков ПО в TCL) и узнали что "халявного тетеринга" с Idol 4 не получится без пересборки ядра, можно действительно отправляться отдыхать ;) Stay tuned, впереди еще много интересного.

воскресенье, 21 февраля 2016 г.

МТС Smart Surf 4G. TWRP, root, прошивки. Часть 2.

Буквально вчера я постарался рассказать вам о новом LTE-аппарате от МТС - МТС Smart Surf 4G в своем обзоре, кстати, кто еще не читал, приглашаю ознакомиться. И вот сегодня мы продолжаем тему различных "полезностей". На этот раз мы коснемся возможности установки кастомного recovery, в данном случае это будет TWRP 3.0.0-0, рассмотрим вопросы получения root-прав, а также немного поговорим о прошивках для данного аппарата и разметки памяти в нем.

Судя по сообщениям на многочисленных форумах, некоторым пользователям удалось получить root-права с помошью одной из версий KingRoot, использующей уязвимости в операционной системе Android для получения root-прав. Что касается меня, то я этот способ не очень люблю, во-первых потому что KingRoot устанавливает не бинарник su в систему, а свой собственный ku, во-вторых потому что заранее неизвестно что именно / как и т.п. выполняет это приложение в процессе получения root, ну а в-третьих, все равно большинство пользователей предпочитает потом удалить KingRoot с помощью SuperSu-Me и установить SuperSU для контроля доступа приложений к root. Так зачем спрашивается "городить огород", когда можно избежать всех трех проблем сразу, не ставить неизвестное китайское приложение, использующее exploit'ы, чтобы не удалять его потом, а просто использовать zip для установки SuperSU и root-прав через кастомный recovery?


Вот как выглядит установленный TWRP 3.0.0-0 на МТС Smart Surf 4G. Отличительными особенностями данной сборки (помимо всех нововведений в 3.0.0-0) являются:

  • Автоматический выбор временной зоны SAUST-3;SAUDT, т.е. (UTC+3) Moscow, Baghdad.
  • Корректное монтирование внешней и внутренней памяти. Внутренняя память устройства (виртуальная SD-карта) монтируется как SDCard (internal_sd), внешняя, как Micro SDCard (external_sd).
  • Доступ у устройству по MTP сразу после загрузки TWRP, т.е. при подключении смартфона с загруженным TWRP к ПК, в "Мой компьютер" у вас видится и внешняя, и внутренняя память устройства:

Устанавливается TWRP штатным образом с использованием SP Flash Tool. В комплект с архивом с TWRP входят сам прошивальщик, необходимые драйвера MTK, образ TWRP Recovery, образ оригинального recovery (для возврата к заводскому recovery), а также scatter файл учитывающий разметку аппарата и наличие внутренней SD (почему я отдельно отметил этот момент - т.к. на некоторых сайтах появились первые версии прошивки для МТС Smart Surf 4G без внутренней SD, а в продажу аппарат пошел уже с прошивкой, в которой был выделен физический раздел intsd под виртуальную SD-карту).

Скачать TWRP для МТС Smart Surf 4G можно здесь:
(пароль на архив: decker.su)

Процесс установки стандартный и ничем не отличается от других MTK устройств. Инструкцию в картинках вы можете посмотреть здесь, процесс фактически ничем не отличается, единственное что архив с образом TWRP вы берете из этого поста. Ну а если вкратце, то:

  1. Скачиваем архив !twrp_root_mts_smart_surf_4g.rar по ссылке выше и распаковываем его в отдельную папку на рабочем столе или, что лучше, на диске D:\
  2. Если вы уже когда-нибудь прошивали устройства на базе Mediatek и драйвера MTK у вас установлены, можно сразу переходить к следующему пункту. Если нет, распаковываем архив mtk_xp_vista_7_8_x32_x64.zip в отдельную папку, открываем диспетчер устройств на ПК и подключаем выключенный смартфон (без батареи) к ПК. В диспетчере устройств у вас появится новое неопознанное устройство MTxxxx Preloader. Отлавливаем момент когда оно появляется, кликаем по нему правой кнопкой мыши и устанавливаем драйвера Mediatek, указав в качестве источника драйверов папку с распакованных архивом mtk_xp_vista_7_8_x32_x64.zip. После того как драйвера установлены устройство MTxxxx Preloader должно пропасть, а в разделе COM и LPT порты должно появиться устройство Preloader USB VCOM Port (кому сложно воспринимать все это на словах, посмотрите картинки в инструкции).
  3. Далее запускаем SP Flash Tool, выбираем Scatter файл - MT6735M_Android_scatter.txt и в качестве раздела recovery указываем путь к файлу с TWRP из архива - twrp_recovery_ssurf4g_232218.img. После чего нажимаем кнопку Download.
  4. Вновь подключаем выключенный телефон (без батареи) к ПК и дожидаемся окончания процесса прошивки.
  5. Поздравляем, TWRP прошит. 
Теперь отключаем телефон от ПК, вставляем батарею и включаем его удерживая кнопку Громкость Вверх до появления такого меню:


Здесь с помощью кнопки "Громкость Вверх" перемещаем стрелочку на пункт Recovery Mode и нажимаем кнопку "Громкость Вниз" для входа в TWRP. Обратите внимание, сразу же после прошивки, еще до загрузки Android вы должны хотя бы один раз зайти в TWRP, если вы дадите ОС телефона загрузиться, то TWRP будет автоматически заменен на стоковый recovery. Не забываем про это, первый вход в TWRP осуществляем сразу после прошивки, еще до загрузки устройства.

После того как TWRP у нас прошит - первым делом делаем резервную копию прошивки вашего МТС Smart Surf 4G на внешнюю SD-карту через меню Backup в TWRP, это позволит вам избежать многих проблем в будущем и не просить прошивку / Backup и т.п. у других пользователей, если вдруг вы что-то не так натворите с root'ом.

После того как Backup сделан, можно переходить к установке SuperSU и получению root. Делается это крайне просто - закидываете на microSD любым удобным для вас способом файл BETA-SuperSU-v2.52.zip из архива с TWRP, загружаетесь в TWRP и выбираете опцию Install ZIP, где указываете этот архив для прошивки. Бинго, root получен:


p.s. Пользуясь случаем выражаю благодарность пользователю Jemmini за советы, файл русификации ru.xml для TWRP, а также за собранные бинарники библиотек .so по работе с графикой для MTK, которые я иногда использую в своих сборках recovery, т.к. это быстрее чем пересобирать все "с нуля".

Обновлено 21.02.2016 01:43 (MSK)

Несколько скриншотов из TWRP, плюс скриншот смонтировнных разделов и скриншот встроенного файлового менеджера:


Полезные ссылки

пятница, 19 февраля 2016 г.

Micromax Q415 Canvas Pace 4G. TWRP 3.0.0-0.

Исходный пост с TWRP Recovery для Micromax Q415 был обновлен, изменения довольно значительные. Как известно, самой первой версией TWRP, которую я сделал для Q415 была 2.8.6.0. В ней работало все, однако, было небольшое неудобство связанное с автоматическим именованием backup'ов. При загрузке TWRP автоматически устанавливалась дата 01-01-1970, она же попадала и в название backup'ов, из-за чего backup'ы сделанные в разное время достаточно сложно было отличить. Первым о проблеме отписался пользователь Arman Kirakosyan еще 3 февраля, однако, до 16 числа у меня просто физически не было времени заняться ей. 16.02 исходный пост с TWRP был обновлен и появилась версия 2.8.7.0, в которой проблема с временем в TWRP была исправлена. И вот сегодня, 19.02.2016 архив и пост с TWRP в очередной раз были обновлены.

Была добавлена версия TWRP 3.0.0-0, также был переработан установочный скрипт flash_twrp_micromax_q415.cmd. Теперь во время установки можно выбрать, какую версию recovery вы хотите прошить в аппарат. Доступны следующие варианты выбора:

  • TWRP 2.8.6.0
  • TWRP 2.8.7.0
  • TWRP 3.0.0.0
  • Стоковый recovery от SW_2.8

По-умолчанию, если вы не выберите нужную вам версию в течении 10 секунд, будет автоматически выбран первый вариант (как уже протестированный и финальный).

p.s. Развитие темы по Micromax Q415 не прекращается, поэтому если вы копируете какие-то материалы на сторонние ресурсы, обязательно указывайте ссылку на первоисточник. В противном случае вы просто лишите других пользователей обновлений и другой актуальной информации.

Полезные ссылки

среда, 2 декабря 2015 г.

Micromax Q415 Canvas Pace 4G. Устанавливаем TWRP и получаем Root.

Этот пост является небольшим продолжением цикла статей о самом бюджетном LTE-смартфоне от Micromax - Micromax Q415 Canvace Pace 4G, обзор которого я делал не так давно в одном из своих постов, и сегодня мы с вами поговорим о том как установить кастомный recovery на этот аппарат и получить root-права. Как я уже и писал ранее - получить root-права на Micromax Q415 можно с помощью последней версии приложения KingRoot, но этот способ я не рассматриваю в качестве "желательных", т.к. с одной стороны мы запускаем на смартфоне незнакомое китайское приложение, которое получает root с помощью одного из exploit'ов, а с другой - мы отдаем свой аппарат полностью во власть разработчиков данного ПО, к тому же, после получения root с помощью KingRoot'а многие так или иначе захотят удалить KingRoot и установить SuperSU (кстати, сделать это можно с помощью утилиты SuperSU-Me-Pro), т.к. многие приложения использующие root-права конфликтуют с бинарным файлом ku от KingRoot'а. Поэтому "правильным способом" будет установка TWRP, затем, в обязательном порядке создание backup'а стоковой прошивки, а уже потом непосредственно получение root с помощью прошивки соответствующего zip с SuperSU в TWRP. Итак, поехали ...

Что нам понадобится чтобы установить TWRP и получить root на Micromax Q415? Безусловно драйвера ADB и навыки их установки. Как установить драйвера ADB, а также скачать их вы можете узнать из этого поста.


TWRP и Root для Micromax Q415 Canvas Pace 4G
(пароль на архив: decker.su)

  1. Скачиваем архив по ссылке выше и распаковываем его в отдельную папку.
  2. Устанавливаем приложение Debug Menu Access из Google Play на телефон, заходим в настройки разработчика (меню "Для разработчиков") и включаем отладку по USB:

  3. После чего подключаем телефон к ПК. Проверяем чтобы в диспетчере устройств у нас появилось устройство Android ADB Interface, так как показано на скриншоте:

  4. Если же устройство не появилось у вас - устанавливаем драйвера ADB. После того как в диспетчере устройств у вас примерно такая же картинка как показано выще - можно переходить к следующем шагу. Да, во время подключения телефона к ПК на экране телефона появится запрос RSA авторизации, его нужно принять.
  5. Запустите файл flash_twrp_micromax_q415.cmd и следуйте инструкциям на экране. Результат успешной прошивки TWRP показан на скриншоте ниже:

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

  1. При включенной USB отладке на телефоне в консоли делаем adb reboot bootloader для перезагрузки телефона в режим bootloader'а.
  2. Проверяем что телефон у нас видится в режиме fastboot с помощью fastboot devices (ответ на эту команду должен быть xxxxxxxxx fastboot, где xxxxxxxxx - это уникальный идентификатор вашего телефона)
  3. Для прошивки TWRP можно использовать fastboot flash recovery recovery_twrp_024849.img , для загрузки в TWRP без его прошивки - fastboot boot recovery_twrp_024849.img
Загрузившись в TWRP вы можете прошить архив с SuperSU через опцию Install Zip в TWRP. Для этого заранее помещаем архив BETA-SuperSU-v2.52.zip на microSD и просто выбираем его в меню Install ZIP в TWRP.

Если какой-то из этапов у вас так или иначе не получается - скорее всего проблема в некорректно установленных драйверах ADB. На каждом этапе не забудьте убедиться в том, что в диспетчере устройств присутствует устройство Android ADB Interface или Android Sooner Single ADB Interface, а также, что на телефоне принята RSA-авторизация.

Чуть позже я выложу backup стоковой прошивки под TWRP, а пока жду ваших предложений, комментариев и т.п.

Важно: После прошивки TWRP (до установки root) обязательно сделайте резервную копию своего смартфона через опцию Backup в TWRP. Это позволит вам избавиться от множества проблем в будущем. Например, если с root-правами вы случайно удалите один из системных файлов и смартфон перестанет загружаться - вы всегда сможете вернуться к тому состоянию, в котором он был на момент снятия backup'а.

Обновлено 16.02.2016 07:48 (MSK)

Архив с TWRP был обновлен. По многочисленным просьбам пользователей версия TWRP была обновлена до 2.8.7.0, также был исправлен баг с датой / временем при создании файлов backup'а, которые в предыдущей версии создавались с 1970 годом. Теперь при загрузке TWRP автоматически выставляется временная зона UTC+3 (MSK), а дата / время в TWRP совпадает с системным.

Новая версия TWRP находится в виде отдельного файла в архиве: recovery_twrp_072420.img, для прошивки необходимо заменить имя файла recovery_twrp_024849.img на recovery_twrp_072420.img в файле flash_twrp_micromax_q415.cmd .

Новая версия является экспериментальной, поэтому тестируем и отписываемся в комментариях или сообществе.

Обновлено 19.02.2016 08:07 (MSK)

Благодаря пользователям сообщества в новой версии TWRP была выявлена небольшая проблема с условным названием "bootdevice <-> soc.0" из-за которой "точка монтирования" раздела system в старой и новой версии TWRP различалась, в результате ошибки патчи в виде zip архивов (например патч кнопок) не устанавливались в новой версии TWRP. Архив был обновлен, новая версия TWRP 2.8.7.0 - recovery_twrp_072648.img полностью исключает эту проблему. Совместимость со старыми патчами в виде zip архивов сохранена в полном объеме. Тем, кто использует 2.8.7.0 - рекомендуется перекачать архив.

Обновлено 19.02.2016 08:56 (MSK)

И еще один подарок для всех пользователей Micromax Q415. Очередное обновление архива. Теперь архив включает в себя три версии TWRP, а также стоковый recovery от официальной прошивки 2.8:

  • TWRP 2.8.6.0 - recovery_twrp_024849.img
  • TWRP 2.8.7.0 - recovery_twrp_072648.img
  • TWRP 3.0.0.0 - recovery_twrp_082807.img (со списком изменений в TWRP 3.0.0.0 можно ознакомиться здесь)
  • Стоковый recovery - recovery.img

В установочный скрипт было добавлено соответствующее меню выбора версии (скрипт гарантированно работает на всех версиях Windows старше WinXP). 

Все предложения, пожелания, вопросы - можно оставлять в комментариях к посту. Также не забываем про поддержку проекта.


Внимание! Материалы приведенные в данной статье размещены в ознакомительных целях. Все действия описанные в данной статье вы осуществляете на свой страх и риск! Автор(ы) статьи не несут ответственности за вышедшее из строя оборудование, в результате ошибочных действий или неверного понимания вами смысла изложенного в ней материала, а также в силу любых прямых и косвенных причин, которые потенциально могут привести к неработоспособности вашего устройства или любым другим проблемам с ним. Если вы не уверены в своих силах, сомневаетесь и т.п. - не выполняйте ничего из вышеописанного. Используя материалы из этой статьи вы соглашаетесь с тем, что ответственность за ваши действия несете вы и только вы.

четверг, 1 октября 2015 г.

Билайн Смарт 5. Устанавливаем TWRP и получаем root.

То что вы видите на фото в заголовке этой статьи - это длящийся уже более 5 минут процесс установки Antutu Benchmark на Билайн Смарт 5. При этом apk'шка Antutu еще даже не начала загружаться из Google Play, просто смартфон "задумался" ... т.к. 512 Mb RAM для Android 5.1 - согласитесь, мало. Впрочем сегодня речь пойдет не об этом, а о том как прошить TWRP и получить root на на него. Честно говоря с TWRP я провозился чуть больше обычного ... Устройства на MT6572, к которым относится Билайн Смарт 5, довольно распространены. Можно навскидку назвать более 10-тка моделей и казалось бы проблем с портированием того же TWRP возникнуть не должно ... но есть ряд небольших проблем. Во-первых раздел recovery на этом телефоне ограничен 0x600000 байтами (6291456 байт, в десятичной системе), поэтому далеко не все сборки TWRP нам подойдут, если прошить recovery размером больше чем размер раздела - могут быть не очень хорошие последствия, во-вторых на смартфоне Android 5.1 с SELinux, а это значит что нам нужна относительно свежая версия TWRP для портирования ... т.е. чтобы поддержка SELinux в ней была. Вообщем, на борьбу с этими проблемами ушел не один час, в результате TWRP v2.8.1.0 был собран, а root получен. Результаты вы можете видеть на фото и скриншоте ниже:


Пароль на архив: decker.su

Методика прошивки TWRP Recovery для Билайн Смарт 5 очень простая и ничем не отличается от других смартфонов на базе MediaTek. 

Как установить TWRP и получить root для Билайн Смарт 5?

  1. Скачиваем архив !twrp_root_beeline_smart_5.rar и распаковываем его в отдельную папку.
  2. Должно получиться следующее содержимое архива:

    • SP_Flash_Tool_v5.1352.01 - программа-прошивальшик для устройств на базе Mediatek, версия которая корректно работает с чипами MT65xx.
    • BETA-SuperSU-v2.49.zip - ZIP файл для установки SuperSU и получения root через TWRP
    • MT6572_Android_scatter.txt -  Scatter файл для прошивальщика, содержащий разметку разделов
    • mtk_xp_vista_7_8_x32_x64.zip - архив с драйверами для устройства MT65xx Preloader, PreLoader USB VCOM Port. К слову, поддерживаются все ОС, т.е. данные драйвера установились у меня без каких-либо проблем даже на Windows 8.1 x64
    • recovery.img - образ оригинального (стокового) recovery, если вы вдруг захотите вернуть стоковый recovery
    • recovery_twrp_2810_decker_062944.img - образ TWRP Recovery 2.8.1.0 для прошивки через SP Flash Tool
  3. Как видно, архив достаточно полный и предтставляет собой "ремкомплект" на все случаи жизни. Первое что мы делаем, это запускаем SP Flash Tool (файл flash_tool.exe в одноименной папке)
  4. Сразу после запуска переходим на закладку Download и нажимаем на кнопку Scatter Loading, где выбираем наш MT6572_Android_scatter.txt файл. После чего устанавливаем галочку на RECOVERY и выбираем в Location файл с образом TWRP. В результате у вас должно получиться практически так, как на картинке (для прошивки TWRP в качестве файла с recovery укажите recovery_twrp_2810_decker_062944.img):


  5. После чего нажимаем кнопку Download со стрелкой. Программа перейдет в режим ожидания подключения устройства.
  6. Выключаем телефон (это обязательно, т.е. телефон должен полностью выключиться). После чего подключаем его к ПК.
  7. В момент подключения у вас определится неизвестное устройство MT65xx PreLoader и ОС предложит вам установить драйвера на него. На картинке ниже это наглядно показано. Лучше сразу перед подключением телефона открыть диспетчер устройств, чтобы "отловить" момент появления MT65xx PreLoader. Если устройство появится, а ОС не предложит автоматически установить драйвера, то это надо сделать вручную, кликнув правой кнопкой мыши на устройстве MT65xx PreLoader.

  8. Выбираем "Выполнить поиск драйверов на этом компьютере" и указываем папку в которой находится распакованное содержимое архива mtk_xp_vista_7_8_x32_x64.zip (т.е. к этому моменту вы должны распаковать архив куда-нибудь). После того как драйвера успешно установятся, картинка в диспетчере устройств должна поменяться на такую:

  9. После этого в SP Flash Tool пойдет процесс прошивки Recovery, занимает он несколько секунд. Если процесс прошивки не начался, например, если вы после подключения телефона "слишком долго" устанавливали драйвера - отключите телефон от ПК, заново выставьте все параметры в SP Flash Tool и нажмите кнопку Download для ожидания подключения телефона. После чего подключите телефон.
  10. Когда прошивка успешно завершится вы увидите сообщение Download OK.
  11. Можно отключать телефон от ПК - TWRP у вас прошит.

Если вместо CWM вы хотите прошить оригинальный recovery, то вместо recovery_twrp_2810_decker_062944.img в Location в SP Flash Tool нужно выбрать recovery.img.

Замечания: Если при подключении выключенного телефона к ПК в диспетчере устройств ничего не появляется, а на телефоне отображается индикация зарядки - отсоедините телефон от ПК, выньте батарею из телефона, после чего подключите телефон к ПК с извлеченной батареей, после появления нового устройства в диспетчере устройств - вставьте батарею в телефон.

После прошивки TWRP на всякий случай отсоедините батарею, затем вновь подключите ее и включите телефон, удерживая кнопку Громкость Вверх, нажав кнопку включения питания. В появившемся меню Select Boot Mode выберите пункт [Recovery Mode] (перемещение по меню осуществляется при помощи Громкость Вверх, выбор  - Громкость Вниз). На экране должен появиться TWRP Recovery.

В меню Install Zip выберите с карты памяти microSD файл BETA-SuperSU-v2.49.zip.

Полезные ссылки



Внимание! Материалы приведенные в данной статье размещены в ознакомительных целях. Все действия описанные в данной статье вы осуществляете на свой страх и риск! Автор(ы) статьи не несут ответственности за вышедшее из строя оборудование, в результате ошибочных действий или неверного понимания вами смысла изложенного в ней материала, а также в силу любых прямых и косвенных причин, которые потенциально могут привести к неработоспособности вашего устройства или любым другим проблемам с ним. Если вы не уверены в своих силах, сомневаетесь и т.п. - не выполняйте ничего из вышеописанного. Используя материалы из этой статьи вы соглашаетесь с тем, что ответственность за ваши действия несете вы и только вы.