воскресенье, 20 сентября 2015 г.

Alcatel Idol 3. Прошивка TWRP на версии ПО 010 04 и выше.

На столе у меня лежит две коробки от Alcatel Idol 3 4.7" 6039Y ... о содержимом одной из них я вспоминаю с большой грустью. Телефон превратился в кирпич, который без тестпойнта (расположение которого в этом аппарате пока никому неизвестно) восстановить нельзя. Предыстория этого печального события достаточно банальна, на xda-developers некто petrov.0 выложил способ восстановления fastboot на прошивке 010 04. Способ заключался в прошивке раздела aboot от предыдущей версии прошивки (именно этот файл, по-сути это обычный исполняемый файл ELF, только с подписанными цифровой подписью разделами и отвечает за работу fastboot) через QFIL, который входит в комплект QPST. Как сказал сам автор, у него был некий мануал, в котором описывался процесс загрузки MSM 8916, поэтому чтобы не было неприятностей при прошивке, он включил в файл прошивальщика rawprogram0.xml также и разделы SBL1, RPM, TZ, HYP и две копии GPT. Т.к. неизвестно было, заработает ли aboot от предыдущей версии прошивки с новыми SBL1, RPM и т.п. или нет. Способ уже успели опробовать несколько пользователей и вполне успешно. Я же на волне "больше, лучше, полезнее" зачем-то решил заняться созданием полного repair kit'а для 6039Y, который бы полностью прошивал все разделы, возвращая стоковую прошивку 010 01. Вообщем то-ли я ошибся где-то с одним разделом, то ли перепутал что-то, но в конечном итоге при тестировании своего repair комплекта я получил кирпич :( Который не определяется в Download Mode (9008) и вообще ничего не умеет, кроме как включать светодиод на передней панели при подключении питания. Вот кстати он в разобранном виде:


Так или иначе, пока на 6039Y не найден тестпойнт восстановить я его вряд-ли смогу. А телефон был рабочим ... постоянно использовался ... и вообще всем нравился. Поэтому я отправился в ближайший салон связи и скрепя сердцем купил еще один 6039Y, правда уже серебристый (предыдущий был черным). 

Ну да опустим лирику ... В обсуждении на форуме 4PDA родилась более другая идея. А не проще ли для того чтобы воспользоваться TWRP не восстанавливать fastboot, а просто прошить TWRP через тот же QFIL? Реализацией и тестированием этого метода я и занялся уже на вновь приобретенном аппарате на свой страх и риск. Все получилось и результатом этого и стал этот мануал.

Как прошить TWRP (или восстановить оригинальный recovery) через QFIL?

Перед прошивкой TWRP рекомендуется снять backup nvram так, как описано в этой статье - Alcatel Idol 3. Как создать backup NVRAM при помощи QPST?
  1. Первое что у вас должно быть, это QPST версии не ниже 2.7.422 в состав которого входит QFIL, умеющий работать с протоколом FireHose. Скачать его можно тут или просто найти в Google.
  2. Второе - это драйвера Qualcomm, чтобы телефон корректно определялся в Download Mode. Установить драйвера можно поставив Mobile Upgrade Q 4.8.7, они в нем идут в комплекте. Если что-то вдруг не установится автоматически - сами драйвера находятся в папке с установленным MU - "C:\Program Files (x86)\Mobile Upgrade Q\tool\usb_driver\installdriver" и можно установить их вручную в случае чего.
  3. Далее вам понадобится вот этот архив: 6039Y_TWRP_with_gdisk.7z , его мы скачиваем и распаковываем в отдельную папку.
  4. Выключаем телефон и подключаем его к ПК. Ждем пока пропадет значок батареи. После чего зажимаем одновременно обе кнопки громкости и кнопку Power до появления экрана Download Mode:


  5. Чтобы попасть в режим Download Mode нажимаем и удерживаем Громкость+ на этом экране. Экран при этом у нас очистится, а в диспетчере устройств должен появиться COM порт с названием Android HS-USB QDLoader 9008:

  6. Запускаем QFIL. В качестве Programmer Path выбираем файл prog_emmc_firehose_8916.mbn из архива, который вы скачали в пункте 3. Далее чуть ниже нажимаем кнопку Load XML и последовательно выбираем rawprogram0.xml и patch0.xml из той же папки. В результате у вас должно получиться что-то вроде этого:

  7. После того как вы нажмете Download QFIL автоматически прошьет файл recovery.img, в котором по-умолчанию находится TWRP с GDISK'ом. При этом в логе QFIL'а будут следующие строки:
    Download Image
    PROGRAM: Replace the partition sectors number 0x10000 to file size in sector 0x64dc
    PROGRAM: Partition 0, Sector: 466016, Length: 25820 Sectors, Sector Size: 512 Bytes
    File: D:\Work\Alcatel OT-6039Y\QFIL\6039Y_TWRP_with_gdisk\recovery.img
    PROGRAM: Written Bytes 0xc9b800 (64)
    < ... >
    Reset Phone


  8. По завершению прошивки телефон перезагрузится. При этом у вас будет прошит TWRP с gdisk'ом (загрузиться в него можно удерживая кнопку Громкость+ + Power) и можно переходить к созданию резервной копии или переразметке. Если же вы захотите восстановить оригинальный recovery - скопируйте recovery_original.img в файл с именем recovery.img, т.к. шьется именно он. Если же вам опять нужно прошить TWRP - берете образ TWRP (recovery_twrp_gdisk.img или другой), переименовываете его в recovery.img и шьете по той же схеме.
