Skip to content

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

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:

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

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).

Posty powiązane tematycznie