So entsperren Sie den Bootloader für OnePlus One erneut

Ich habe OnePlus One mit CyanogenMod 12 ab Werk und habe mich für ein Update auf CM 13 (Nightly Build) entschieden.
Um dies zu erreichen, habe ich Folgendes von OSX aus getan:

  1. Bootloader entsperren (fastboot oem unlock)
  2. TWRP booten (fastboot boot twrp-2.8.6.0-bacon.img)
  3. Von TWRP habe ich CM 13 (cm-13.0-20160105-NIGHTLY-bacon.zip) und GAPPS (open_gapps-arm-6.0-pico-20160105.zip) installiert
  4. Ich habe auch die neueste Cyanogen Recovery installiert (cm-13.0-20160105-NIGHTLY-bacon-recovery.img)
  5. Aus irgendeinem Grund wollte ich die Dinge so lassen, wie sie waren, und ich habe den Bootloader neu gesperrt (Fastboot-OEM-Sperre)


Jetzt kann ich den Bootloader nicht mehr entsperren , um beispielsweise ein benutzerdefiniertes Wiederherstellungstool (wie TWRP) zu installieren/booten

$fastboot oem device-info
...
(bootloader)    Device tampered: true
(bootloader)    Device unlocked: false
(bootloader)    Charger screen enabled: false
(bootloader)    Display panel:
(bootloader)    console_enabled: 0
(bootloader)    exec_console_unconsole: 0

Eine Lösung wäre wünschenswert, aber ich bin auch neugierig, warum es sich nach einer manuellen Sperre so verhält.
Wie von @Firelord vorgeschlagen, scheint es hier eine Lösung für Windows-Benutzer zu geben: https://forums.oneplus.net/threads/important-bootloader-wont-unlock-after-relock.324398/

Haben Sie die in diesem Thread erwähnte Lösung ausprobiert: Bootloader wird nach dem erneuten Sperren nicht entsperrt?
@Firelord, ich sehe, dass das Tool für Windows ist, ich verwende OSX.

Antworten (2)

Bei meiner Suche bin ich auf einen interessanten Thread gestoßen , der verwandt war, aber um ihr Skript zu installieren, müssen Sie ein benutzerdefiniertes Wiederherstellungstool installiert haben oder damit booten können (z. B. fastboot boot recovery.img).

Ich hatte das Standard-Cyanogen-Wiederherstellungstool und konnte wegen meines eigentlichen Problems (Bootloader kann nicht mehr entsperrt werden) nicht in TWRP booten, also habe ich in ihrem Skript gegraben und den Inhalt verwendet, der zum Zurücksetzen der Sperr- und Manipulationsbits des Bootloaders gedacht war.

Jetzt könnte ich die Befehle manuell ausführen, wenn ich Root-Zugriff hätte , und glücklicherweise können Sie sie in CM 13 ROM im Menü „Entwickleroptionen“ aktivieren.

Hier sind die Befehle, die ich nach dem Aktivieren des Root-Zugriffs für ADB verwendet habe:

adb root # Starten Sie den adbd-Daemon mit Root-Rechten neu
adb shell # Remote-Shell interaktiv ausführen
dd bs=1 count=1 skip=1048080 if=/dev/block/platform/msm_sdcc.1/by-name/aboot 2>/dev/null | xxd | cut -c 10- # drucke den Zustand des Sperrbits (00 - gesperrt, 01 - entsperrt)
echo -ne "\x01" | dd bs=1 count=1 seek=1048080 of=/dev/block/platform/msm_sdcc.1/by-name/aboot # Sperrbit auf unlocked(01) setzen
dd bs=1 count=1 skip=1048084 if=/dev/block/platform/msm_sdcc.1/by-name/aboot 2>/dev/null | xxd | cut -c 10- # drucke den Zustand des Manipulationsbits (00 - nicht manipuliert, 01 - manipuliert)
echo -ne "\x00" | dd bs=1 count=1 seek=1048084 of=/dev/block/platform/msm_sdcc.1/by-name/aboot # setze das Tamper-Bit auf untampered(00)

Ergebnis:

$fastboot oem device-info
...
(bootloader)    Device tampered: false
(bootloader)    Device unlocked: true
(bootloader)    Charger screen enabled: false
(bootloader)    Display panel:
(bootloader)    console_enabled: 0
(bootloader)    exec_console_unconsole: 0

Ich denke, das Manipulationsbit wird geändert, wenn Sie den Bootloader zum ersten Mal entsperren (Fastboot-OEM-Entsperrung), und nachdem Sie ihn wieder gesperrt haben (Fastboot-OEM-Sperre), können Sie ihn nicht erneut entsperren.

Wenn xxdund cutnicht an Orten vorhanden sind, die in $ PATH verfügbar sind (wie es in meinem Fall der Fall war), setzen Sie busyboxdiesen Befehlen ein Präfix.

# print the lock bit state (00 - locked, 01 - unlocked)
dd bs=1 count=1 skip=1048080 if=/dev/block/platform/msm_sdcc.1/by-name/aboot 2>/dev/null | busybox xxd | busybox cut -c 10-     
# set the lock bit to unlocked(01)
echo -ne "\x01" | dd bs=1 count=1 seek=1048080 of=/dev/block/platform/msm_sdcc.1/by-name/aboot                  
# print the tamper bit state (00 - untampered, 01 - tampered)
dd bs=1 count=1 skip=1048084 if=/dev/block/platform/msm_sdcc.1/by-name/aboot 2>/dev/null | busybox xxd | busybox cut -c 10-     
 set the tamper bit to untampered(00)
echo -ne "\x00" | dd bs=1 count=1 seek=1048084 of=/dev/block/platform/msm_sdcc.1/by-name/aboot   
Da dies nur eine kleine Ergänzung zur akzeptierten Antwort ist, sollte es sich um einen Kommentar oder eine vorgeschlagene Änderung handeln, nicht um eine eigenständige Antwort.
Entschuldigung, ich möchte nur meine 5 Cent mit anderen teilen, Ihre Lösung löst tatsächlich mein Problem.
Bedauern Sie nicht für das Teilen. Ich habe nur darauf hingewiesen, wie man in diesem Fall richtig teilt. Verwenden Sie die Schaltfläche "Kommentar hinzufügen" unter meiner Antwort und fügen Sie Ihre Bemerkung hinzu, dass "busybox vorangestellt werden muss, wenn xdd und cut nicht im Pfad sind", und geben Sie ein kleines Beispiel wie: "busybox xdd", ohne alle Befehle zu duplizieren. Eine weitere Möglichkeit besteht darin, eine Änderung vorzuschlagen.