Tengo un OnePlus 5T y no puedo instalar más actualizaciones de OTA porque mi firmware es demasiado viejo. Además no tengo una copia de seguridad completa de mi dispositivo porque estoy usando encriptación y TWRP no lo entiende.
Me gustaría simplemente probar el nuevo firmware y revertirlo en caso de que algo salga mal sin perder ningún dato. ¿Es eso posible?
No estoy exactamente seguro de lo que firmware
significa en este contexto y dónde conseguirlo, pero mirando a el sitio web Hay esta descarga para un archivo zip con el siguiente contenido:
Estoy bastante seguro de que esta es la ROM completa, lo que significa que si la instalara, borraría todo y reemplazaría mi LineageOS con la ROM de serie.
Lo que me gustaría hacer es simplemente flashear "el firmware" y sólo el firmware sin perder los datos de mi almacenamiento interno y tampoco los datos de mis aplicaciones, contactos, sms, contraseñas wifi, emparejamientos bluetooth etc etc.
Y antes de eso me gustaría crear una copia de seguridad de mi antiguo firmware para poder volver atrás en caso de que salga mal.
¿Se puede hacer esto? ¿Puede hacerse con fastboot
?
Tal vez usando fastboot flash PARTITION [FILENAME]
y algún otro comando para hacer el respaldo?
Editar:
El actualizador-script en META-INF/com/google/android/update-script
contiene el siguiente código:
getprop("ro.display.series") == "OnePlus 5T" || abort("E3004: This package is for \"OnePlus 5T\" devices; this is a \"" + getprop("ro.display.series") + "\".");
is_part_existed("/dev/block/bootdevice/by-name/vendor") || abort("vendor partition is not existed, exit ota!!");
show_progress(0.650000, 0);
ui_print("Patching system image unconditionally...");
block_image_update("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat") ||
abort("E1001: Failed to update system image.");
show_progress(0.100000, 0);
ui_print("Patching vendor image unconditionally...");
block_image_update("/dev/block/bootdevice/by-name/vendor", package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat") ||
abort("E2001: Failed to update vendor image.");
show_progress(0.050000, 10);
show_progress(0.050000, 5);
package_extract_file("boot.img", "/dev/block/bootdevice/by-name/boot");
show_progress(0.200000, 10);
ui_print("Writing static_nvbk image...");
package_extract_file("RADIO/static_nvbk.bin", "/dev/block/bootdevice/by-name/oem_stanvbk");
# ---- radio update tasks ----
ui_print("Patching firmware images...");
ifelse(msm.boot_update("main"), (
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlib");
package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hyp");
package_extract_file("firmware-update/pmic.elf", "/dev/block/bootdevice/by-name/pmic");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tz");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/abl");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfg");
package_extract_file("firmware-update/keymaster.mbn", "/dev/block/bootdevice/by-name/keymaster");
package_extract_file("firmware-update/xbl.elf", "/dev/block/bootdevice/by-name/xbl");
package_extract_file("firmware-update/rpm.mbn", "/dev/block/bootdevice/by-name/rpm");
), "");
ifelse(msm.boot_update("backup"), (
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64bak");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlibbak");
package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hypbak");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tzbak");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/ablbak");
package_extract_file("firmware-update/keymaster.mbn", "/dev/block/bootdevice/by-name/keymasterbak");
package_extract_file("firmware-update/xbl.elf", "/dev/block/bootdevice/by-name/xblbak");
package_extract_file("firmware-update/rpm.mbn", "/dev/block/bootdevice/by-name/rpmbak");
), "");
msm.boot_update("finalize");
package_extract_file("firmware-update/logo.bin", "/dev/block/bootdevice/by-name/LOGO");
package_extract_file("firmware-update/NON-HLOS.bin", "/dev/block/bootdevice/by-name/modem");
package_extract_file("firmware-update/adspso.bin", "/dev/block/bootdevice/by-name/dsp");
package_extract_file("firmware-update/BTFM.bin", "/dev/block/bootdevice/by-name/bluetooth");
set_progress(1.000000);
¿Debería tomar el msm.boot_update("main"),
y el msm.boot_update("finalize"),
y las muestra de esta manera?
# main
fastboot flash cmnlib64 ./firmware-update/cmnlib64.mbn
fastboot flash cmnlib ./firmware-update/cmnlib.mbn
fastboot flash hyp ./firmware-update/hyp.mbn
fastboot flash pmic ./firmware-update/pmic.mbn
fastboot flash tz ./firmware-update/tz.mbn
fastboot flash abl ./firmware-update/abl.elf
fastboot flash keymaster ./firmware-update/keymaster.mbn
fastboot flash xbl ./firmware-update/xbl.elf
fastboot flash rpm ./firmware-update/rpm.mbn
# finalize
fastboot flash LOGO ./firmware-update/logo.bin
fastboot flash modem ./firmware-update/NON-HLOS.bin
fastboot flash dsp ./firmware-update/adspso.bin
fastboot flash bluetooth ./firmware-update/BTFM.bin
¿O esto ya sobrescribiría una partición que contiene algún tipo de datos de usuario? ¿Puedo hacer una copia de seguridad de estas particiones primero? ¿Y qué hay de RADIO/static_nvbk.bin
, boot.bin
, system.transfer.list
, vendor.transfer.list
y todo eso msm.boot_update("backup"),
¿Cosas?
Editar: Terminé no pudiendo flashear esos archivos de firmware a través de fastboot porque requiere más que un cargador de arranque desbloqueado "normal". Si hubiera hecho el paso necesario para desbloquear el cargador de arranque más adelante, habría borrado todos mis datos. Afortunadamente puedes evitarlo creando un zip con los archivos de firmware y un OpenRecoveryScript personalizado (updater-script). Encontré un increíble proyecto GitHub que automatiza todo el proceso: https://github.com/angela-d/firmware_oneplus
Simplemente cargué de lado la cremallera generada a través de adb sideload firmware-update-oneplus5T.zip
y finalmente pude instalar mis actualizaciones de OTA.
0 votos
si tu dispositivo está rooteado otro método para la copia de seguridad (sólo datos de usuario)
0 votos
En
/dev/block/mmcblk0
¿Incluye mi almacenamiento interno, mis datos de aplicaciones, contactos, sms, contraseñas de wifi, emparejamientos de bluetooth, ajustes del sistema, etc.? ¿Has probado personalmente ese método en un dispositivo encriptado?0 votos
mmcblk0 es todo el chip que contiene TODAS las particiones incluyendo la clave de encriptación. no, nunca lo he intentado personalmente
0 votos
Android.stackexchange.com/q/203891
0 votos
cuidado usrdata sólo puede ser descifrado en este dispositivo único - si usted ladrillo que perderá los datos. para compartir la copia de seguridad entre roms utilizar otra solución de copia de seguridad como Migrar
0 votos
prueba esto TWRP funciona con encriptación para el 5T
0 votos
la rom se encuentra system, vendor, boot (líneas 5,9,13 en update-script )
1 votos
@alecxs Vale, definitivamente no debería tocar esos ya que quiero mantener mi LineageOS. Y supongo que
data
,misc
ysdcard
son donde se almacenan mis propios datos, aplicaciones y configuraciones. Así que teóricamente debería estar perfectamente bien para flashear a cmnlib64, cmnlib, hyp, pmic, tz, abl, keymaster, xbl, rpm, LOGO, módem, dsp y bluetooth. ¿Verdad? Sin embargo estoy un poco preocupado por todas esas particiones de firmware. Por ejemplo, ¿cuál es el propósito dekeymaster
. Eso no suena realmente como algo que quieras sobrescribir.0 votos
Pues bien, LineageOS no me deja instalar actualizaciones OTA porque mi firmware es demasiado antiguo. Así que quiero actualizar el firmware para que LineageOS pueda actualizarse de nuevo.
0 votos
No estoy seguro, creo que decía "Este paquete requiere la versión de firmware x o más reciente. Por favor, actualice el firmware y vuelva a intentarlo" cuando intento instalar una actualización OTA. ¿Significa esto que sólo tengo que actualizar la partición del módem o qué hace
radio
¿se refiere a?0 votos
el motivo de este mensaje es por las dependencias requeridas. el firmware xy solo funciona con la radio z (banda base). para flashear solo algunas partes necesitas conocer las dependencias, o destruirás la codificación y perderás datos
0 votos
Vale, ¿dices que no debería instalar sólo uno de los archivos de "firmware-update", sino todos? Ah y por radio (banda base) probablemente te refieres a "RADIO/static_nvbk.bin" que se flashea en el
oem_stanvb
partición, ¿verdad?0 votos
Exactamente, pero no estoy seguro de que este sea el único archivo que hay que actualizar, creo que el NON-HLOS.bin también es necesario. puede que funcione flashear sólo estos, pero no lo intentaré sin una copia de seguridad
0 votos
Finalmente lo logré y ahora tengo un firmware actualizado, radio y OTA. Y todo ha funcionado sin borrar mis datos. ¡Gracias de nuevo @alecxs por la enorme ayuda! Tal vez usted puede responder a una pregunta final: ¿Si yo fuera a flashear esa versión especial de TWRP que soporta la desencriptación de Android Pie, eso borraría mis datos?
0 votos
flashear el recovery no borrará los datos, pero puede hacer que la rom (stock) no arranque si dm-verity no está desactivado. para LineageOS este es el caso, no hay problema.
0 votos
Los comentarios no son para ampliar la discusión; esta conversación ha sido trasladado al chat .