Signal sur LineageOS et /e/

TLDR : Ca fonctionne pas mal, mais il y a plein de petits pièges. Et c’est bien plus simple sur /e/ que sur LineageOS (en tous cas sans les Google Apps).

Modes d’installation et de réception des messages

D’abord, il y a plusieurs manières d’installer https://signal.org/fr/ :

  • Via le Google Play : https://play.google.com/store/apps/details?id=org.thoughtcrime.securesms. C’est la méthode recommandée par les auteurs de Signal, mais elle n’est pas possible sur LineageOS (sauf si on a ajouté les Google Apps au moment de l’installation), et passe par un compte Google.
  • Via leur APK : https://signal.org/android/apk/
  • Via l’application Aurora : https://f-droid.org/fr/packages/com.aurora.store/
  • Via le store de /e/
  • Signal n’est hélas pas disponible sur F-Droid, et il n’est pas prévu que ça change pour l’instant. Cela ressemble surtout à une position de principe de l’éditeur de Signal (parce qu’ils ne peuvent pas signer eux-mêmes l’apk) : c’est vraiment dommage qu’ils n’aient pas réussi à trouver un terrain d’entente avec F-Droid

Ensuite, au premier démarrage, Signal décide du mode de réception des messages :

  • Avec le Google Cloud Messaging (GCM) : soit le « vrai » fourni avec les Google Apps, soit un « faux » fourni avec MicroG
  • Ou en mode WebSocket (si le GCM n’est pas détecté)

Suivant les cas cités ci-dessus, l’expérience utilisateur peut grandement varier.

Problème de délai de réception avec MicroG

MicroG essaie de remplacer les composants propriétaire de Google par des implémentations libres. Ca marche plutôt bien pour beaucoup d’applications, mais pas pour Signal (en tous cas actuellement).

Si Signal se connecte au « faux » GCM de MicroG, on reçoit les messages en retard (jusqu’à 1h), et on rate les appels passés via Signal, quand le téléphone est en veille. Évidemment, on ne s’en rend pas compte au tout début. A mon sens, ça le rend inutilisable.

Cela vient probablement du fait que les serveurs de Signal n’arrivent pas à contacter le téléphone, parce que MicroG n’émule pas complètement (ou correctement) le GCM.

J’ai essayé de modifier les paramétrages de MicroG (notamment la valeur du « heartbeat ») pour éviter ce retard mais ça n’a pas fonctionné. J’ai aussi essayé https://play.google.com/store/apps/details?id=com.andqlimax.pushfixer.noroot (ainsi que la version « root » correspondante) mais ça ne résout rien. Je n’ai rien trouvé dans https://support.signal.org/hc/en-us/articles/360007318711 qui puisse aider (j’ai notamment bien vérifié les autorisations et les exceptions à l’économie de batterie). A noter que mes tests ont été faits sur des Samsung S5, mais qu’un ami rapporte la même chose sur un Samsung S6.

Signal choisit lui-même le mode GCM ou WebSocket en fonction de ce qu’il détecte au premier démarrage. Quand il choisit le mode WebSocket, il suggère de désactiver l’économie d’énergie pour Signal (c’est effectivement nécessaire), et affiche une notification persistante « La connexion d’arrière-plan est activée ».

Problème : quand MicroG est installé et que son « faux » GCM est activé, Signal choisit le GCM. Il est possible d’éviter ça : il faut désactiver le GCM dans les options de MicroG avant le premier démarrage de Signal.

Si Signal a déjà été lancé, il est possible de lui demander de refaire la détection : dans les paramètres de Signal, catégorie « Avancés », décocher « Appels et messages Signal », puis le re-cocher. Il va ré-envoyer un SMS pour vérifier le compte Signal, et refaire la détection du GCM. Comme il ne le trouvera pas, il passera en mode WebSocket

Sous /e/, c’est plus simple : Signal est dans le store de /e/, et je suppose qu’ils ont configuré MicroG de telle sorte que Signal ne détecte pas le « faux » GCM, et soit automatiquement en mode WebSocket.

