Android: Wgrywanie update.zip przez ADB sideload via TWRP recovery
Spis tre艣ci
Po uszkodzeniu jednego z moich smartfon贸w TP-LINK i skasowaniu na nim wszystkich danych na partycji
/system/
trzeba by艂o pomy艣le膰 nad przywr贸ceniem tego urz膮dzenia do 偶ycia. Jednym z rozwi膮za膰 by艂o
binarne wgranie obrazu systemowej partycji bezpo艣rednio na flash przy pomocy narz臋dzia dd. Co
jednak w przypadku, gdy nie mamy dost臋pu do backup'u lub tez zwyczajnie go nie zrobili艣my? Co w
takiej sytuacji uczyni膰 i czy jest jaka艣 nadzieja dla naszego telefonu? Odpowied藕 jest naturalnie
twierdz膮ca ale wymagane s膮 dwie rzeczy: dzia艂aj膮cy tryb recovery (najlepiej TWRP) ze wsparciem dla
trybu "ADB sideload" oraz paczka update.zip
z firmware, kt贸r膮 mo偶na pobra膰 bezpo艣rednio ze strony
TP-LINK/Neffos. By ul偶y膰 nieco osobom, kt贸re do mnie pisz膮 z zapytaniem o pomoc w przypadku
skasowania danych na partycji /system/
(czy uszkodzenia jej w jaki艣 spos贸b), postanowi艂em napisa膰
kr贸tkie howto na temat u偶ywania trybu ADB sideload. W tym artykule w rolach g艂贸wnych we藕mie udzia艂
Neffos Y5 ale bez problemu mo偶na te kroki przeprowadzi膰 chyba na ka偶dym innym smartfonie.
Objawy usuni臋cia danych z partycji /system/
Usuwaj膮c dane z partycji /system/
pozbawiamy nasz telefon praktycznie ca艂ego oprogramowania. Taki
smartfon nie mo偶e dzia艂a bez Androida czy innego systemu operacyjnego i w zasadzie urz膮dzenie
resetuje si臋 co oko艂o minut臋 po w艂膮czeniu.
W takim stanie po w艂膮czeniu smartfona, na ekranie mo偶na zobaczy膰 jedynie loga TP-LINK i Androida. Natomiast w logu systemowym mojego Debiana mo偶na zaobserwowa膰 poni偶sze komunikaty:
kernel: usb 2-1.1: new high-speed USB device number 7 using ehci-pci
kernel: usb 2-1.1: New USB device found, idVendor=2357, idProduct=0328
kernel: usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
kernel: usb 2-1.1: Product: Android
kernel: usb 2-1.1: Manufacturer: Android
kernel: usb 2-1.1: SerialNumber: 90169635
kernel: usb 2-1.1: USB disconnect, device number 6
Gdy dane z partycji /system/
zosta艂y usuni臋te, to nie damy rady wgra膰 nic na smartfon przy pomocy
narz臋dzia fastboot
. Dlatego w艂a艣nie wymagany jest dzia艂aj膮cy tryb recovery. Je艣li ten r贸wnie偶 z
jakiego艣 powodu nie dzia艂a, to niestety uwalili艣my telefon na dobre i trzeba b臋dzie go odes艂a膰 do
serwisu.
Dzia艂aj膮cy TWRP recovery z trybem ADB sideload
Dla os贸b, kt贸re nie wiedz膮 czym jest ADB sideload, wyja艣niam, 偶e jest jeden z tryb贸w pracy ADB.
Standardowo przy pomocy adb
mo偶emy rozmawia膰 z systemem smartfona przez wysy艂anie do niego r贸偶nych
polece艅 i w zasadzie mo偶emy operowa膰 na takim urz膮dzeniu mniej wi臋cej tak jakby艣my dzia艂ali na
zwyczajnym linux'ie. W przypadku trybu ADB sideload, te standardowe polecenia s膮 nieaktywne ale
mamy za to dost臋p do komendy adb sideload
, kt贸ra jest w stanie wgra膰 艣wie偶y firmware z paczki
update.zip
.
TWRP recovery pocz膮wszy od wersji 2.3 wspiera tryb ADB sideload. Dlatego te偶 trzeba si臋 upewni膰, 偶e mamy wgran膮 na smartfonie w miar臋 now膮 wersj臋 tego oprogramowania. Gotowe obrazy TWRP recovery dla smartfon贸w Neffos s膮 dost臋pne w tym w膮tku.
W przypadku, gdy mamy starsz膮 wersj臋 TWRP (< 2.3), no to niestety musimy zaktualizowa膰 to
oprogramowanie wgrywaj膮c binarnie obraz przy pomocy dd
mniej wi臋cej w taki sam spos贸b jak zosta艂o
to opisane przy okazji odzyskiwania partycji /system/
(link we wst臋pie).
ADB sideload i stock'owy recovery
Nie jestem pewien czy ADB sideload dzia艂a na stock'owym recovery. Wiem, 偶e smartfony oferuj膮
mo偶liwo艣膰 wgrywania pliku update.zip
z trybu recovery ale nie wiem jak si臋 zachowa system, gdy
jedna lub kilka partycji ( /boot/
, /system/
, /recovery/
) zosta艂y w jaki艣 spos贸b zmienione.
Dlatego to HOWTO dotyczy jedynie TWRP recovery, na kt贸rym pomy艣lnie uda艂o mi si臋 przetestowa膰 ADB
sideload.
Pozyskanie pliku update.zip zawieraj膮cego firmware smartfona
ADB sideload potrzebuje pliku z obrazem firmware (ROM). Stock'owy ROM mo偶na pobra膰 ze strony
TP-LINK/Neffos. Linki do dzia艂u download: Neffos Y5, Neffos Y5L, Neffos C5, Neffos
C5 MAX. Pliki s膮 w miar臋 du偶e i wa偶膮 oko艂o 1 GiB. Ka偶dy z tych plik贸w w nazwie zawiera
oznaczenie modelu, np. C5_Max_TP702A
, Y5L_TP801
. Tutaj mamy TP702
i TP801
oraz w
przypadku tego pierwszego mamy r贸wnie偶 literk臋 A
, kt贸ra odpowiada za wersj臋 geograficzn膮 i w tym
przypadku A
jest dla smartfon贸w na rynku europejskim.
Jak wgra膰 update.zip przez ADB sideload z poziomu TWRP recovery
Pobrany firmware jest w postaci spakowanego pliku .zip
. Tego pliku nie wypakowujemy. Zostanie on
za艂adowany do pami臋ci RAM komputera, a jego zawarto艣膰 w locie przes艂ana na smartfon bez potrzeby
wgrywania tego pliku na flash urz膮dzenia. Ta paczka zawiera nie tylko oprogramowanie, kt贸re jest
wgrywane na partycj臋 /system/
ale r贸wnie偶 obraz partycji /boot/
, za spraw膮 kt贸rego zostanie
wygenerowany te偶 艣wie偶y obraz partycji /recovery/
. Wszystkie te trzy partycje b臋d膮 poddane
procesowi flash'owania i po jego uko艅czeniu powinni艣my powr贸ci膰 do stock'owego firmware.
Pliki update.zip
s膮 podpisane cyfrowo i domy艣lnie nie damy rady ich wgra膰 przez TWRP recovery, bo
zostanie nam wygenerowany poni偶szy b艂膮d:
sideload-host file size 968174348 block size 65536
Installing zip file '/sideload/package.zip'
Verifying zip signature...
I:read key e=3 hash=20
I:1 key(s) loaded from /res/keys
I:comment is 1428 bytes; signature 1410 bytes from end
I:TWFunc::Set_Brightness: Setting brightness control to 5
I:TWFunc::Set_Brightness: Setting brightness control to 0
I:failed to verify against RSA key 0
E:failed to verify whole-file signature
I:Zip signature verification failed: 1
Zip signature verification failed!
I:Signaling child sideload process to exit.
I:Waiting for child sideload process to exit.
sideload_host finished
Problem jak wida膰 dotyczy weryfikacji sygnatury pliku .zip
. Musimy zatem poinstruowa膰聽TWRP by nie
weryfikowa艂 sygnatury. Mo偶emy to zrobi膰 odhaczaj膮c opcj臋聽ZIP signature verification
w
ustawieniach:
Teraz mo偶emy aktywowa膰 tryb ADB sideload przechodz膮c w Advanced => ADB Sideload:
Czyszczenie cache jest opcjonalne ale mo偶na je zaznaczy膰. Dane u偶ytkownika i tak pozostan膮
nietkni臋te, zatem bez obaw. Niemniej jednak, trzeba pami臋ta膰, 偶e w przypadku modyfikacji partycji
/system/
, np. przez Xposed, mo偶emy napotka膰 dziwne problemy, kt贸re mog膮 uniemo偶liwi膰 start lub
te偶 poprawne dzia艂anie systemu i wymagane b臋dzie przeprowadzenie procesu Factory Reset.
Po przesuni臋ciu trzech strza艂ek na praw膮 stron臋, ADB prze艂膮czy si臋 w tryb sideload. Teraz wracamy na
komputer i 艂adujemy plik update.zip
przy pomocy poni偶szego polecenia ( trzeba doinstalowa膰
narz臋dzie adb):
# adb sideload /neffos/Y5_H10S100D00B20161207R1344_update.zip
serving: '/neffos/Y5_H10S100D00B20161207R1344_update.zip' (~24%)
Proces flash'owania plikiem update.zip
zajmie d艂u偶sz膮 chwil臋 ale ostatecznie powinien zako艅czy膰
si臋 powodzeniem:
Uruchamiamy smartfon ponownie i ignorujemy przy tym informacj臋, 偶e to urz膮dzenie nie mam zainstalowanego systemu operacyjnego (w zasadzie w艂a艣nie go zainstalowali艣my):
Po chwili powinien nam si臋 za艂adowa膰 ekran z wyborem j臋zyka systemu:
Po skonfigurowaniu systemu warto sprawdzi膰 czy s膮 dost臋pne jakie艣 aktualizacje. To na wypadek,
gdyby艣my chcieli wgra膰 sobie jeszcze raz TWRP recovery czy przeprowadza膰 proces root Androida. W
przypadku wprowadzenia jakichkolwiek zmian na partycji /boot/
, /system/
lub /recovery/
nie
b臋dziemy w stanie tych aktualizacji wgra膰 na smartfon i warto o tym pami臋ta膰.