Od kilku już lat (!) jako podstawowego telefonu używam Motoroli Moto G pierwszej generacji (XT1032/falcon). Telefon najpierw kupiłem z zamiarem użytkowania jako deweloperski, na potrzeby testów aplikacji, ale szybko postanowiłem kupić również sztukę “dla siebie”, choć w tym przypadku zdecydowałem się na wersję z 16 GB pamięci wewnętrznej.

Telefon fabrycznie dotarł do mnie chyba z Androidem w wersji 4.4, później dostał wersję 5.0, co sprawiło, że odłożyłem myśl o zakupie czegoś nowego, bo całość zaczęła działać jeszcze sprawniej. Android 5.1 to już wprawdzie nie była aż taka rewolucja, ale wystarczyło, by telefon ponownie przedłużył swoje życie.

Od kilkunastu dni działa na nim Android w wersji 6.0, i nawet 1 GB pamięci RAM przestał na razie przeszkadzać…

Motorola Moto G (XT1032)

Oczywiście Android 6.0 na moim telefonie nie pojawił się jako standardowa aktualizacja, bo zgodnie z wcześniejszymi informacjami dla tego modelu Android 5.1 był ostatnią wersją, jaka pojawi się w ramach aktualizacji od producenta.

I w sumie pogodziłem się z tym, tak samo jak z wizją zakupu nowego telefonu, nawet jak obecnie trudno o coś “sensownego w sensownej cenie” z wyświetlaczem poniżej 5″.

Niestety zanim dokonałem wyboru (i zakupu) telefon odmówił mi posłuszeństwa – często próba uruchomienia przeróżnych aplikacja kończyła się powrotem do ekranu głównego, a każde ponowne uruchomienie trwało wieczność, bo system każdorazowo “optymalizował aplikacje”, co dodatkowo skutecznie drenowało baterię…

Wprawdzie z założenia ten wpis będzie poradnikiem, to jego forma będzie miała postać historii opowiadającej o tym, jak chciałem w najprostszy możliwy sposób przywrócić system na moim telefonie do pełnej sprawności. Więc zaczniemy od (próby) resetu telefonu do ustawień fabrycznych, dalej odblokujemy bootloader, a na końcu wgramy nowy system…

Reset do ustawień fabrycznych

Został reset telefonu do ustawień fabrycznych, którego wprawdzie chciałem tego uniknąć, bo w moim przypadku ponowna instalacja i konfiguracja wszystkich aplikacji to od kilku do kilkunastu godzin (zwłaszcza różne VPNy, konta SSH/SCP), ale nie było wyjścia – wszystkie mniej radykalne metody nie przyniosły rezultatu.

Ale jak już się sypie, to się sypie na całego – z menu telefonu reset nic nie dał, telefon cały czas trzymał ustawienia, a jedynym efektem było to, że przy jeszcze więcej aplikacji nie działało dobrze.

Fastboot Mode

Postanowiłem spróbować zrestartować telefon z poziomu tzw. Fastboot Mode, do którego najprościej dostać się za pomocą komendy:

adb reboot bootloader

Możecie też – nawet na włączonym telefonie – naraz przytrzymać włącznik i przycisk “ciszej”, przez kilka sekund (5-8), ekran zrobi się czarny, a gdy po chwili puścicie, to powinien pojawić się tryb Fastboot.

Po podłączeniu telefonu do komputera w oknie Fastboot (na telefonie) powinna pojawić się informacja, że połączono przez USB.

Na komputerze możecie sprawdzić, czy Wasze urządzenie jest widoczne w systemie za pomocą komendy:

fastboot devices

Pamiętajcie też o kopii zapasowej…

W tym trybie mamy do dyspozycji menu, z poziomu którego mamy opcję resetowania ustawień telefonu – ale u mnie i ta metoda nic nie dała…

Fastboot Mode i reset z komputera

Kolejnym krokiem była próba zresetowania telefonu za pomocą trybu Fastboot, ale korzystając z ADB i kilku poleceń, m.in.:

android_fastboot_factory-reset_cmd

fastboot erase userdata
fastboot erase cache

