Содержание статьи
- Проблема #1. Телефон не загружается
- Проблема #2. Телефон не включается
- Проблема #3. Телефон не звонит
- Проблема #4. Не работает тачскрин
- Проблема #5. Не работает USB
- Проблема #6. Не работает кнопка питания
- Проблема #7. Ты забыл PIN-код
- Проблема #8. Запрос аккаунта Google после сброса до заводских настроек
- Проблема #9. Не работает мобильная связь, Wi-Fi, отваливается карта памяти
- Проблема #10. Черный экран при включении
- Проблема #11. QHSUSB_BULK
- Выводы
Мобильные устройства настолько тесно переплелись с повседневной жизнью, что отсутствие смартфона под рукой может вызвать панику. А уж если он сломался, то и говорить нечего. Для многих это грозит потерей тысяч нервных клеток. В этой статье мы рассмотрим способы восстановления работоспособности устройства при некоторых «поломках», научимся частично восстанавливать его функции до покупки нового и доставать важную информацию из разбитого телефона.
Идеальный вариант для описанных действий — это телефон с разблокированным загрузчиком, установленным кастомным рекавери TWRP (CWM давно не обновляется), с наличием прав root и галочкой «Отладка по USB» в настройках для разработчиков. Такая мелочь, как эта самая галочка, позволит в случае разбитого экрана не только вытащить данные с карты памяти, но и достать базы контактов или СМС, используя плагин ADB для Total Commander.
Рекомендую проделать эти манипуляции сразу, чтобы не было мучительно больно, когда возникнут проблемы с телефоном. Все примеры будут даны для Nexus 5, как самого распространенного эталонного Android-смартфона.
INFO
Чтобы попасть в раздел «Для разработчиков», нужно семь раз тапнуть на номер сборки в меню «О телефоне».
Проблема #1. Телефон не загружается
Начнем с наиболее частых проблем. Телефон перестал загружаться. Постоянно висит логотип Google, и дальше дело не идет. Имеем классический бутлуп (bootloop — загрузка по кругу). Может наступить после ежемесячного обновления безопасности устройства даже у пользователей со стоковой прошивкой, которые никогда не лезли в систему. Решений три:
- сделать сброс из стокового рекавери (приведет к потере всех данных) или из TWRP (данные не пропадут);
- прошить из стокового рекавери через sideload полный ОТА-образ в формате ZIP, который с мая Google начала выкладывать для общего пользования, чем очень упростила жизнь многим пользователям (данные не пропадут);
- прошить полный образ прошивки, предварительно убрав -w из скрипта flash-all.bat, чтобы не потерять данные.
Xakep #211. Когда «Окна» смотрят в тебя
Проблема #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
где шесть цифр в конце и есть искомый код.
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. Если это критично, то можно предпринять дополнительные шаги:
- Скачиваем файлы.
- Устанавливаем HexEditor.
- Произвольно меняем значения у двух файлов в архиве.
- Внутри /persist создаем папку bluetooth.
- С помощью проводника, например ES File Explorer, меняем свойства папки (нужен рут и показ скрытых файлов в настройках): owner —
bluetooth
, group —system
, permissions —-rwxrwx---
. - Внутри /persist создаем папку wifi и аналогично выставляем свойства: owner —
wifi
, group —system
, permissions —-rwxrwx---
. - Закидываем файлы из архива в созданные папки: .bdaddr в bluetooth и .macaddr в wifi.
- Меняем разрешения у файлов на 660 (
-rw-rw---
). - Перегружаем устройство.
Проблема #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
Проблема #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 убить практически нереально. Надо очень постараться умышленно прошить файл от другого устройства или выдернуть шнур в момент прошивки. Надеюсь, этой статьей я подвигну тебя к изучению внутренностей и принципов работы устройств и помогу сэкономить нервы при будущих поломках.