Мобильные устройства настолько тесно переплелись с повседневной жизнью, что отсутствие смартфона под рукой может вызвать панику. А уж если он сломался, то и говорить нечего. Для многих это грозит потерей тысяч нервных клеток. В этой статье мы рассмотрим способы восстановления работоспособности устройства при некоторых «поломках», научимся частично восстанавливать его функции до покупки нового и доставать важную информацию из разбитого телефона.

Идеальный вариант для описанных действий — это телефон с разблокированным загрузчиком, установленным кастомным рекавери TWRP (CWM давно не обновляется), с наличием прав root и галочкой «Отладка по USB» в настройках для разработчиков. Такая мелочь, как эта самая галочка, позволит в случае разбитого экрана не только вытащить данные с карты памяти, но и достать базы контактов или СМС, используя плагин ADB для Total Commander.

Рекомендую проделать эти манипуляции сразу, чтобы не было мучительно больно, когда возникнут проблемы с телефоном. Все примеры будут даны для Nexus 5, как самого распространенного эталонного Android-смартфона.

INFO


Чтобы попасть в раздел «Для разработчиков», нужно семь раз тапнуть на номер сборки в меню «О телефоне».
 

Проблема #1. Телефон не загружается

Начнем с наиболее частых проблем. Телефон перестал загружаться. Постоянно висит логотип Google, и дальше дело не идет. Имеем классический бутлуп (bootloop — загрузка по кругу). Может наступить после ежемесячного обновления безопасности устройства даже у пользователей со стоковой прошивкой, которые никогда не лезли в систему. Решений три:

  • сделать сброс из стокового рекавери (приведет к потере всех данных) или из TWRP (данные не пропадут);
  • прошить из стокового рекавери через sideload полный ОТА-образ в формате ZIP, который с мая Google начала выкладывать для общего пользования, чем очень упростила жизнь многим пользователям (данные не пропадут);
  • прошить полный образ прошивки, предварительно убрав -w из скрипта flash-all.bat, чтобы не потерять данные.
Прошивка полного образа на Nexus 7 через flash-all.bat без параметра -w
Прошивка полного образа на Nexus 7 через flash-all.bat без параметра -w
 

Проблема #2. Телефон не включается

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

  • Подключить зарядник от другого устройства с большим током, в идеале 1А.
  • Зайти в загрузчик (обычно громкость вниз + питание), далее кнопкой «Питание» подтверждаем выбранный пункт Start. Если не помогает, то в режиме загрузчика выбирать громкостью Power down, затем подтвердить кнопкой питания. Далее следует отсоединить зарядное устройство и подсоединить его снова в течение десяти секунд. На экране должен появиться значок батареи. После этого можно пробовать включать устройство, предварительно дав ему зарядиться не менее часа. Подробнее можно прочитать на официальной странице поддержки.
  • Запитать смартфон от USB-выхода компа с помощью самопальной лягушки. Для этого достаточно найти любой USB-кабель (подойдет и от мышки), отрезать его, а затем присоединить красный провод к плюсу батареи, а черный — к минусу. Далее батарею следует поставить на место (с присоединенными проводами) и включить смартфон.
Красный — плюс, черный — минус
Красный — плюс, черный — минус
 

Проблема #3. Телефон не звонит

Если не удается совершить звонок или смартфон вообще не видит мобильную сеть, то прежде всего следует проверить IMEI. Сделать это можно, набрав *#06#. Если вместо номера высветились нули, то IMEI слетел. Проще всего восстановить его из бэкапа, поэтому рекомендую сделать его после прочтения статьи и закинуть в облако. В Play Market есть очень много программ для создания и восстановления таких бэкапов, поэтому останавливаться на них не буду. Сделать то же самое можно и руками. Например, для Nexus 4 в эмуляторе терминала или из консоли нужно ввести следующие команды:

Бэкап IMEI:

$ adb shell
> su
> dd if=/dev/block/mmcblk0p8 of=/sdcard/m9kefs1.img
> dd if=/dev/block/mmcblk0p9 of=/sdcard/m9kefs2.img

