Retour d'expérience Ubuntu Touch

L’article peut sembler opportuniste par rapport aux rumeurs d’abandon de Firefox OS mais il n’en est rien (je le jure votre honneur). C’est seulement que j’ai eu la chance de toucher un Nexus 4 (merci Papa) et j’en ai profité pour tester le système Ubuntu Touch pendant une semaine dans mon utilisation quotidienne. En effet, ce téléphone est un des téléphones de référence pour la société Canonical, toujours maintenu alors que leur OS, très discret, fêtera bientôt sa 3ème bougie. Depuis le lancement de Ubuntu Touch, trois téléphones ont été commercialisés : deux modèles du constructeur espagnol BQ qui semblent très appréciés par la communauté Ubuntu et un modèle assez puissant, le MX4 du constructeur chinois Meizu.

A proposCa commence donc par l’installation du système qui est assez simple car d’une part le Nexus 4 a un booloader facile à déverrouiller et Ubuntu Touch est basé sur un Android, on utilise donc des outils Android (adb, fastreboot) pour flasher le système. Ensuite les outils Canonical interviennent, la voie simple consiste donc à s’installer une version Desktop de Ubuntu 14.04 ou supérieure sur un PC afin d’obtenir ces outils facilement. Je me suis donc basé sur la documentation officielle du Ubuntu Developer et sur cet article qui apporte quelques précisions pour le Nexus 4. On a le choix entre deux canaux de mise à jour système : stable ou développement. Pour me faire une idée la plus juste du système et ne pas la fausser avec des bugs d’une version en cours de développement, j’ai choisi la version stable. Ce qui est intéressant avec Ubuntu Touch, c’est que la version mobile fait partie intégrante du développement de Ubuntu, il ne s’agit d’un développement à part, déconnecté de la version Desktop. Après une installation fraîche, on a donc un téléphone en version 15.04 et on reçoit des OTA (mise à jour) régulièrement. On devrait d’ailleurs bientôt basculer en version 15.10. Canonical a une vision précise de ce qu’il veulent obtenir avec leur système et cela s’appelle Convergence. Un système mobile qui, une fois connecté à un clavier / souris en bluetooth et à un moniteur se transforme en Ubuntu Desktop capable d’exécuter les applications usuelles comme Libre Office ou Gimp.

Pour moi, Convergence est un rêve de Geek et on a du mal à imaginer le quidam moyen utiliser son téléphone comme ordinateur. Et pourtant c’est un des principaux avantages de Touch : on n’a pas un système Unix-like castré mais un système GNU/linux complet. Je me suis plusieurs fois surpris à buter sur la manière de faire certaines choses parce que l’interface graphique n’est pas encore complète sur certains point et qu’il faut raisonner ligne de commande avec les outils usuels : du shell script (SH ou BASH) et des tâches CRON. Mais je m’emballe, faisons d’abord un petit tour en images du système.

L’écran de déverrouillage et ses statistiques amusantes :

ubuntu unlock

ubuntu unlock

L’écran principal avec ses applications en rang d’oignons:

ubuntu application

ubuntu application

Les applications favorites sur la gauche en faisant glisser le bord gauche de l’écran

et les applications lancées en faisant glisser le bord droit de l’écran :

ubuntu unity

ubuntu tasks

Les paramètres système et un aperçu du magasin d’applications :

ubuntu settings

ubuntu store

A part la particularité du tirage des bords d’écran pour faire apparaître la barre latérale ou passer d’une application à l’autre mais on pige vite le coup, on est dans une interface classique, on n’est pas perdu. Les paramètres sont similaires à ce qu’on peut trouver sur d’autres systèmes, le magasin Ubuntu Store est plus conséquent que ce à quoi je m’attendais. De ce que j’ai lu sur les forums de discussion Ubuntu, l’équipe Canonical a mis le focus sur le système dans un 1er temps, les applications viendront ensuite. Voici une liste de ce qui marche et de ce qui dysfonctionne sur le Nexus 4 en 15.04 OTA 8:

Deux sujets ont exigé de mettre le nez dans la ligne de commande car ils ne sont pas (encore) configurables par l’interface graphique : les sonneries personnalisées et la synchronisation des contacts et du calendrier.

