Sunday, May 24, 2015

Moto G erreur de mise à jour OTA


Si vous recevez une mise à jour OTA (over-the-air) pour votre Moto G et il échoue, voici ce que vous pouvez faire. Tout d'abord, quelques exigences :

  • Un Moto G. Cela peut marcher avec le Moto E ou X ainsi.
  • Logiciel Android officiel. Vous ne recevez pas une mise à jour OTA sauf si vous avez Android officiel / stock.
  • Votre téléphone a été rooté ou autrement modifié (logo de démarrage modifié, recovery modifié, etc). Ce n'est pas une exigence stricte, mais c'est probablement la raison pour l'échec de la mise à jour en premier lieu.
  • Ces instructions ont été écrites pour Linux, mais ils doivent fonctionner avec des ajustements mineurs sur Mac et quelques ajustements pas si mineures sur Windows.
Maintenant les étapes :
  1. (Recommandé) Sauvegardez les données de votre téléphone au cas où quelque chose va mal

  2. Obtenez le numéro de modèle de votre téléphone
    1. Moto G 1st generation models
    2. Moto G 2nd generation models

  3. Obtenez le numéro de build pour votre téléphone
    ParamètresÀ propos du téléphoneNuméro de build

  4. Télécharger le firmware officiel pour votre téléphone correspondant au modèle du téléphone et le numéro de build. Vous pouvez le télécharger ici :
    http://www.filefactory.com/folder/c6cdedc45a775d27

    Pour moi, j'ai le Moto G XT1034 avec le numéro de build KXB21.14-L1.61, donc je l'ai téléchargé ce fichier :
    AWSRETAIL_XT1034_4.4.4_KXB21.14-L1.61_cid9_CFC.xml.zip

  5. Une fois le téléchargement du firmware officiel a fini, l'extrayez

  6. Télécharger Motorola fastboot (mfastboot), et l'extraire dans le même dossier que le firmware officiel
    https://www.androidfilehost.com/?fid=95916177934532795

  7. Mettez votre téléphone en mode fastboot. Pour ce faire, éteignez le téléphone, appuyez et maintenez le bouton d'alimentation, appuyez le bouton volume bas, tenir les deux à la fois pendant environ 3 secondes, puis lâcher

  8. Allez dans le dossier où vous avez extrait le firmware officiel. Maintenant, vous devez flasher ce que vous avez modifié. Dans mon cas, j'avais flashé un logo personnalisé et une recovery personnalisée, donc c'est ce que je faisais :

    chmod +x linux-fastboot
    sudo ./linux-fastboot flash logo logo.bin
    sudo ./linux-fastboot flash recovery recovery.img

  9. Si vous utilisez OS X, vous utiliserez osx-fastboot au lieu de linux-fastboot, et pour Windows, c'est mfastboot.

  10. Maintenant, essayez à nouveau la mise à jour
    Paramètres → À propos du téléphone → Mise à jour logicielles système

  11. Si la mise à jour échoue à nouveau, vous avez l'une des deux options. Si ça ne vous dérange pas d'effacer tous les données de votre téléphone et de partir de zéro, la meilleure chose à faire est de restaurer entièrement le firmware stock. Vous mettez votre téléphone en mode fastboot comme avant, mais cette fois vous allez écraser tout :

    sudo ./linux-fastboot flash partition gpt.bin
    sudo ./linux-fastboot flash motoboot motoboot.img
    sudo ./linux-fastboot flash logo logo.bin
    sudo ./linux-fastboot flash boot boot.img
    sudo ./linux-fastboot flash recovery recovery.img
    sudo ./linux-fastboot flash system system.img_sparsechunk.0
    sudo ./linux-fastboot flash system system.img_sparsechunk.1
    sudo ./linux-fastboot flash system system.img_sparsechunk.2
    sudo ./linux-fastboot flash modem NON-HLOS.bin
    sudo ./linux-fastboot erase modemst1
    sudo ./linux-fastboot erase modemst2
    sudo ./linux-fastboot flash fsg fsg.mbn
    sudo ./linux-fastboot erase cache
    sudo ./linux-fastboot erase userdata
    sudo ./linux-fastboot reboot


    Si vous avez des fichiers system.img_sparsechunk supplémentaires, assurez-vous de les tous flasher, par exemple :

    sudo ./linux-fastboot flash system system.img_sparsechunk.3
    sudo ./linux-fastboot flash system system.img_sparsechunk.4


    ... etc.

    Si, toutefois, vous ne voulez pas complètement effacer votre téléphone et ça ne vous dérange pas se salir les mains, lisez la suite.

  12. Maintenant, ça devient amusant ! Tout d'abord, si votre téléphone n'est pas rooté, vous aurez besoin de le rooter pour obtenir l'accès aux fichiers journals de la mise à jour.

  13. Une fois que votre téléphone est rooté, le connecter avec adb et regarder le journal de la mise à jour, qui sera situé dans /cache/recovery. Il y aura plusieurs fichiers journaux dans ce dossier, donc commencer avec le fichier le plus récent jusqu'à ce que vous trouviez celui que vous cherchez :

    adb shell
    su
    cd /cache/recovery
    ls -l
    more last_log.1

  14. Regardez en particulier la fin du fichier journal pour voir ce qui a mal tourné. Voici ce que le mien a dit :

    script aborted: "/system/etc/install-recovery.sh" has unexpected contents.
    "/system/etc/install-recovery.sh" has unexpected contents.
    E:Error in /cache/Blur_Version.210.12.61.falcon_umts.AWSRetail.en.US.zip
    (Status 7)
    Installation aborted.


    Vous pouvez voir que, apparemment, le fichier /system/etc/install-recovery.sh avait été modifié, probablement quand j'ai rooté le téléphone.

  15. Si comme moi votre journal d'erreur mentionne un fichier qui a été modifié, vous devez remplacer le fichier d'origine. Cela va prendre un certain travail. D'abord, vous aurez besoin d'un outil spécial appelé simg2img. Vous pouvez probablement trouver un binaire pré-construit pour votre système. Je l'ai simplement compilé moi-même :

    sudo apt-get -y install build-essential git zlib1g-dev
    git clone https://android.googlesource.com/platform/system/core
    cd core/libsparse
    gcc -o simg2img -Iinclude simg2img.c sparse_crc32.c backed_block.c output_file.c sparse.c sparse_err.c sparse_read.c -lz
    sudo cp simg2img /usr/local/bin

  16. Allez dans le dossier où vous avez extrait le firmware officiel, et vous devriez avoir un ou plusieurs fichiers commençant par system.img_sparsechunk. La prochaine étape est de les combiner à l'aide de simg2img :

    simg2img system.img_sparsechunk.* system.raw.img.tmp

  17. Maintenant, nous allons extraire la partition ext4 du fichier d'image que nous avons fait :

    offset=`LANG=C grep -aobP -m1 '\x53\xEF' system.raw.img.tmp | head -1 | awk '{print $1 - 1080}'`
    dd if=system.raw.img.tmp of=system.raw.img ibs=$offset skip=1

  18. Nous y sommes presque ! Maintenant, nous allons monter l'image que nous venons de créer :

    sudo mkdir /mnt/system
    sudo mount system.raw.img /mnt/system

  19. Maintenant, nous devrions avoir accès à tous les fichiers originaux du firmware officiel. La prochaine étape est de les copier sur le périphérique. Voici ce que j'ai fait pour copier /system/etc/install-recovery.sh :

    adb push /mnt/system/etc/install-recovery.sh /sdcard/

  20. Maintenant connecter à l'appareil et obtenir le point de montage pour la partition /system :

    adb shell
    mount | grep system

  21. Enfin, remonter /system en lecture-écriture, copier le fichier, puis remontez /system en lecture seule. Ne pas oublier de remplacer les points de montage dans mon exemple (/dev/block/platform/msm_sdcc.1/by-name/system) avec le point de montage que vous avez obtenu à l'étape précédente :

    mount -o rw,remount /dev/block/platform/msm_sdcc.1/by-name/system /system
    cp /sdcard/install-recovery.sh /system/etc/install-recovery.sh
    mount -o ro,remount /dev/block/platform/msm_sdcc.1/by-name/system /system

  22. Si vous avez rendu à ce point, félicitations! Essayez à nouveau la mise à jour. Espérons que, comme dans mon cas, il va maintenant travailler. Si non, vous devez regarder à nouveau le fichier journal de la mise à jour et voir si il y a autre chose que vous avez manqué. Heureusement ça va aller beaucoup plus vite maintenant que vous avez déjà fait tout le travail de préparation.

0 comments:

Post a Comment