Восстановление IMEI:

$ adb shell
> su
> dd if=/sdcard/m9kefs1.img of=/dev/block/mmcblk0p8
> dd if=/sdcard/m9kefs2.img of=/dev/block/mmcblk0p9

У Nexus 5 нет отдельного раздела EFS. Поэтому бэкапить надо целиком разделы 12 и 13:

$ adb shell
> su
> dd if=/dev/block/mmcblk0p12 of=/sdcard/modemst1.img
> dd if=/dev/block/mmcblk0p13 of=/sdcard/modemst2.img

Восстановление проводится так:

$ adb shell
> su
> dd if=/sdcard/modemst1.img of=/dev/block/mmcblk0p12
> dd if=/sdcard/modemst2.img of=/dev/block/mmcblk0p13

Но что же делать, если бэкапа нет? Способ восстановления IMEI найдется и в этом случае. Нужны наборы утилит EFS Professional и QPST, а также драйверы Qualcomm для твоего устройства. Сначала грузится модифицированное ядро, затем телефон перегружается в диагностический режим командами

$ adb shell
> su
> setprop sys.usb.config diag,adb

После этого IMEI можно менять. Подробную инструкцию найдешь тут. Если нет под рукой коробки, то IMEI можно узнать у Гугла в личном кабинете на вкладке Android.

Дополнительно понадобится узнать SPC code — шестизначное число, необходимое для работы сервисных программ. Сделать это можно следующим образом. Качаем из маркета и запускаем Nexus 5 Field Test Mode, нажимаем три точки, далее Settings (view), потом выбираем LTE, edit, выпрыгнет окно с запросом кода. После этого в консоли надо ввести:

> adb shell
> logcat -d | grep "commandId\ 200"

Ответом будут строки вида:

> 08-02 10:16:27.140 14401 14401 D LG_SVC_ITEMS: getCommands commandId 200-START
> 08-02 10:16:27.185 14401 14401 D LG_SVC_ITEMS: getCommands commandId 200 = 353662-END

где шесть цифр в конце и есть искомый код.

Вкладка Android с IMEI в личном кабинете
Вкладка Android с IMEI в личном кабинете
Работа утилиты Qualcomm NV Tools, входящей в комплект EFS Professional
Работа утилиты Qualcomm NV Tools, входящей в комплект EFS Professional

Подключение программы EFS Professional
Подключение программы EFS Professional

INFO


С помощью того же QPST можно активировать на Nexus 5 американской модели D820 частоты LTE, пригодные для использования в Европе.
 

Проблема #4. Не работает тачскрин

Если неудачно уронить телефон, можно повредить экран и, как следствие, тачскрин. В этом случае поможет мышка, подключенная к смартфону через переходник USB-OTG. Можно также подключить устройство к компу и использовать для управления консоль и ADB, о чем я писал в статье «Консольный Android». ADB позволит не только запускать приложения, отправлять СМС и даже совершать звонки, но и эмулировать нажатия на экран. Команды выглядят следующим образом:

  • text <строка> — ввести строку;
  • keyevent <код_клавиши> — эмулировать нажатие хардварной кнопки;
  • tap <x> <y> — тап по указанному месту экрана;
  • swipe <x1> <y1> <x2> <y2> — свайп от x1, y1 до x2, y2.

Например, вытянуть шторку с уведомлениями можно так (отсчет координат идет от левого верхнего угла):

$ input swipe 10 10 10 1000

На экране разрешением 1080 х 1920 нажать на кнопку «Меню приложений» стандартного лаунчера от Гугла, которая находится над кнопкой «Домой», можно так:

$ input touchscreen tap 500 1775

Если же не работает только часть экрана, можно произвольно сдвинуть выводимое изображение через консольную команду wm overscan или прогой Screen Shift.

 

Проблема #5. Не работает USB

Если по USB телефон заряжается, но при подключении комп не видит устройство, можно совершать манипуляции с телефоном через Wi-Fi. Для этого нужны права root и приложение WiFi ADB. Запускаем приложение, жмем кнопку и подключаемся к смартфону с помощью команды connect и показанного приложением IP-адреса:

$ adb connect IP-адрес

Полное руководство по работе с ADB, повторюсь, есть в статье «Консольный Android». В качестве более удобной альтернативы можно использовать AirDroid.

 

Проблема #6. Не работает кнопка питания

Если в смартфоне сломалась кнопка питания, включить его можно так: зажимаем громкость вниз и подключаем проводом к компу. Попадаем в загрузчик. Из консоли вводим команду для продолжения загрузки (fastboot входит в состав Android SDK, папка platform-tools):

$ fastboot continue

Телефон загрузится. Для обеспечения работоспособности можно поставить модуль GravityBox для Xposed framework и включить опцию «Пробуждение громкостью» или поставить ядро с поддержкой DoubleTap2Wake. Чтобы иметь возможность погасить экран (заблокировать), следует активировать опцию «Двойное нажатие для сна» в GravityBox.

Другие хардварные кнопки можно переназначить, отредактировав один из файлов /system/usr/keylayout. На Nexus 5 хардварных кнопок немного, поэтому приведу пример со смартфоном Micromax Q415. У него очень неудачное расположение кнопок «Назад» и «Меню», но их легко поменять местами, если отредактировать файл ft5x06_ts.kl:

key 158    BACK
key 139    APP_SWITCH
key 172    HOME
key 217    SEARCH
key 249    MENU

Достаточно в первой строке указать кейкод 249, а в последней — 158. Аналогичным образом можно изменить любые другие кнопки, включая кнопки громкости (их настройки могут находиться в другом файле).

 

Проблема #7. Ты забыл PIN-код

Допустим, ты забыл PIN или не совсем трезвым поставил графический ключ, ну или друзья пошутили и включили распознавание по лицу. Так вот, если устройство по какой-то причине заблокировано, блокировку можно снять (при условии включенной отладки по USB и прав root) через ту же консоль:

$ adb shell
> su
> cd /data/system
> rm *.key

Команда удалит все пароли и графические ключи. Сами файлы, в зависимости от прошивки и модели устройства могут быть: gesture.key, password.key, cm_gesture.key, personalpattern.key, personalbackuppin.key. Также за блокировку отвечают файлы locksettings.db, locksettings.db-shm, locksettings.db-wal.

После этого достаточно перегрузить устройство и ввести любой ключ, пароль. Если это не помогает, можно попробовать следующее:

$ adb shell
> cd /data/data/com.android.providers.settings/databases
> sqlite3 settings.db
> update system set value=0 where name='lock_pattern_autolock';
> update system set value=0 where name='lockscreen.lockedoutpermanently';
 

Проблема #8. Запрос аккаунта Google после сброса до заводских настроек

На всех Нексусах, начиная с Nexus 6, а также на многих современных телефонах Google и производители ввели новую систему защиты данных пользователя, получившую название Factory Reset Protection (FRP). Теперь после сброса устройства до заводских настроек, на этапе начальной настройки у пользователя потребуют ввести данные (адрес почты и пароль) от предыдущего аккаунта, к которому привязан телефон. По мнению Google, такая защита делает бессмысленным воровство телефона: злоумышленник, который не сумеет подобрать пароль, сможет сбросить устройство до заводских настроек через стоковый рекавери, но при загрузке упрется в этот экран.

Но что же делать честным пользователям, которые забыли логин и пароль на устройстве? Настроил ты телефон родителям и благополучно забыл почту с паролем. На выручку придет канал YouTube сайта Rootjunky.com. На канале множество видеоинструкций по обходу защиты на разных устройствах, включая обновление безопасности от 1 июня 2016 года и прошивки Android N developer preview 4. Сводятся они к тому, что необходимо добраться до браузера, скачать и установить прогу QuickShortcutMaker, найти в ней Google Account Manager, выбрать Type Email and Password, нажать Try, три точки, далее Browser sign-in. После чего можно вводить данные любого аккаунта и перегружать устройство. Запустившийся мастер настройки уже не будет требовать Verify your account.

