Jak usunąć blokadę bootloader'a (OEM lock) w smartfonie z Androidem

Spis treści

Eksperymentując ostatnimi czasy ze smartfonami mającymi na pokładzie system Android nie zdarzyło mi się jeszcze, by jakoś poważniej taki telefon uszkodzić. Oczywiście wiele razy złapałem soft brick'a (bootloop i inne takie) ale w zasadzie bez większego problemu szło z takiej sytuacji wybrnąć. Dziś jednak sprawa była nieco bardziej poważna, bo mój Neffos X1 nie chciał się po prostu uruchomić, a konkretnie to pojawiało się logo TP-LINK i Android i telefon na tym ekranie startowym się zwyczajnie zawieszał. Pikanterii dodaje jeszcze fakt, że przed sprawdzeniem czy telefon działa poprawnie, zablokowałem bootloader przez fastboot oem lock . Naturalnie bootloader można odblokować też przy użyciu fastboot ale po zresetowaniu urządzenia, ta opcja, którą się przełącza w ustawieniach deweloperskich automatycznie wraca do pozycji zablokowanej. W taki sposób, by odblokować bootloader ponownie, trzeba wejść w te opcje jeszcze raz i tam ściągnąć pierw blokadę OEM, a dopiero później można mówić o bawieniu się fastboot . A jak niby mamy wejść w te ustawienia jeśli system nie chce wystartować, a my mamy stock'owy firmware producenta smartfona? Czy taki stan rzeczy oznacza trwałe uszkodzenie telefonu?

Tryb recovery, reset ustawień do fabrycznych i SP Flash Tool

W pewnej części smartfonów prawdopodobnie nie damy rady nic zrobić w przypadku, gdy system takiego urządzenia zawiesza się podczas jego startu. Można oczywiście próbować odratować telefon przez tryb recovery, o ile ten w ogóle działa. W moim przypadku jednak zresetowanie ustawień Neffos'a X1 do fabrycznych nie naprawiało problemu i w dalszym ciągu telefon zawieszał się na ekranie z animacją.

Jako, że Neffos X1 jest wyposażony w SoC od Mediatek, to na samym początku jak się tylko zacząłem nim bawić zrobiłem backup całej przestrzeni flash'a w tym smartfonie. Mając zrobiony kompletny backup, myślałem, że przywrócenie kilku partycji przyniesie jakieś efekty. Ostatecznie skończyło się na tym, że przywróciłem cały ROM, a Neffos X1 w dalszym ciągu odmawiał współpracy. Nie wiem co mogło się popsuć, że po przywróceniu całego fabrycznego ROM'u telefon nie startuje.

TWRP recovery

Oczywiście mając możliwość skorzystania z SP Flash Tool, można z pominięciem tej blokady OEM wgrywać obrazy na dowolne partycje. Można zatem poszukać na necie obrazu TWRP i wgrać go za pomocą tego narzędzia na partycję recovery. Trzeba tylko posiadać odpowiedni plik scatter.txt . Niestety w przypadku tych niezbyt popularnych smartfonów, możemy mieć problem ze znalezieniem czy to pliku scatter.txt , czy też obrazu TWRP. Tak właśnie sprawa wygląda w przypadku tego Neffos'a X1.

Oczywiście ja sobie już przygotowałem odpowiedni plik scatter.txt oraz obraz TWRP i udało mi się odratować smartfon przez ADB sideload wgrywając paczkę ZIP pobraną ze strony TP-LINK/Neffos. Niemniej jednak, ten wpis dotyczy jedynie ściągania samej blokady OEM w przypadku braku dostępu do systemu. Chcąc nie chcąc, przy okazji testowania kilku rozwiązań udało mi się tę blokadę dość prosto ściągnąć i dlatego właśnie powstał ten wpis.

Jak działa blokada OEM

Opcje deweloperskie, do których można uzyskać dostęp w ustawieniach Androida przez parokrotne stuknięcie w numer kompilacji, oferują nam opcję "Zdjęcie blokady OEM". Jeśli system w naszym telefonie posiada taką pozycję, to smartfon ma wykrojoną dedykowaną partycję, na której status tej blokady jest przechowywany. Nazwa tej partycji może być różna ale można ją odczytać z pliku build.prop , który jest zawarty w ROM'ie. Poniżej przykład z mojego Neffos'a X1:

$ cat /system/build.prop | grep -i frp
ro.frp.pst=/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/frp

Ta partycja zwrócona w ro.frp.pst jest zmieniana za sprawą kilku czynników. Są tutaj przechowywane też ustawienia blokady FPR Lock (tej od konta Google). Nas jednak interesuje ostatni bajt na tej partycji, bo zgodnie z informacjami jakie znalazłem na forum XDA, ten ostatni bajt jest przepisywany w zależności od położenia przełącznika opcji "Zdjęcie blokady OEM" w ustawieniach deweloperskich.

W zasadzie są dwa ustawienia: 0 (blokada aktywna) oraz 1 (blokada zdjęta). Przestawiając przełącznik tak by zdjąć blokadę, system przepisuje ten ostatni bajt ale tylko na czas jednego restartu smartfona. Jeśli uruchomimy system ponownie i nie wprowadzimy żadnych zmian (nie ściągniemy blokady z bootloader'a via fastboot ), to ten przełącznik wraca do pozycji wyjściowej, tj. blokada jest automatycznie zakładana.

Jak przepisać ostatni bajt na partycji frp

Wiemy zatem, na jakiej partycji i w którym miejscu jest zapisywane ustawienie blokady OEM. Nasuwa się automatycznie pytanie o możliwość przepisania tego bajta, tak by z 0 zrobić 1. W jaki sposób tego typu operację możemy przeprowadzić?

Potrzebny nam będzie obraz partycji frp , ewentualnie można przy pomocy dd stworzyć obraz wypełniony zerami o odpowiedniej długości. Jak sobie wykroiłem tę partycję z backup'u flash'a. W tym przypadku partycja frp zajmuje 1 MiB. Ten obraz trzeba załadować do edytora HEX. Jak korzystam z wxhexeditor . Po załadowaniu obrazu w tym programiku powinniśmy ujrzeć poniższe okienko:

oem-lock-frp-smartfon-android-bootloader-hex

Jak widać wyżej ostatnie dwie cyferki (bajt) mają 00 , zatem blokada jest założona. Trzeba tutaj ten bajt przepisać do postaci 01 .

oem-lock-frp-smartfon-android-bootloader-hex

Następnie zapisujemy plik i ładujemy go w SP Flash Tool i wgrywamy na partycję frp. Po wgraniu, pamiętajmy, by smartfon uruchomić w trybie bootloader'a (zwykle VolDown+Power, ewentualnie przez tryb recovery).

Mikhail Morfikov avatar
Mikhail Morfikov
Po ponad 10 latach spędzonych z różnej maści linux'ami (Debian/Ubuntu, OpenWRT, Android) mogę śmiało powiedzieć, że nie ma rzeczy niemożliwych i problemów, których nie da się rozwiązać. Jedną umiejętność, którą ludzki umysł musi posiąść, by wybrnąć nawet z tej najbardziej nieprzyjemniej sytuacji, to zdolność logicznego rozumowania.