Niestety również i ta metoda nic nie dała, więc uznałem, że pora na bardziej radykalne kroki…

Odblokowanie bootloadera

Postanowiłem odblokować bootloader, co nie dość, że powinno skutecznie wyczyścić wszystkie ustawienia w telefonie, to jeszcze w razie konieczności pozwoli wgrać ponownie system.

Wprawdzie jest to operacja szybka, i oficjalnie realizowana przez Motorole, to musicie mieć świadomość, że tracicie nie tylko dane/ustawienia, to dodatkowo – jeśli jeszcze obowiązuje – gwarancję na swoje urządzenie.

Niezbędne też będzie utworzenie tzw. Motorola ID, czyli powiązanie Waszego urządzenia np. z jakimś kontem Google, za pomocą którego później założycie konto na stronie Motoroli.

Telefon najprościej uruchomić w trybie Fastboot, a następnie korzystamy z komendy:

fastboot oem get_unlock_data

Dzięki temu uzyskamy 4 wiersze znaków, które będą niezbędne w dalszym procesie:

moto-g_unlock-bootloader_fastboot01

3AAB000042113536#52113945403017
3C5A2100585431303236000000#1A3A
9DA3091DA10C3AC3011A5433B7C32D3
D87CC#20D64B0102000000000000000
0000000

Zapis ten przekształcamy tak, by wszystko znalazło się w jednej linijce:

3AAB000042113536#521139454030173C5A2100585431303236000000#1A3A9DA3091DA10C3AC3011A5433B7C32D3D87CC#20D64B01020000000000000000000000

Uzbrojeni w te dane możemy udać się na stronę motorola-global-portal.custhelp.com, gdzie po zaakceptowaniu kilku ostrzeżeń trafimy na pole, gdzie należy wkleić wygenerowany wcześniej ciąg znaków:

moto-g_unlock-bootloader_www01

Po chwili na adres e-mail skojarzony z naszym kontem (i Motorola ID) przyjdzie e-mail z kodem, który będzie nam potrzebny w kolejnym kroku:

moto-g_unlock-bootloader_email01

Here is the unique code to unlock the bootloader of your Motorola phone.

Unlock Code: ATKDDSFRX2HITTATTYVS

W tym momencie wracamy do wiersza poleceń, i wpisujemy komendę:

fastboot oem unlock ATKDDSFRX2HITTATTYVS

I to tyle, bootloader powinien zostać odblokowany, a telefon po chwili zrestartowany:

moto-g_unlock-bootloader_fastboot02

Od razu rzuci Wam się pewnie nowy/dodatkowy ekran startowy, który już do końca będzie Wam przypominał o tym co właśnie zrobiliście:

moto-g_bootloader-unlocked-warning_info01

Oczywiście tym razem procedura wymazywania wszystkich danych przebiegła prawidłowo, ale telefon/system nadal nie zachowywał się stabilnie…

Ponowne wgranie fabrycznego Androida 5.1

Z racji tego, że z Androida w wersji 5.1 oficjalnie dostępnego na moim telefonie byłem dość zadowolony, to postanowiłem spróbować naprawić telefon poprzez ponowne wgranie obrazu tego systemu.

Miejsc, gdzie znajdziecie tego typu pliki jest sporo, ja zdecydowałem się na poszukanie obrazu na forum XDA Developers, a konkretnie na pobranie pliku XT1032_FALCON_RETGB_5.1_LPBS23.13-56-2_cid7_CFC.

Po rozpakowaniu archiwum wszystkie pliki przeniosłem do katalogu z ADB, telefon uruchomiłem w trybie Fastboot, po czym zacząłem kolejno wgrywać pliki związane z systemem:

fastboot flash partition gpt.bin
fastboot flash motoboot motoboot.img
fastboot flash logo logo.bin
fastboot flash boot boot.img
fastboot flash recovery recovery.img
fastboot flash system system.img_sparsechunk.0
fastboot flash system system.img_sparsechunk.1
fastboot flash system system.img_sparsechunk.2
fastboot flash system system.img_sparsechunk.3
fastboot flash modem NON-HLOS.bin
fastboot erase modemst1
fastboot erase modemst2
fastboot flash fsg fsg.mbn
fastboot erase cache
fastboot erase userdata
fastboot reboot