Запрос предыдущего аккаунта при сбросе до заводских настроек
Запрос предыдущего аккаунта при сбросе до заводских настроек
 

Проблема #9. Не работает мобильная связь, Wi-Fi, отваливается карта памяти

Если телефон начинает дико глючить с постоянным отваливанием различных приложений, с последующим бутлупом и возможностью прошивки только 4.4.4 (все, что выше, не загружается), то, скорее всего, на устройстве слетел раздел /persist. Для Nexus 5 это раздел 16, у Nexus 9 — 11, у Nexus 6 — 26.

Чтобы вернуть смартфон в нормальное состояние, необходимо отформатировать раздел командой (на примере Nexus 5)

$ adb shell make_ext4fs /dev/block/mmcblk0p16

После этого аппарат должен заработать нормально. Единственный минус — каталог /persist окажется пустым, и при каждой перезагрузке будут меняться MAC-адреса на Wi-Fi и Bluetooth. Если это критично, то можно предпринять дополнительные шаги:

  1. Скачиваем файлы.
  2. Устанавливаем HexEditor.
  3. Произвольно меняем значения у двух файлов в архиве.
  4. Внутри /persist создаем папку bluetooth.
  5. С помощью проводника, например ES File Explorer, меняем свойства папки (нужен рут и показ скрытых файлов в настройках): owner — bluetooth, group — system, permissions — -rwxrwx---.
  6. Внутри /persist создаем папку wifi и аналогично выставляем свойства: owner — wifi, group — system, permissions — -rwxrwx---.
  7. Закидываем файлы из архива в созданные папки: .bdaddr в bluetooth и .macaddr в wifi.
  8. Меняем разрешения у файлов на 660 (-rw-rw---).
  9. Перегружаем устройство.
 

Проблема #10. Черный экран при включении

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

Включаем смартфон через резервный загрузчик, удерживая кнопки VolUp + VolDown + Power (сработает, только если убит основной загрузчик). Когда система загрузится, подключаемся по ADB и восстанавливаем основной загрузчик простым копированием резервного:

$ adb shell
> su
> dd if="/dev/block/mmcblk0p15" of="/dev/block/mmcblk0p12" // для Nexus 4
> dd if="/dev/block/mmcblk0p11" of="/dev/block/mmcblk0p6" // для Nexus 5
> dd if="/dev/block/mmcblk0p13" of="/dev/block/mmcblk0p7" // для Nexus 6
Вывод разделов Nexus 5 с помощью эмулятора терминала на прошивке ниже 6.0
Вывод разделов Nexus 5 с помощью эмулятора терминала на прошивке ниже 6.0
 

Проблема #11. QHSUSB_BULK

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

Чтобы выдернуть из устройства данные, необходимо первым делом скачать актуальную версию Ext2fsd, установить ее и перегрузить комп. После последующего запуска проги в открывшемся окне находим диск, соответствующий объему телефона. На этом диске нажимаем правой кнопкой и выбираем ext2 Management. В открывшемся меню ставим галочки «Mount volume in readonly mode» и «Autonatically mount via Ext2Mgr» (напротив выбираем букву диска). После чего можно нажать Apply и вытаскивать информацию через проводник или Total Commander.

Чтобы восстановить работоспособность телефона, необходимо скачать и установить QHSUSB_Driver, после чего телефон должен определиться как Qualcomm HS-USB QDLoader 9008. Далее понадобятся специфические файлы для устройства и утилиты BoardDiag и LG Flashtool. Полную инструкцию можно найти на форуме.

 

Выводы

Как видишь, даже в случае больших поломок с аппаратом все еще можно хоть с трудом, но работать или по крайней мере вытащить из него важную информацию. А уж Nexus убить практически нереально. Надо очень постараться умышленно прошить файл от другого устройства или выдернуть шнур в момент прошивки. Надеюсь, этой статьей я подвигну тебя к изучению внутренностей и принципов работы устройств и помогу сэкономить нервы при будущих поломках.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    8 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии