Mon Flame, un téléphone Alcatel OneTouch sous Firefox OS, a commencé à fatiguer : même après un nettoyage de l'écran, ça cliquait tout seul sans arrêt sur certaines zones de l'écran. Le téléphone était devenu inutilisable.

Pour récupérer les données ça a été la galère. J'ai voulu récupérer deux choses : les contacts, et les photos.

Les contacts sont stockées avec IndexedDB, qui est implémenté dans Firefox en utilisant SQlite. Mais la structure des données dans ces fichiers SQLite utilisés pour IndexedDb fait qu'il est très compliqué d'en extraire les données (champs de type blob etc). Récupérer les fichiers du profile Firefox dans le système n'aurait donc servi à rien. La seule solution que j'ai trouvé a été donc d'utiliser la fonction export de l'application de contacts. Ce qui fut un long chemin difficile pour arriver jusqu'au fameux bouton d'export, vu que l'écran cliquait un peu partout sans arrêt. J'ai pu finalement obtenir un fichier VCF sur ma carte SD externe.

Les photos étaient stockées sur le téléphone et non sur la carte SD externe, ce qui fut une erreur de ma part dans la configuration de l'appareil. J'aurais pu les récupérer en branchant le téléphone sur mon ordinateur, en USB... Si le téléphone n’arrêtait pas de se déconnecter et reconnecter sans arrêt ! Il a donc fallu sortir les grands moyens.

  • vérifier que j'avais bien installé ADB
  • rebooter le téléphone en mode recovery (bouton on + volume haut pendant le démarrage, et relacher après un flash blanc)
  • brancher le téléphone en USB. Curieusement, pas de déconnexion intempestive en mode recovery. Sur mon ordinateur en ligne de commande, adb devices me listait bien le téléphone. Et lsusb me montrait ID 18d1:d001 Google Inc.
  • me connecter en root sur le téléphone à partir de mon ordinateur, afin d'avoir un shell sur le téléphone :
  adb root
  adb shell
  • en mode recovery, les cartes SD interne et externes ne sont pas montées. Il faut donc aller voir les points de montage dans /etc/recovery.fstab : la carte SD interne est normalement montée sur /storage/sdcard0, et la carte externe sur /sdcard. Pour les monter, faire donc (en utilisant les paramètres indiquées dans /etc/recovery.fstab) :
  mount -t vfat /dev/block/platform/msm_sdcc.1/by-name/usbmsc /storage/sdcard0@@
  mount -t vfat -o nosuid,nodev,barrier=1,data=ordered,nodelalloc /dev/block/mmcblk1p1 /sdcard@@
  • dans /storage/sdcard0/DCIM/, il y a normalement toutes les photos.
  • pour les copier sur la carte SD externe, on fera un simple cp -a /storage/sdcard0/DCIM /sdcard/photos par exemple.
  • si vous n'avez pas de carte SD externe, il faut sortir du shell (exit) et taper la commande adb pull /storage/sdcard0/DCIM/ ~/quelquepart/sur/votre/ordi

Et voilà. Il ne reste plus qu'à débrancher et à éteindre le téléphone, récupérer la carte SD externe, et à trouver un autre téléphone :)