У меня OnePlus One с CyanogenMod 12 с завода и я решил обновиться до CM 13 (ночная сборка).
Для этого я сделал следующее из OSX:
Теперь я больше не могу разблокировать загрузчик, чтобы выполнять такие действия, как установка/загрузка пользовательского инструмента восстановления (например, TWRP).
Запуск «fastboot oem unlock» просто перезагружает устройство в режиме восстановления, но загрузчик остается заблокированным:
$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
Решение было бы признательно, но мне также любопытно, почему оно ведет себя так после ручной блокировки.
Как было предложено @Firelord, здесь, похоже, есть решение для пользователей Windows: https://forums.oneplus.net/threads/important-bootloader-wont-unlock-after-relock.324398/
В своих поисках я наткнулся на интересную ветку , которая была связана, но для того, чтобы установить их скрипт, вам нужно установить специальный инструмент восстановления или иметь возможность загрузиться в него (например, fastboot boot recovery.img).
У меня был стандартный инструмент восстановления Cyanogen, и я не мог загрузиться в TWRP из-за моей реальной проблемы (больше не могу разблокировать загрузчик), поэтому я копался в их скрипте и использовал содержимое, предназначенное для сброса битов блокировки и вмешательства в загрузчик.
Теперь я мог запускать команды вручную, если у меня был root-доступ , и, к счастью, в CM 13 ROM вы можете включить его в меню «Параметры разработчика».
Вот команды, которые я использовал после включения root-доступа для ADB:
adb root # перезапустить демон adbd с правами суперпользователя adb shell # запустить удаленную оболочку в интерактивном режиме dd bs=1 count=1 skip=1048080 if=/dev/block/platform/msm_sdcc.1/by-name/aboot 2>/dev/null | ххд | cut -c 10- # вывести состояние бита блокировки (00 - заблокировано, 01 - разблокировано) эхо -ne "\x01" | dd bs=1 count=1 seek=1048080 of=/dev/block/platform/msm_sdcc.1/by-name/aboot # установить бит блокировки на разблокированный (01) dd bs=1 count=1 skip=1048084 if=/dev/block/platform/msm_sdcc.1/by-name/aboot 2>/dev/null | ххд | cut -c 10- # вывести состояние бита тампера (00 - не изменено, 01 - изменено) эхо -ne "\x00" | dd bs=1 count=1 seek=1048084 of=/dev/block/platform/msm_sdcc.1/by-name/aboot # установить бит тампера на untampered(00)
Результат:
$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
Я предполагаю, что бит тампера изменяется при первой разблокировке загрузчика (разблокировка fastboot oem), и после того, как вы заблокируете его обратно (блокировка fastboot oem), он не позволит вам повторно разблокировать.
Если xxd
и cut
не существуют в местах, доступных в $ PATH (как это было в моем случае), префикс busybox
в этих командах.
# 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
Повелитель огня
кодентный