Невинное, казалось бы, желание снять на смартфон фотосферу привело меня к тернистому пути и грустным размышлениям о совместимости софта в эпоху открытых стандартов и OpenSource:
Крупные производители смартфонов (Google, Samsung, Xiaomi, Microsoft и т.д.) пошли по стопам Apple и каждый создает свою экосистему приложений и сервисов (например, у каждого производителя есть своя система резервного копирования информации с телефона, у некоторых своя платежная система и т.д.) Суть в том, чтобы пользователям было комфортно находиться внутри экосистемы, где есть все, что нужно для жизни. Но как только ты пытаешься перейти границу, то это боль и страдание. И тут три варианта:
- Полностью переходить на другую систему, что связано со значительными денежными и временными затратами на период привыкания;
- Забить;
- Ежик на кактусе)
Дальше я опишу свой путь к счастью, т.к. на меня он произвел неизгладимое впечатление по времени, интеллектуальным усилиям и нервным затратам) Но большинству моя история не поможет т.к. ряд шагов должен быть уникальным в зависимости от производителя, модели телефона, версий прошивок и используемых приложений…
Фотосферы умеет снимать Google StreetView, но сохраняет их только в своем сервиса, а мне хотелось сделать собственную коллекцию. Интернет показал, что есть выбор приложений для съемки панорам 360, а вот фотосферы умеет снимать Goggle Camera ) Ну и ладно, сделали offline приложение и на том спасибо, иду в PlayMarket…
и вот тут началось…
Осознание задачи:
- Иду в PlayMarker, нашел Google Camera, но загрузить не дает, пишет — несовместимое устройство… Странно телефон (Xiaomi Mi6) новый, Андроид свежий, иду на форумы…
- Говорят, что действительно, с PlayMarket Google Camera устанавливается только на гуглофоны, а остальные должны качать apk c альтернативных сайтов
- Ok нашел, скачал — не запускается, попробовал несколько версий — не запускается, вылезают какие-то ошибки в Java
- Опять иду на форумы, действительно говорят, чтобы запустить Google Camera на смартфоне должно быть активировано (что бы это ни значило) «Camera 2API»
- Проверить наличие «Camera 2API» можно приложением Manual Camera — запускаю, все красное…
- Смотрим дальше — чтобы активировать «Camera 2API» надо для начала зарутить смартфон, приехали… рутить не хочется, т.к. pros меня не вдохновляют, а вот cons настораживают:
- потеря гарантии
- больше уязвимость для вирусов
- ряд программ не запускаются, например банковские
- О на форуме Xiaomi говорят, что для данной задачи есть вариант без рута, т.к. надо всего добавить один параметр в конфиг! Отлично!
- Но для начала процедуры нужно проделать 3 подготовительных действия:
- На смартфоне сделать Unlock bootloader
- Установить на компе adb and fastboot
- На смартфоне установить Twrp
- Было бы проще, если бы я знал, что это за неведомые слова… )
- Начинаю разбираться… во всех инструкциях предупреждают, что на каждом шаге телефон может превратиться в brick, поэтому делаю бекап и иду осторожно…
-
Unlock bootloader
- bootloader — это такая короткая программа, которая при включении запускает смартфон в разных режимах:
- обычная загрузка
- fastboot — голый Linux
- recovery — программа для восстановления. Вот для ее изменения и нужно разблокировать bootloader.
- Инструкция для разблокировки bootloader Xiaomy: https://androidp1.ru/razblokirvat-bootloader-xiaomi/
- Создаю Mi Account
- Посылаю запрос китайцам на разрешение разблокировки. Пишут что запрос может обрабатываться несколько дней..
- Повезло — SMS с разрешением получил на следующий день!
- В настройках смартфона активизирую «Developer options»
- Включаю «Debug по USB»
- Скачиваю с сайта программу для разблокировки — есть только для винды
- Запускаю, пытаюсь сделать unlock
- Не получается — говорит надо связать устройство и Mi Account
- Ok иду в developer опции, пытаюсь связать, не получается — вылезает ошибка с загадочным номером и расшифорвкой иероглифами
- Иду на форумы, ага все понятно — на телефоне установлена прошивка Global, а для разблокировки нужна Develp
- Ok, скачиваю прошивку Develp. Прошивки для Mi6
- Начинаю обновлять — смартфон пишет, что все данные точно потеряю…
- Делаю еще раз бекап на Google и Mi Account.
- Перепрошил, при начальной загрузке восстановил данные с бекапов. Неплохо — для восстановления остатков всего нужно час — два.
- Получилось связать устройство и Mi account!
- Радостно запускаю unloсk, опять ошибка — теперь просят подождать еще 71 час до следующей попытки разблокировки. Ребята подстраховались с запасом)
- Выдыхаю, жду 3 дня…
- Запускаю unlock, нажимаю заветную кнопку — bootloader разблокирован! Но, устройство опять чистое, привычно восстанавливаю из бекапа…
-
Установить на компе adb and fastboot
- Это такие специальные программы:
- adb — для управления телефоном с компа, например загрузить, скачать файлы, перегрузить в разных режимах
- fastboot — для прошивки телефона
- Для Linux установка вообще не проблема — запускаю стандартные yum install
- Изучаю команды adb и fastboot ну все вроде понятно, привычная консоль Linuxa:
-
Устанавливаю Twrp на смартфон
- Twrp — это альтернативный программа для восстановления смартфонов:
- Ну разумеется надо найти версию для своего:
- Подсоединился по USB к компу
- Проверяю, устройство есть в списке:
- adb devices
- Загрузился в fastboot командой:
- adb reboot-bootloader
- Проверяю:
- fastboot devices
- Прошиваю Twrp:
- fastboot flash recovery twrp.img
- Перегружаюсь в Recovery, надо еще прошить lazyflasher
- lazyflasher — это такой патч, чтобы родная прошивка не сносила Twrp, как чужеродную программу
- lazyflasher был скопирован на внутреннюю память, но доступа к внутренней памяти у Twrp нет…
- Ну и ладно — Android — это же Linux, а там есть tmp, копирую, запускаю оттуда — все теперь в качестве recovery у меня Twrp
-
Активизация «Camera 2API»
- Можно переходить к полезной работе, которая заключается в добавлении одной строки в файл build.prop
- Скачиваю build.prop со смартфона
- adb pull /system/build.prop
- Добавляю строку
- persist.camera.HAL3.enabled=1
- Сохраняю
- adb push build.prop /system/
- ставлю правильные права
- adb shell
- chmod 644 /system/build.prop
- Перегружаю, запускаю проверку телефона (Manual Camera) — все красное, поддержки нет…
-
Прошивка заново
- Думаю… из общих соображений понятно, что исправить файл конфигурации мало, надо еще или библиотеки обновить или прошивку другую…
- Ищу на форумах, ничего конкретного, решил для начала поставлю первоначальную прошивку Global…
- Скачал из ранее найденного места
- Скопировал на внутреннюю память, запустил перепрошивку
- После перезагрузки процесс прошивки перехватил Twrp, а у него нет доступа к внутренней памяти, прошивка слетела, телефон перестал загружаться…
- Вот и первый кирпич…
- Скопировал прошивку в tmp, думал как с lazyflasher поможет. Запустил оттуда — та же проблема, перепрошивка слетает…
- Смотрим на форумах да есть такая проблема у Twrp, дело в том что внутренняя память зашифрована и для доступа надо ввести пароль, я бы рад но негде, советы не помогают:
- Думаем… решил действовать радикально, т.к. терять уже нечего — форматирую внутреннюю память, в результате шифрование снимается — доступ у Twrp есть
- Копирую, на внутреннюю память прошивку
- Запускаю процесс, прошилось успешно!
- Повторяю все шаги заново:
- Восстановил из бекапа данные
- Установил twrp и lazyflasher.zip
- отредактировал build.prop
- перегрузил
- Запустил Manual Camera — не верю глазам все зеленое!
- Радостно скачал последнюю Google Camera
- Установил — не работает, т.к. нужен 8 Andriod, а в этой прошивке 7…
- Скачал версии за последний год, начал устанавливать последовательно
- И вот чудо версия за июль 2017 года заработала!
- Первая сфера, правда для просмотра надо загружать на Google+, но это уже мелочи:
- The happy end!
-
Еще немного ссылок:
- Инструкция для установки TWRP Recovery for Redmi Note
- TWRP 3.2.1-0 for Xiaomi Mi6
- Google Camera загрузки
- “Установка Google Camera с режимом HDR+ на Xiaomi”
- [Tools, Tips & Tutorials] [GUIDE] TWRP, Magisk, Unlock Bootloader, relock, root, flash, update from A to Z
- Прошивки для Mi6
- Unlock bootloader
- http://en.miui.com/unlock/download_en.html
- https://androidp1.ru/razblokirvat-bootloader-xiaomi/
- Enable Camera2 API Without Root
- Enable Camera 2 API in Rooted MI Device