Trochę to trwało, ale po tej operacji telefon/system nadal działał niestabilnie, więc…

CyanogenMod 13 (Android 6.0)

Kiedyś nie przepadałem za CyanogenModem, ale minęło kilka lat, sam Android dojrzał, CyanogenMod też, i ostatni mój kontakt z nim na telefonie znajomego wspominałem całkiem pozytywnie, zwłaszcza że “narzuty” są minimalne, i tak naprawdę wizualnie mamy właściwie czystego Androida.

Akurat dobrze się też złożyło, że niedawno pojawiła się stabilna wersja systemu CyanogenMod w wersji 13 na mój telefon, która została oparta o system Android 6.0, a więc nowszy niż w oficjalnym oprogramowaniu, co powinno sprawić, że system (ponownie) będzie działał jeszcze szybciej.

Do wyboru jest kilka wersji, ja zdecydowałem się na najnowszą wersję stabilną dla mojego telefonu (falcon), czyli cm-13.0-20160820-SNAPSHOT-ZNH5YAO0J1-falcon.zip, którą znajdziecie na tej stronie.

cyanogenmod-13_moto-g_falcon_download

Do tego jeszcze niezbędne będzie nowe Recovery – tu możecie skorzystać z CyanogenMod Recovery, lub TWRP, na które ja się zdecydowałem, a które znajdziecie na tej stronie.

Open GAPPS

Wprawdzie sam Android jest otwartym systemem (Android Open Source Project / AOSP), to już aplikacje Google wprawdzie są w większości darmowe (dla konsumenta), to tu pojawiają się różne niuanse związane z licencjami i opłatami, dlatego w CyanogenMod nie znajdziemy ich w standardzie.

Niby nie jest to wielki problem, bo większość z nich można pobrać z Google Play, z tym, że najpierw trzeba mieć Sklep Google w systemie…

Na szczęście tu z pomocą przychodzi np. strona/serwis Open GAPPS, gdzie możemy wygenerować i pobrać paczkę z niezbędnymi/wybranymi aplikacjami, które wgramy na telefon.

open-gapps

W moim przypadku była to paczka na platformę ARM, i Androida w wersji 6.0, i… problem pojawił się przy wyborze wariantu, bo w każdym wyższych dochodzą kolejne aplikacje, co też wpływa na wielkość samej paczki. I to właśnie – jak się okazało – rozmiar paczki ma zasadnicze znaczenie, bo w przypadku Moto G (XT1032) próba instalacja którejś z większych paczek kończyła się błędem “error 70” (to chyba kwestia wielkości którejś z partycji “tymczasowych”), stąd ostatecznie zdecydowałem się na wersję “pico”, a resztę potrzebnych aplikacji można już zainstalować bezpośrednio z  Google Play.

Instalacja

Instalacja jest dość standardowa, czyli… wracamy do trybu Fastboot, i zaczynamy od wgrania do telefonu nowego Recovery:

fastboot flash recovery twrp-3.0.2-0-falcon.img

Podczas tej operacji gdzieś tam pojawił się jakiś błąd (mismatched partition size error), ale nie ma co się nim przejmować – w tym momencie możemy już uruchomić Recovery, z poziomu którego wykonamy już dalsze operacje (choć komputer będzie jeszcze potrzebny).

W tym momencie za pomocą ADB (telefon w trybie Recovery) kopiujemy pobrany obraz systemu (cm.zip), aplikacje Google (gapps-pico.zip) na “kartę pamięci”:

adb push cm.zip /sdcard/
adb push gapps-pico.zip /sdcard/

Teraz wystarczy już w Recovery wybrać “install”, następnie wybrać plik z systemem (cm.zip), i na koniec zainstalować jeszcze GAPPSy (gapps-pico.zip).

W tym momencie – jeśli wszystko przebiegnie bez błędów – możemy cieszyć się już nowym systemem:

cyanogenmod-13_moto-g_falcon

(!) Zgłoś błąd na stronie | Lub postaw nam kawę :-)
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk