5 votos

Cómo desbloquear el bootloader del OnePlus One

Tengo el OnePlus One con CyanogenMod 12 de fábrica y he decidido actualizar a CM 13 (nightly build).
Para lograr esto hice lo siguiente desde OSX:

  1. Desbloquear el bootloader (fastboot oem unlock)
  2. Arrancar TWRP (fastboot boot twrp-2.8.6.0-bacon.img)
  3. Desde TWRP he instalado CM 13 (cm-13.0-20160105-NIGHTLY-bacon.zip) y GAPPS (open_gapps-arm-6.0-pico-20160105.zip)
  4. También he instalado el último Cyanogen Recovery (cm-13.0-20160105-NIGHTLY-bacon-recovery.img)
  5. Por alguna razón, me apetecía dejar las cosas como estaban, y he vuelto a bloquear el bootloader (fastboot oem lock)

Ahora, ya no puedo desbloquear el bootloader para hacer cosas como instalar/arrancar una herramienta de recuperación personalizada (como TWRP)
Ejecutar 'fastboot oem unlock' sólo reinicia el dispositivo en modo recovery, pero el bootloader sigue bloqueado:

$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

Se agradecería una solución, pero también tengo curiosidad por saber por qué se comporta así después de un bloqueo manual.
Como sugiere @Firelord, parece que hay una solución para los usuarios de Windows: https://forums.oneplus.net/threads/important-bootloader-wont-unlock-after-relock.324398/

0 votos

Has probado la solución mencionada en este hilo: ¿El Bootloader no se desbloquea después de volver a bloquearlo?

0 votos

@Firelord, veo que esa herramienta es para Windows, yo estoy usando OSX.

2voto

hdoradu Puntos 46

En mi búsqueda, me encontré con una interesante hilo que estaba relacionado, pero para instalar su script, necesitas tener una herramienta de recuperación personalizada instalada o poder arrancar en ella (por ejemplo, fastboot boot recovery.img).

Tenía la herramienta stock Cyanogen Recovery y no podía arrancar en TWRP por mi problema actual (ya no puede desbloquear el bootloader), así que escarbé dentro de su script y utilizó el contenido destinado a restablecer el bloquear y manipulador bits del gestor de arranque.

Ahora podría ejecutar los comandos manualmente si tuviera Acceso a root y por suerte, en la ROM CM 13, se puede habilitar desde el menú de "Opciones de desarrollador".

Aquí están los comandos que utilicé después de habilitar el acceso Root para ADB:

adb root     # restart the adbd daemon with root permissions
adb shell    # run remote shell interactively
dd bs=1 count=1 skip=1048080 if=/dev/block/platform/msm\_sdcc.1/by-name/aboot 2>/dev/null | xxd | cut -c 10-     # print the lock bit state (00 - locked, 01 - unlocked)
echo -ne "\\x01" | dd bs=1 count=1 seek=1048080 of=/dev/block/platform/msm\_sdcc.1/by-name/aboot                  # set the lock bit to unlocked(01)
dd bs=1 count=1 skip=1048084 if=/dev/block/platform/msm\_sdcc.1/by-name/aboot 2>/dev/null | xxd | cut -c 10-     # print the tamper bit state (00 - untampered, 01 - tampered)
echo -ne "\\x00" | dd bs=1 count=1 seek=1048084 of=/dev/block/platform/msm\_sdcc.1/by-name/aboot                  # set the tamper bit to untampered(00)

Resultado:

$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

Supongo que el bit de tamper se cambia la primera vez que desbloqueas el bootloader (fastboot oem unlock) y después de volver a bloquearlo (fastboot oem lock) no te permite volver a desbloquearlo.

0voto

Rik Puntos 21

Si xxd y cut no existen en ubicaciones disponibles en $PATH (como era en mi caso), prefijo busybox en esos comandos.

# 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

2 votos

Dado que se trata de un pequeño añadido sobre la respuesta aceptada, debería ser un comentario o una sugerencia de edición, no una respuesta independiente.

0 votos

Lo siento, sólo quiero compartir mis 5 centavos con los demás, su solución realmente resolver mi problema.

0 votos

No te lamentes por compartir. Sólo he señalado la forma correcta de compartir en este caso. Utiliza el botón "Añadir comentario" bajo mi respuesta y añade tu comentario de que "busybox debe ser preestablecido si xdd y cut no están en la ruta" y da un pequeño ejemplo como: "busybox xdd" sin duplicar todos los comandos. Otra opción es sugerir una edición.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X