Ubuntu Touch – Mise-à-jour de OTA-3 à OTA-4

Ayant en ma possession une phablette (Meizu MX4), j’en ai profité pour mettre à jour le système et de passer de la version installée d’origine en 15.04 à 16.04, grâce au super boulot fait par l’équipe d’Ubports qui continue de maintenir le système que Cannonical a délaissé.

Cette mise-à-jour devrait passer comme une lettre à la poste, mais ce n’est pas le cas. Sinon, je n’aurai pas été obligé d’écrire ce blog. Le problème que j’ai rencontré, c’est qu’une fois l’installeur Ubports lancé, le téléphone a redémarré en mode de récupération (recovery mode), puis y est resté figé jusqu’à ce que je redémarre le téléphone.


Si je lance le téléphone en mode recovery et qu’il est pas branché à quoi que ce soit, le même problème se présente.

Plusieurs solutions ont été présentées sur le forum de Uports, dont je vais détailler plus bas. D’ailleurs, j’ai copié la copie d’écran ci-dessus à partir du topic « [solved] Mx4 – Installer blocked at « waiting for recovery mode »

 

Je dois avouer que je ne sais pas à quel moment j’ai réussi à débloquer la situation, mais au final la mise-à-jour s’est bien passé après avoir essayé toutes les suggestions que j’ai trouvées sur internet. De plus, je n’ai pas le temps ni l’envie de m’amuser à flasher le téléphone pour installer la version originale de Ubuntu puis refaire la manipulation. Je vous laisse le soin de laisser des commentaires en précisant ce qui marche dans votre cas.

 

I. Mise-à-jour avec Ubports

La méthode pour mettre Ubntu touch à jour est décrite sur cette page « How to manually upgrade from OTA-3 to OTA-4« . J’ai effectué toutes les manipulations sur une machine qui tourne avec Debian, qui est le seul OS qui ne m’a pas posé de soucie durant toute l’étape de la mise-à-jour.

Tout comme M et Mme Michu, j’ai juste suivi la documentation sur les étapes à suivre pour la mise-à-jour.

J’ai donc commencé par télécharger l’installeur Ubports, puis le lancer et voir ce qu’il en est.

Mon appareil a bien été détecté. Par contre, la copie d’écran ci-dessous, je l’ai effectuée après la mise-à-jour.

Initialement, à la place du bouton « Install », j’avais l’option « Switch to Ubports« . Ce n’est qu’une fois que la mise-à-jour terminée que je n’ai eu droit au bouton Install après avoir reconnecté mon téléphone à Ubports.

Sur cette page, on vous rappelle qu’il faut activer le mode développeur (System Settings > About > Developer Mode) du téléphone si ce n’est pas encore fait.

Cliquer ensuite sur « Change options ».
Comme Channel, sélectionner 16.04/stable, et ne surtout pas cocher « wipe settings » pour ne pas effacer toutes les données du téléphone. A moins que c’est ce que vous souhaitez.

Ensuite, après avoir cliqué sur « Switch to Ubports« , j’ai l’impression que mon ordinateur n’arrive pas à communiquer avec le téléphone. Au niveau de l’installer j’ai un message « Waiting for recovery mode », par contre le téléphone a bien redémarré en mode recovery, mais affiche une barre qui ne progresse pas, comme sur l’image au début de ce topic.

Comme je ne savais pas vraiment quoi faire à ce niveau, j’ai fermé l’application Ubports, puis redémarré le téléphone.

Je ne pense pas que les manipulations que j’ai effectué ci-dessous contiennent la solution à ce problmème, mais à un moment donné, et après avoir effectué une énième tentative de mise-à-jour, j’ai juste redémarré le téléphone sans fermer l’application Ubports en ayant gardé le cable USB connecté. Puis « miracle », l’application Ubports sur mon ordinateur commence à envoyer des paquets de mise-à-jour vers le téléphone que je précise, qui a juste redémarré en mode normal.

 

II. Mise-à-jour via SSH

1. OpenSSH Client

Il est possible de mettre à jour le système en mode ligne de commande sans avoir à installer l’outil Ubports.

Pour celà, il nous faut installer plusieurs outils nécessaires à la gestion d’un téléphone android: openssh, adb et Android SDK.

Pour établir une connection SSH entre votre ordinateur (côté client) et le téléphone (côté serveur), il vous faut créer une paire de clés:

  • Une clé privée à ne jamais partager avec qui que ce soit et
  • Une clé publique qu’il faut ensuite copier dans le répertoire de téléphone

 

J’ai déjà expliqué comment créer une connection SSH dans l’article sur la sécurisation d’une Raspberry Pie, mais une piqûre de rappel ne fera pas de mal.

Sur votre ordinateur, vérifier que le paquet openssh-client est bien installé. Si ce n’est pas le cas, il faut le faire.

mon@ordi$ dpkg -l | grep ssh
mon@ordi$ sudo apt-get install openssh-client

Générer une paire de clés avec l'utilitaire SSH keygen.
mon@ordi$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/matakasi/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

N’ommetez pas la passphrase, qui est une forme de sécurité supplémentaire.

Les clés générées devraient se trouver dans le répertoire ~/.ssh:
– clé privée: id_rsa (vous devez ne jamais fournir cette clé à personne)
– clé publique: id_rsa.pub.
Vérifier que vous avez bien les deux clés (id_rsa et id_rsa.pub) dans le répertoire de votre ordinateur.

~$ cd

~$ ls .ssh
config config.bak id_rsa id_rsa.pub known_hosts known_hosts.old

