В один прекрасный день ко мне в руки попал Nexus 4. В наших краях это редкость, поэтому хотелось бы использовать его как основной телефон. К сожалению, тач у него разбит. Одна из болячек всех современных смартфонов. Ну, решено было восстанавливать. Купил тач на ebay. Теперь ждать слоупочту россии месяцок-другой. Захотелось узнать о девайсе побольше, поработать с ним, пока посылка едет. Заодно проверить, всё ли работает. А то, может, камера или динамики тоже покрошились. В данной статье рассмотрим захват управления девайсом, если сломан тач.
Сведения
В ходе испытания будут использованы nexus 4, usb кабель, ubuntu как ось для работы, информация из интернета и
Первым делом хочется отметить — телефон полностью в стоковом состоянии. Предыдущий владелец сделал полный сброс всех данных. После включения появляется экран Welcome с выбором языка. Управление устройством никак нельзя осуществить без дальнейшего вмешательства.
Напомню, у nexus 4 нету OTG, поэтому мышь подключить к нему нельзя без специального кабеля с внешним питанием. Такого у меня нету, можно заказать на том же ebay, но опять ждать.
Фигачим
Первым делом я поставил CWM.
Устанавливаем программы для работы с андроидами:
sudo apt-get install android-tools-adb
Это и fastboot, и adb.
Поставить рекавери можно через fastboot:
fastboot flash recovery recovery.img
Естественно, выбрана notouch версия. Кстати, я еще разблокировал бутлоадер (команда fastboot oem unlock). Поменял прошивку на последнюю сразу. Уже и не помню, зачем. Для других телефонов нужно искать свои инструкции. У каких-то устройств можно поставить через встроенный рекавери, у каких-то есть специальные программы для прошивки.
Загружаемся в CWM. Ищем пункт mounts and storage и монтируем system (или потом сделать это через adb — mount -o remount,rw /system). Пригодится.
В консоле на компьютере пишем
adb devices
Выдает циферки и recovery. То, что и нужно!
Отлично. В наши задачи входит: скипнуть welcome экран и включить usb отладку.
Для этого скачиваем build.prop в текущую папку
adb pull /system/build.prop ./
Открываем скачанный файл и заменяем строку:
ro.setupwizard.enterprise_mode=1
на
ro.setupwizard.enterprise_mode=0
ro.setupwizard.mode=DISABLED
persist.service.adb.enable=1
persist.service.debuggable=1
persist.sys.usb.config=mtp,adb
Если считаете нужным, можете подправить еще какие другие строки. Я вроде отключал экран блокировки для удобства, но сейчас уже лень искать какая строка отвечает. Если не сложно, уточните в комментах.
Сохраняем и загружаем обратно.
adb push ./build.prop /system/
Пропишем последние строки и в default.prop. На всякий случай.
adb shell
echo "persist.service.adb.enable=1" >> default.prop
echo "persist.service.debuggable=1" >> default.prop
echo "persist.sys.usb.config=mtp,adb" >> default.prop
Попробуем перезагрузиться
Эран сбросился.
Однако adb devices показывает offline.
Убиваем adb командой
adb kill-server
Делаем запрос adb devices
Всё еще offline. Кажется, приплыли. Но нет! Дело в ключах.
Ищем в домашней дирректории папку /.android
Там должен был сгенерироваться файл adbkey.pub. Его нужно закинуть на девайс.
Перезагружаемся в рекавери, монтируем data, выполняем
cd ~/.android
adb push ./adbkey.pub /data/misc/adb/adb_keys
Перезагружаемся снова. Смотрим adb devices — всё есть!
Далее я, например, прописал кнопкам на нампаде команды adb shell input keyevent XX
1 --> «KEYCODE_MENU»
2 --> «KEYCODE_SOFT_RIGHT»
3 --> «KEYCODE_HOME»
4 --> «KEYCODE_BACK»
5 --> «KEYCODE_CALL»
6 --> «KEYCODE_ENDCALL»
7 --> «KEYCODE_0»
8 --> «KEYCODE_1»
9 --> «KEYCODE_2»
10 --> «KEYCODE_3»
11 --> «KEYCODE_4»
12 --> «KEYCODE_5»
13 --> «KEYCODE_6»
14 --> «KEYCODE_7»
15 --> «KEYCODE_8»
16 --> «KEYCODE_9»
17 --> «KEYCODE_STAR»
18 --> «KEYCODE_POUND»
19 --> «KEYCODE_DPAD_UP»
20 --> «KEYCODE_DPAD_DOWN»
21 --> «KEYCODE_DPAD_LEFT»
22 --> «KEYCODE_DPAD_RIGHT»
23 --> «KEYCODE_DPAD_CENTER»
24 --> «KEYCODE_VOLUME_UP»
25 --> «KEYCODE_VOLUME_DOWN»
26 --> «KEYCODE_POWER»
27 --> «KEYCODE_CAMERA»
28 --> «KEYCODE_CLEAR»
29 --> «KEYCODE_A»
30 --> «KEYCODE_B»
31 --> «KEYCODE_C»
32 --> «KEYCODE_D»
33 --> «KEYCODE_E»
34 --> «KEYCODE_F»
35 --> «KEYCODE_G»
36 --> «KEYCODE_H»
37 --> «KEYCODE_I»
38 --> «KEYCODE_J»
39 --> «KEYCODE_K»
40 --> «KEYCODE_L»
41 --> «KEYCODE_M»
42 --> «KEYCODE_N»
43 --> «KEYCODE_O»
44 --> «KEYCODE_P»
45 --> «KEYCODE_Q»
46 --> «KEYCODE_R»
47 --> «KEYCODE_S»
48 --> «KEYCODE_T»
49 --> «KEYCODE_U»
50 --> «KEYCODE_V»
51 --> «KEYCODE_W»
52 --> «KEYCODE_X»
53 --> «KEYCODE_Y»
54 --> «KEYCODE_Z»
55 --> «KEYCODE_COMMA»
56 --> «KEYCODE_PERIOD»
57 --> «KEYCODE_ALT_LEFT»
58 --> «KEYCODE_ALT_RIGHT»
59 --> «KEYCODE_SHIFT_LEFT»
60 --> «KEYCODE_SHIFT_RIGHT»
61 --> «KEYCODE_TAB»
62 --> «KEYCODE_SPACE»
63 --> «KEYCODE_SYM»
64 --> «KEYCODE_EXPLORER»
65 --> «KEYCODE_ENVELOPE»
66 --> «KEYCODE_ENTER»
67 --> «KEYCODE_DEL»
68 --> «KEYCODE_GRAVE»
69 --> «KEYCODE_MINUS»
70 --> «KEYCODE_EQUALS»
71 --> «KEYCODE_LEFT_BRACKET»
72 --> «KEYCODE_RIGHT_BRACKET»
73 --> «KEYCODE_BACKSLASH»
74 --> «KEYCODE_SEMICOLON»
75 --> «KEYCODE_APOSTROPHE»
76 --> «KEYCODE_SLASH»
77 --> «KEYCODE_AT»
78 --> «KEYCODE_NUM»
79 --> «KEYCODE_HEADSETHOOK»
80 --> «KEYCODE_FOCUS»
81 --> «KEYCODE_PLUS»
82 --> «KEYCODE_MENU»
83 --> «KEYCODE_NOTIFICATION»
84 --> «KEYCODE_SEARCH»
85 --> «TAG_LAST_KEYCODE»
Хотя можно просто поставить VNC сервер (нужен рут).
Я поставил через adb
adb install vncfwq_1386321119498.apk
adb shell am start -n com.schumi.vncs/com.schumi.vncs.VNC_serverActivity
С нумпада поставил настройки, включить получилось командой тыка в зону off — adb shell input tap 400 300 (это координаты тыка)
Ну и чтобы не лезть в настройки вайфай
adb forward tcp:5901 tcp:5901
Запускаем vnc клиент, вводим localhost:5901 и делаем всё, что душе угодно.
На этом всё. Прочного вам стекла, уважаемые!
PS: думаю, всё тоже можно сделать с разбитым дисплеем. Нужно только делать скриншоты. Вроде как мануал.
Автор: Squier