Ну вот вроде как и все. Благодаря этим 8-ми пунктам прошить TWRP теоретически можно на любую версию прошивки. На 010 04 - работает.

Внимание! Данный способ работоспособен только для 6039Y, т.к. файл rawprogram0.xml включает в себя описание разметки именно под этот аппарат. Если ваш аппарат имеет другую разметку, образ recovery прошьется неизвестно куда, например, поверх другого раздела ... и в этом случае вы имеете все шансы получить кирпич. Естественно что все что описано в этой статье приведено только в ознакомительных целях и никто кроме вас не несет ответственности в случае если что-то пойдет не так. Также, имейте ввиду, что при любых модификациях телефона вы можете лишиться гарантийного обслуживания.

Краткий FAQ

Q.  В архиве несколько *.img файлов, для чего они?
A. Тут все просто. При прошивке через QFIL прошивается файл с именем recovery.img, по-умолчанию в нем находится TWRP с gdisk'ом, который используется для переразметки. В файле recovery_twrp_gdisk.img находится он же, в файле recovery_original.img - оригиальный recovery от прошивки 010 04, в файле twrp_recovery_alcatel_6039y.img находится мой TWRP, который умеет backup'ить дополнительные разделы. Копируете тот, который вам нужно прошить в recovery.img и прошиваете по инструкции.

Q. А будет ли у меня работать OTA, т.е. обновление по воздуху?
A. Это зависит от того что вы будете делать с телефоном. К примеру, вы получили root и удалили один из файлов в разделе system. Обновления которые приходят по FOTA накопительные, т.е. если обновление не включает тот файл который вы удалили, то оно установится, если включает - то нет. То же самое касается измененных файлов и разделов. Обновление проверяет SHA1 некоторых файлов и разделов для применения патча, если какой-то из файлов или разделов участвующих в обновлении изменялся по сравнению со стоковой прошивкой - то обновление пришедшее по FOTA 100% не установится.

Q. А если я прошью только TWRP, а все остальное даже трогать не буду?
A. С установленным TWRP обновление пришедшее по FOTA не прошьется, нужен будет оригинальный recovery. Могу рассказать с чем это связано ... но это уже наверное будет лишним. Все дело в том, что в оригинальном recovery разделы именуются как /dev/block/bootdevice/by-name/имя_раздела, а в TWRP - /dev/block/platform/soc.0/by-name/имя_раздела. updater-script в обновлении пришедшем по FOTA будет обращаться именно к bootdevice, а TWRP его найти не сможет. Как-то так.

Q. А можно еще вопрос про модификации и FOTA?
A. Уже не сегодня ... Вообще хотел рассказать хороший пример. Вот представьте себе что у вас есть автомобиль и он у вас на гарантии. Пока вы обслуживаетесь у официалов - все более-менее чудесно, по-крайней мере у вас есть штампы в сервисной книжке. Захотели кастомизации или решили перебирать двигатель с парнями в гараже, нет проблем. Но нет и гарантии и поддержки производителя. Вот примерно все то же самое можно перенести и на телефоны. Пока вы ничего не трогаете девайс находится на поддержке и отлично обновляется через FOTA, принимает обновления от производителя и т.п. Как только вы что-то поменяли, прошили кастомный recovery, установили root и т.п. - готовьтесь к тому что вся эта идиллия нарушится. Т.к. обновления FOTA предназначены только для обновления немодифицированных устройств. В случае с модифицированными - зачастую придется изменять сами update.zip обновления, чтобы нормально обновиться. Так что решайте сами, либо вы кастомизируете свой телефон и причисляете себя к "клану умельцев", либо вы пользуетесь всем тем, что дает производитель.

Q. В чем принципиальные отличия способа приведенного здесь от способа описанного на XDA?
A. Если вкратце, то про проблему работоспособности fastboot начиная с 010 04 наверное знают все. На самом деле большинству людей нужен не fastboot как таковой, а способ загрузить TWRP. Т.к. именно через TWRP с gdisk делается переразметка, устанавливается root и т.п. Так вот в способе на XDA берут aboot и еще пару разделов от предыдущей версии прошивки и прошивают, в результате у вас получается работоспособный fastboot. В способе же который предлагается здесь - fastboot остается "проблемным", однако, тут просто прошивается TWRP, что снимает проблемы с переразметкой, получением root и т.п.

Q. Прошил все по инструкции, но после перезагрузки у меня опять стоковый recovery. Что делать?
A. Сразу после прошивки TWRP, до загрузки телефона, надо удерживать Громкость Вверх + Power (кнопка включения питания), чтобы зайти в него. Если после прошивки TWRP - аппарат загрузится, то TWRP будет заменен стоковым recovery, т.е. нужно до загрузки Android'а загрузиться в TWRP.

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

23 комментария :

  1. Здравствуйте , подскажите пожалуйста , будет ли обновляться андроид с TWRP ?

    ОтветитьУдалить
    Ответы
    1. Читайте ответ на вопрос "А если я прошью только TWRP, а все остальное даже трогать не буду?" ...

      Удалить
  2. Здравствуйте. Получается что бы сохранить полный backup с трубки, типо "точки восстановления" (что бы в случае неудачной прошивы просто загрузить данные с ПК), можно сделать только прошив TWRP, но нет 100% уверенности, что TWRP прошьется без багов?

    ОтветитьУдалить
    Ответы
    1. С чего вы сделали такой вывод? В смысле по-поводу "нет 100% уверенности"? TWRP отлично прошивается, backup'ы делаются, все работает. По-поводу "точки восстановления" вы все поняли абсолютно верно, с помощью backup'а сделанного TWRP можно вернуть телефон к состоянию на момент его снятия.

      Удалить
  3. Уважаемый неуловимый Decker )) Не могу вас застать на 4pda (( Вопрос в следующем: как выдернуть стоковый рекавери(чтобы потом восстановить его поверх twrp) из 01005 прошивки, которую телефон получил через MU? Она вообще говоря не обязана быть как от 01004 и после разбивки памяти и наката рекавери от 01004 в прошивку 01005 могут начаться проблемы с FOTA... Вопрос продублирован и на 4pda. Там Вас все ждут ))

    ОтветитьУдалить
  4. А как выдернуть рекавери от 01005? Знаю что от 01004 рекавери лежит в архиве выше, но не факт что он такой же и потом чехарды с FOTA не будет. Вопрос был и на 4pda. Там тоже все ждут ответа ))

    ОтветитьУдалить
    Ответы
    1. Recovery от 010 05 вам не пригодится. При обновлении по FOTA методика обновления recovery немного другая, т.е. контрольные суммы раздела с recovery и т.п. не проверяются, поэтому чтобы сохранить возможность обновления через FOTA - достаточно прошить любую версию стокового recovery через QFIL (имеющаяся от 010 04 вполне подойдет), телефон при этом спокойно обновится. При этом recovery будет заменен уже новой версией от последнего обновления. Поэтому поводов для беспокойства нет, чтобы FOTA работала - можно просто вернуть recovery от 010 04 и ждать следующих обновлений.

      Удалить
    2. Если нужно - я могу выложить отдельно recovery от 010 05, но особенного смысла в нем нет.

      Удалить
  5. Если же вы захотите восстановить оригинальный recovery - скопируйте recovery_original.img в файл с именем recovery.img,. подскажите как правильно востановить родной

    ОтветитьУдалить
    Ответы
    1. Именно так, как написано. Чтобы прошить родной recovery, перед прошивкой он должен находиться в файле recovery.img. Т.е. просто берем recovery_original.img и переименовываем в recovery.img или копируем его содержимое в файл с именем recovery.img. Что одно и то же. В общем и целом смысл в том, что recovery который вы хотите прошить (оригинальный или twrp - не важно) должен находиться в файле recovery.img перед прошивкой.

      Удалить
  6. Спасибо большое Вам! Сделал по инструкции, всё отлично. Прошивка была 01005.

    ОтветитьУдалить
  7. Ув. Деккер

    прошивка 01005
    пишет:
    Download Fail:System.Exception: Unable to download Flash Programmer using Sahara Protocol

    в QC.QMSLPhone.Phone.QPHONEMS_SaharaArmPrgDownload(String sFileName)

    в QC.SwDownloadDLL.SwDownload.QPHONEMSSaharaDownloadArmPrg(UInt64& version, String armPrgPath)
    Download Fail:Sahara FailSahara Fail

    что делать?

    ОтветитьУдалить
  8. нереально, Перепробовал все - и фастбут, и так и сяк. Ничего не помогает, Телефон закрыт - и все.

    ОтветитьУдалить
    Ответы
    1. Боюсь что в данной ситуации я ничем не смогу вам помочь, т.к. причин у этой проблемы может быть достаточно много.

      Удалить
  9. Большое спасибо"делал все по инструкции и все получилось)

    ОтветитьУдалить
  10. Пробовал на двух разных компьютерах. На обоих одинаково. Как у Petr Artishchev.
    ...Start Sending Programmer
    Download Fail:System.Exception: Unable to download Flash Programmer using Sahara Protocol

    в QC.QMSLPhone.Phone.QPHONEMS_SaharaArmPrgDownload(String sFileName)

    в QC.SwDownloadDLL.SwDownload.QPHONEMSSaharaDownloadArmPrg(UInt64& version, String armPrgPath)
    Download Fail:Sahara FailSahara Fail
    Finish Download

    ОтветитьУдалить
  11. Судя по всему, на прошивке 010 05 закрыли и эту возможность...

    ОтветитьУдалить
  12. Этот комментарий был удален администратором блога.

    ОтветитьУдалить
  13. пишет downloader fail: switch to edl failfailed to switch to emergency download mode что я сделал не так?

    ОтветитьУдалить