Une fois que vous avez les clés, il ne reste plus qu’à envoyer une copie de la clé publique vers le téléphone pour que l’ordinateur puisse se connecté à l’appareil.

 

2. ADB (Android Debug Bridge)

Avant de parler des différents outils, il faut comprendre comment un système Android fonctionne.

Il faut savoir que sur système Android les trois partitions suivantes sont présentes:

  • BootLoader (chargeur de démarrage)
    C’est un script qui se lance avant même que le système d’exploitation se lance. Je dois rajouter qu’il n’y a pas vraiment de bootloader type sur un système Android, puisque chaque fabriquant de téléphone fournit une version spécifique du bootloader pour chaque carte mère. Par sécurité, le bootloader sur chaque téléphone Android n’est pas accessible par défaut.Appuyer sur le bouton « Power » et sur la touche du volume vers le Bas pour accéder au mode Bootloader. En bas de l’écran du téléphone vous devrez avoir « FASTBOOT mode… ».L’installation de l’outil Android SDK est nécessaire pour pouvoir accéder au bootloader.
  • Recovery
    Le mode recovery est le mode utilisé manipuler et pour mettre à jour la partition Android ROM.A bootable program on an Android flash memory partition that is used to perform a factory reset or restore the original OS version. In order to install a different OS version (a different ROM), the stock recovery image must be replaced with a custom version such as ClockworkMod Recovery. After rooting the Android, utilities such as ROM Manager install the custom recovery, which is then used to install the custom ROM.Appuyer sur le bouton « Power » et sur la touche du volume vers le Haut pour accéder au mode Recovery. En bas de l’écran du téléphone vous devrez avoir « Recovery mode… ».L’installation de l’outil ADB est nécessaire pour pouvoir accéder au mode recovery.
  • Andoid ROM
    Partition dans laquelle est installée le système d’exploitation, dans notre cas Ubuntu Phone. Par contre, le système Android n’a pas entièrement disparu puisqu’il est placé dans un conteneur LXC pour que le système Ubuntu Touch puisse continuer à communiquer avec, afin de pouvoir bénéficier de tous les pilotes Android pour les différents matériels (carte réseau, caméra, etc.).

Maintenant qu’on a vu comment accéder aux différentes partitions ainsi que les différents outils nécessaire pour les manipulations, il est temps de voir ce que l’on peut faire avec.

Au fait nous n’avons besoin que de l’outil ADB pour la suite, par contre l’outil Android SDK sera automatiquement installé avec ADB.

Lancer l’installation de ADB.

~$ sudo apt install adb

Brancher votre appareil à l’ordinateur, puis vérifier qu’il est bien reconnu.

~$ adb devices
List of devices attached
75HXXXXXXXXX

Créer un dossier .ssh dans le dossier /home/phablet du téléphone.

~$ adb shell mkdir /home/phablet/.ssh

Envoyer une copie de votre clé publique de l’ordinateur vers le téléphone.

~$ adb push ~/.ssh/id_rsa.pub /home/phablet/.ssh/authorized_keys

Modifier les permissions et les groupes des dossiers et sous-dossiers de .ssh

~$ adb shell chown -R phablet.phablet /home/phablet/.ssh

~$ adb shell chmod 700 /home/phablet/.ssh

~$ adb shell chmod 600 /home/phablet/.ssh/authorized_keys

Récupérer l’adresse IP du téléphone à partir du System Settings>Wi-fi> »Votre_réseau_wifi »>IP address (dans mon cas, 192.168.1.6), puis connectez vous en SSH au téléphone.

~$ ssh phablet@192.168.1.6
Welcome to Ubuntu 15.04 (GNU/Linux 3.10.35+ armv7l)

* Documentation: https://help.ubuntu.com/

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

Pour avoir la liste des canaux disponible,

phablet@ubuntu-phablet:~$ sudo system-image-cli –list-channels
[sudo] password for phablet:
b'75HXXXXXXXXX\n'
Available channels:
15.04/devel
15.04/rc
15.04/stable
16.04/community/walid/devel
16.04/devel (alias for: ubports-touch/16.04/devel)
16.04/rc (alias for: ubports-touch/16.04/rc)
ubports-touch/15.04/devel
ubports-touch/15.04/rc
ubports-touch/15.04/stable
ubports-touch/16.04/devel
ubports-touch/16.04/rc
ubports-touch/16.04/stable
ubports-touch/legacy
ubuntu-touch/devel
ubuntu-touch/devel-proposed
ubuntu-touch/devel_rc-propoed
ubuntu-touch/devel_rc-proposed
ubuntu-touch/devel_stable
ubuntu-touch/rc-proposed
ubuntu-touch/stable
phablet@ubuntu-phablet:~$

 

Pour la mise-à-jour vers 16.04 en version stable, il faut utiliser le canal 16.04/stable au lieu de ubports-touch/16.04/stable. Apparement, la liste de canaux n’est pas vraiment à jour.

phablet@ubuntu-phablet:~$ sudo system-image-cli -vvvv --switch 16.04/stable

L’option -vvvv permet d’avoir la mise-à-jour en mode verbeux.

Et voilà, tout devrait être bon maintenant.

 

Sources

How to manually upgrade from OTA-3 to OTA-4
[ADB | FASTBOOT | LINUX COMMANDS] BootLoader, Kernel, Recovery, ROM, Root, Backup
[solved] Mx4 – Installer blocked at « waiting for recovery mode »

 

Publicités