J'ai un OnePlus 5T et je ne peux plus installer les mises à jour OTA car mon firmware est trop ancien. En plus de cela, je n'ai pas de sauvegarde complète de mon appareil car j'utilise le cryptage et TWRP ne le comprend pas.
Je voudrais simplement essayer le nouveau firmware et revenir en arrière en cas de problème sans perdre de données. Est-ce possible ?
Je ne suis pas exactement sûr de ce que firmware
signifie dans ce contexte et où l'obtenir, mais en regardant la le site web il y a ce téléchargement pour un fichier zip avec le contenu suivant :
Je suis presque sûr qu'il s'agit de la ROM stock complète, ce qui signifie que si je l'installais, elle effacerait tout et remplacerait mon LineageOS par la ROM stock.
Ce que je voudrais faire, c'est simplement flasher "le firmware" et seulement le firmware sans perdre les données sur mon stockage interne et également pas mes données d'application, contacts, sms, mots de passe wifi, pairage bluetooth etc etc .
Et avant cela, j'aimerais créer une sauvegarde de mon ancien firmware afin de pouvoir revenir en arrière en cas de problème.
Est-ce que cela peut être fait ? Peut-on le faire avec fastboot
?
Peut-être en utilisant fastboot flash PARTITION [FILENAME]
et une autre commande pour faire la sauvegarde ?
Editar:
Le script de mise à jour dans META-INF/com/google/android/update-script
contient le code suivant :
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);
Je devrais juste prendre le msm.boot_update("main"),
et le msm.boot_update("finalize"),
et de les flasher comme ça ?
# 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
Ou est-ce que cela écraserait déjà une partition qui contient une sorte de données utilisateur ? Puis-je faire une sauvegarde de ces partitions d'abord ? Et qu'en est-il RADIO/static_nvbk.bin
, boot.bin
, system.transfer.list
, vendor.transfer.list
et tout ça msm.boot_update("backup"),
des trucs ?
Editar: J'ai fini par ne pas être en mesure de flasher ces fichiers firmware via fastboot car cela nécessite plus qu'un bootloader déverrouillé "normal". Si j'avais fait l'étape nécessaire pour déverrouiller le bootloader plus loin, cela aurait effacé toutes mes données. Heureusement, vous pouvez contourner cela en créant un zip avec les fichiers du firmware et un OpenRecoveryScript (updater-script) personnalisé. J'ai trouvé un projet GitHub génial qui automatise tout le processus : https://github.com/angela-d/firmware_oneplus
J'ai simplement téléchargé le zip généré par l'intermédiaire de adb sideload firmware-update-oneplus5T.zip
et finalement j'ai pu installer mes mises à jour OTA.