D’abord il nous faut un accès SSH sur la bête. On active le mode développeur depuis les paramètres du téléphone et on se connecte avec adb shell pour activer le service SSH Ensuite on copie la clef publique de notre PC sous GNU/Linux dans le téléphone. Ca donne en gros les étape suivantes lues sur AskUbuntu

adb shell android-gadget-service enable ssh
adb shell mkdir /home/phablet/.ssh
adb push ~/.ssh/id_rsa.pub /home/phablet/.ssh/authorized_keys
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

Partant de là, on peut se passer de adb et se connecter directement en SSH sur le téléphone avec l’utilisateur phablet. Comme par défaut sur Ubuntu, le compte root est désactivé et l’utilisateur phablet doit utiliser sudo pour obtenir les super-pouvoirs. Ces pouvoirs ne permettent pas de modifier un fichier du système qui est en dehors du répertoire /home/phablet car par sécurité les partitions sont montées en lecture seule. Donc on sera souvent amené à remonter la partition en lecture-écriture avec la commande suivante :

sudo mount /dev/loop0 / -o remount,rw

On va configurer la synchronisation de nos contacts et du calendrier vers Owncloud par les protocoles de sychronisation cardav et caldav en s’inspirant de cette discussion sur AskUbuntu. D’abord on configure syncevolution :

# les valeurs username, password et syncurl doivent être adaptées
syncevolution --keyring=no --configure --template webdav username=yax password=??? syncurl="mycloud.madyanne.fr" target-config@owncloud
syncevolution --configure --template SyncEvolution_Client sync=none syncURL=local://@owncloud username= password= peerIsClient=1 owncloud

# on configure la synchro des contacts
syncevolution --configure database=https://mycloud.madyanne.fr/remote.php/carddav/addressbooks/yax/contacts backend=carddav target-config@owncloud contacts
syncevolution --configure sync=two-way backend=contacts database="Personnel" owncloud contacts

# on configure la synchro du calendrier
syncevolution --configure database=https://mycloud.madyanne.fr/remote.php/caldav/calendars/yax/personnel backend=caldav target-config@owncloud calendar
syncevolution --configure sync=two-way backend=events database="Personnel" owncloud calendar

# on lance une 1ère synchro qui donne priorité au serveur Owncloud
syncevolution --sync slow owncloud contacts
syncevolution --sync slow owncloud calendar

Ce qui manque juste, c’est une synchronisation périodique avec Owncloud par exemple une fois par heure. D’abord j’ai naïvement ajouté deux lignes dans la CRONTAB :

syncevolution owncloud contacts
syncevolution owncloud calendar

Et bien ça ne marche pas car syncevolution utilise DBUS et qu’en lançant hors shell utilisateur, les variables d’environnement DISPLAY et DBUS_SESSION_BUS_ADDRESS ne sont pas initialisées. Il faut donc récupérer ces valeurs dans le shell script qu’on va lancer en CRON, merci Alexandre. Donc finalement c’est ce script qu’on va mettre sous CRON :

export DISPLAY=:0.0
export DBUS_SESSION_BUS_ADDRESS=$(ps -u phablet e | grep -Eo 'dbus-daemon.*address=unix:abstract=/tmp/dbus-[A-Za-z0-9]{10}' | tail -c35)
syncevolution owncloud contacts
syncevolution owncloud calendar

Amusant non ? J’ai joué pas mal avec la synchronisation des calendriers et des contacts et je peux dire que syncevolution tient bien la route. Le dernier détail indispensable pour moi, c’était de récupérer ma sonnerie habituelle ; il n’y a pas encore la possibilité de télécharger une sonnerie personnalisée. Après le chantier de la synchronisation, c’est un jeu d’enfant : il suffit de la convertir au format OGG et de la placer dans le répertoire /usr/share/sounds/ubuntu/ringtones/.

Après une semaine d’utilisation quotidienne, j’ai trouvé le système crédible et agréable à utiliser. Qu’ils rajoutent un clavier physique et ce sera le meilleur du monde (troll inside !). Ubuntu Touch s’améliore régulièrement. Les développeurs se sont imposés un rythme de 6 semaines pour livrer une OTA. L’inconnue pour moi c’est comment Canonical espère monétiser son système et combien de temps ils réussiront à le pousser sans que ce soit rentable. En tout cas techniquement, c’est un petit bijou qui fait du pied aux Unixiens, un bol d’air frais quand les systèmes alternatifs au couple Android / IOS jettent l’éponge ou déposent le bilan l’un après l’autre.