Problème du mode WebSocket : il consomme plus de batterie quand le téléphone est en veille. Ca n’est pas négligeable, mais c’est le meilleur compromis que j’ai trouvé.

Mises à jour

Si Signal a été installé via Aurora, les mises à jour passent par Aurora. Ce n’est pas automatique, il faut lancer Aurora de temps en temps pour qu’il cherche les mises à jour. Et il arrive qu’Aurora ne fonctionne pas (quand il y a des modifications côté Google Play), qui imposent d’attendre que Aurora soit mis à jour (via F-Droid). Donc pas toujours simple.

S’il a été installé via l’apk, il vérifie les mises à jour lui-même, et peut s’upgrader lui-même, mais uniquement quand on est connecté en Wi-Fi. Donc, dans ce cas, il faut se brancher de temps en temps en Wi-Fi sinon on n’est jamais les mises à jour.

S’il a été installé via le store de /e/, les mises à jour sont installées automatiquement par le store.

Conclusion

/e/ a fait un excellent boulot avec leur store, qui simplifie largement les choses avec Signal (même s’il est encore jeune : un bug qui bloquait certaines mises à jour vient d’être résolu : https://gitlab.e.foundation/e/backlog/-/issues/1409). Il n’y a pas de question à se poser, et Signal est d’emblée configuré dans un mode qui fonctionne bien (WebSocket).

Avec LineageOS, il y a d’avantage de risque de se tromper. Voici ce que je conseille :

  • Installer Signal via l’apk, et se brancher en Wi-Fi régulièrement pour avoir les mises à jour
  • Si MicroG est installé, désactiver son émulation de GCM avant le premier lancement de Signal, pour qu’il utilise le mode WebSocket (et réactiver le GCM ensuite)

Évidemment, tout ça est loin d’être parfait. C’est d’autant plus frustrant que je trouve qu’il y a des parallèles entre les objectifs de LineageOS, F-Droid et Signal. Et donc des utilisateurs qui veulent utiliser tout ça ensemble.

Si je devais faire ma lettre au père Noël, je demanderais :

  • que Signal soit disponible sur F-Droid
  • qu’une solution soit trouvée pour que Signal consomme moins de batterie : soit en optimisant le mode WebSocket (ou en mettant en place un autre mode), soit en faisant en sorte que le GCM de MicroG fonctionne mieux

4 réflexions sur « Signal sur LineageOS et /e/ »

  1. Bonjour,

    Je suis tombé par hasard sur cet article qui m’a bien aidé à comprendre la situation de Signal sur les ROM alternatives.

    J’ai installé /e/ sur mon FP3 et j’utilise Signal, installé via Aurora Store (car plus à jour que l’opaque store /e/, à défaut d’avoir l’application disponible sur F-DROID), et par défaut l’application utilise le mode GCM.
    Finalement c’est la meilleure option, non ?

    Phénomène curieux : lorsque j’utilisais la version officielle d’Android pour ce terminal, Signal ne récupérait le message que quand je me lançais l’application. Ton explication est intéressante, j’en déduis qu’il devait y avoir un problème avec GCM.

    Pour aller plus loin, la question qui serait intéressante à se poser maintenant serait : dans la mesure où /e/ est orienté vie privée, principalement à l’encontre de Google, passer par GCM implique-t-il quelque chose au niveau de la vie privée et des données transmises à Google ? Et qu’en est-il de WebSocket ?

    1. Si ton installation de Signal passe par GCM, vérifie que tu reçois bien les messages Signal tout de suite quand ton téléphone est en veille : laisse le quelques heures sans l’utiliser, et demande à quelqu’un de t’envoyer un message via Signal (pas par SMS)
      Cet article date de 6 mois déjà : quand j’avais testé comme ça, les messages arrivaient avec beaucoup de retard. Mais il est possible que ça soit amélioré depuis (côté MicroG?)

      Quant à l’aspect vie privée de passer par GCM, je crois que ça ne fait que « réveiller » le téléphone et l’appli Signal : les données passant par ailleurs. Mais je ne suis pas sûr à 100%.
      Le mode websocket ne passe a priori pas du tout par Google

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *