The Daily Shaarli
Résumé : L'interface de Linphone, l'un des rares téléphones en logiciel libre encore maintenu devient agréable (et unifiée sur Windows/Android/GNU/Linux) à partir de la version 4.X. Attention si tu utilises un VPN sur ton ordiphone (smartphone) Android. Si Linphone est démarré après le VPN ou pendant qu'Android n'a pas encore pris en compte les serveurs DNS récursifs du fournisseur de VPN, alors il échouera à s'enregistrer sur le serveur téléphonique sans lever d'alerte explicite. Les autres logiciels de téléphonie disponibles sur F-Droid (Lumicall, Sipdroid, SIP Caller) sont confrontés au même problème. Il faut alors fermer et ré-ouvrir Linphone (Paramètres Android -> « Applications » -> « Linphone » -> « Forcer l'arrêt »). Si ça ne suffit pas, remplacer le nom du serveur téléphonique par son adresse IP dans le champ « Serveur mandataire » de la configuration d'un compte SIP dans les options de Linphone sans modifier le reste de la valeur de ce champ + cocher l'option « Outbound proxy - Faire passer tous les appels via le serveur mandataire SIP » + redémarrer Linphone. À utiliser avec parcimonie car l'adresse IP associée à un nom peut changer sans préavis, ce qui rend caduque la configuration.
VOIP = téléphonie sur Internet. Toute la téléphonie (box, mobile, téléphonie d'entreprise) passe par Internet à moment donné. J'ai écrit les trois premiers volets de la série il y a bientôt cinq ans : Tome 1 : Free Mobile, Tome 2 : des implémentations bancales et Tome 3 : Numericable. Depuis, je me suis tenu à l'écart de la VOIP… jusqu'à récemment. Et là, c'est le drame.
Linphone est l'un des téléphones en logiciel libre encore maintenu. Il faut être honnête, l'interface graphique s'est bonifiée avec le temps, notamment à partir des versions 4.X. Interface plus simple à prendre en main et unifiée pour winwin / GNU/Linux / Android.
J'ai une ligne téléphonique souscrite chez OVH. Forfait « VOIP découverte ».
Je veux l'utiliser sur mon ordiphone (smartphone) Android. En 2017, j'utilisais le logiciel CSIPSimple. Il était disponible sur F-Droid, le magasin d'applications libres pour Android. Il fonctionnait impeccable sans faire chier. C'était la crème. Sauf qu'il n'est plus maintenu et qu'il a été retiré de F-Droid. Linphone est disponible dans F-Droid, alors allons-y.
J'ajoute mon compte SIP à la configuration de Linphone en utilisant l'assistant. « Utiliser un compte SIP ». « Nom d'utilisateur » = « Login / User name » dans l'email d'OVH = numéro de téléphone. « Mot de passe » = celui que j'ai créé dans le manager d'OVH. « Domaine » = « Domain / Registrar » dans l'email d'OVH = « sip5.ovh.fr » dans mon cas. Transport = UDP (OVH ne prend pas ne charge TLS, ce qui est dommage).
Linphone ne parvient pas à s'enregistrer auprès d'OVH. « Connexion en cours » puis « Connexion échouée », affiche-t-il. Vu les ratés de l'assistant sans la version GNU/Linux de Linphone, je modifie les paramètres du compte SIP à la main dans les paramètres : ça ne fonctionne pas mieux.
Les autres logiciels de téléphonie disponibles sur F-Droid (Lumicall, Sipdroid, SIP Caller) sont confrontés au même problème.
À court d'idées, j'active le journal de Linphone. C'est dans le menu -> « Options » -> « Avancé » -> « Activer les traces de débogage ». Il faut fermer et ré-ouvrir Linphone : Paramètres Android -> « Applications » -> « Linphone » -> « Forcer l'arrêt ». Le journal sera stocké dans /data/data/org.linphone/files/linphone1.log (source). Je le copie sur ma carte SD à l'aide du gestionnaire de fichiers Android Ghost Commander. J'imagine qu'on peut également le récupérer avec adb.
Que lit-on dans ce journal ? ERROR channel_res_done: DNS resolution failed for sip5.ovh.fr.
Hum… Pourtant plus haut, on lit aussi :
MESSAGE Resolver is using DNS server(s):
MESSAGE 89.2.0.1
MESSAGE 89.2.0.2
MESSAGE 80.67.169.12
MESSAGE 80.67.169.40
Hum… J'utilise un VPN OpenVPN (avec l'application non officielle mais disponible sur F-Droid OpenVPN for Android) qui débouche chez un Fournisseur d'Accès à Internet de confiance. On a vu Bouygues Telecom modifier les réponses DNS, on a vu SFR modifier les réponses web, etc.
J'utilise également le pare-feu Android AFWall+. Comme tous les logiciels, Linphone est contraint d'émettre uniquement via le VPN. Je bloque les adresses IP des récursifs DNS de mes opérateurs (mobile, Wi-Fi, etc.) afin d'éviter les fuites DNS c'est-à-dire quand la résolution des noms s'effectue via le VPN mais en utilisant les serveurs DNS récursifs de mes opérateurs plutôt que ceux de mon fournisseur de VPN, ce qui informe mes opérateurs de mes usages alors que si j'utilise un VPN, c'est précisément pour qu'ils en sachent rien.
Linphone mélange les serveurs DNS récursifs de mon opérateur réseau (Numericable) et les serveurs DNS récursifs de mon FAI de confiance. Forcément, une fois le VPN établi, les récursifs DNS de Numericable ne répondent plus à Linphone (car ils répondent uniquement aux clients, identifiés par leur adresse IP), donc il échoue à résoudre le nom du serveur de téléphonie d'OVH.
C'est bizarre. Ce VPN pose problème à aucun autre logiciel ! Où Linphone a-t-il récupéré cette liste de serveurs DNS récursifs ? Il le consigne dans son journal :
MESSAGE [Platform Helper] [Network Manager 24] Found DNS host 89.2.0.1 from network WIFI with default route
MESSAGE [Platform Helper] [Network Manager 24] Found DNS host 89.2.0.2 from network WIFI with default route
MESSAGE [Platform Helper] [Network Manager 24] Found DNS host 80.67.169.12 from active network VPN
MESSAGE [Platform Helper] [Network Manager 24] Found DNS host 80.67.169.40 from active network VPN
Ok, donc par Android lui-même. Ça va être compliqué d'aller contre ça.
Si je tentais d'utiliser que des adresses IP dans la configuration de Linphone ? Dans les paramètres de Linphone (Menu -> « Options »), je sélectionne mon compte SIP. Je change la valeur du champ « Domaine » pour « 91.121.129.29 », c'est-à-dire l'adresse IP associée au nom « sip5.ovh.fr » à l'heure actuelle (attention, ça peut changer sans préavis !). Je remplace aussi « sip5.ovh.fr » par son IP dans le champ « Serveur mandataire » sans toucher au reste de la valeur du champ. Je coche l'option « Outbound proxy - Faire passer tous les appels via le serveur mandataire SIP ». Je redémarre Linphone.
Ça ne fonctionne toujours pas. Cette fois-ci, Linphone reste bloqué sur « Connexion en cours ».
Que consigne-t-il dans son journal ?
MESSAGE channel [0x8785b0c0]: received [345] new bytes from [UDP://91.121.129.29:5060]:
SIP/2.0 404 Domain not bound
CSeq: 23 REGISTER
Hum… Linphone reçoit une réponse du serveur téléphonique d'OVH à son message d'enregistrement (SIP REGISTER) lui disant « Domain not bound ».
Si, dans les paramètres du compte SIP, je laissais l'adresse IP dans le champ « Serveur mandataire » et que je remettais « sip5.ovh.fr » dans le champ « Domaine », alors Linphone contacterait le serveur d'OVH sans tenter de résoudre son nom grâce au champ « Serveur mandataire » puis il lui demanderait à s'enregistrer sur le domaine « sip5.ovh.fr » connu d'OVH.
Je fais ça. Je redémarre Linphone. Ça fonctionne \o/
En vrai, ce cas est difficile à reproduire. Il semble se produire quand Linphone a été démarré avant le VPN et/ou qu'Android n'a pas encore pris en compte les récursifs DNS appris par le VPN.
Plutôt que de changer la configuration de Linphone, je recommande de le fermer et de le ré-ouvrir (Forcer l'arrêt dans les paramètres Android, voir ci-dessus). C'est plus pérenne que d'enregistrer une adresse IP dans une configuration, car, par définition, elle peut changer sans préavis, ce qui mettra Linphone hors service.
Mais, si Linphone refuse ponctuellement de fonctionner même s'il a été (re)démarré après le VPN et/ou que t'es dans l'urgence, tu sais quoi faire : remplacer le nom du serveur téléphonique par son adresse IP dans le champ « Serveur mandataire » de la configuration d'un compte SIP dans les options de Linphone.
Résumé : Flatpak est un énième gestionnaire de logiciels qui, comme tous, promet monts et merveilles. Utiliser plusieurs gestionnaires (apt-get, flatpak, appimage, etc.), c'est devoir jongler entre eux pour installer et mettre à jour des logiciels. C'est chiant, comme télécharger le binaire Windows sur le site web de chaque éditeur… Sans compter la mise à jour de chaque logiciel lors d'une faille de sécurité dans une bibliothèque commune… Si Flatpak ne crée par un raccourci dans le menu des logiciels installés, il faut trouver l'identifiant du logiciel avec flatpak list (ou flatpak list -v si l'identifiant est tronqué) puis lancer le logiciel avec flatpak run <identifiant>. On peut créer un raccourci dans le menu des logiciels en remplissant le champ « commande » avec ça.
Flatpak est un gestionnaire de logiciels pour GNU/Linux. Il vient avec ses propres dépôts de logiciels. Le but est d'embarquer tout un logiciel et ses dépendances dans un environnement cloisonné du reste du système.
La distribution du logiciel serait ainsi facilitée : plus besoin de créer un paquet pour chaque système de la famille GNU/Linux et plus besoin de se demander quelle version de telle dépendance est embarquée dans tel système, etc.
Les inconvénients ? Le premier est qu'on duplique les gestionnaires de logiciels, donc on complexifie l'installation et la mise à jour des logiciels d'un système : tel logiciel se met à jour avec flatpak update, tel autre avec apt-get upgrade, etc. Comment rien oublier ?! Le deuxième inconvénient est qu'il faut mettre à jour chaque logiciel à chaque fois qu'une faille de sécurité est trouvée dans une bibliothèque de fonctions commune à plusieurs logiciels (OpenSSL, par exemple).
Bref, pour moi Flatpak est une mauvaise idée.
J'ai été amené à utiliser Flatpak pour installer la dernière version de Linphone, un logiciel de téléphonie en logiciel libre.
Je constate que, même pas un mois après, Linphone utilise AppImage, un autre moyen de distribuer des logiciels… … … Vive la stabilité des choix !
La marche à suivre pour installer Linphone était donnée sur le site web officiel de Linphone :
sudo apt-get install flatpak
flatpak --user install --from https://linphone.org/flatpak/linphone.flatpakref
À la fin de l'installation, Flatpak dit créer une entrée dans le menu des applications. J'ai bien regardé : ce n'est pas le cas avec mon menu Mate. L'origine du problème doit être de mon côté, car cela fonctionne sur des Ubuntu.
Du coup, comment démarrer un logiciel Flatpak ? Évidemment, saisir son nom dans un terminal ne fonctionne plus…
Il faut utiliser la commande flatpak run <identifiant_unique_du_logiciel>.
Comment récupère-t-on l'identifiant unique d'un logiciel Flatpak ? Colonne « Application » dans la sortie de la commande flatpak list.
Et si cet identifiant n'est pas complet ? Exemple : ça affiche « …m.belledonnecommunications.linphone ». Il faut utiliser flatpak list -v.
On récupère l'identifiant complet, « com.belledonnecommunications.linphone » que l'on peut utiliser : flatpak run com.belledonnecommunications.linphone.
Youpi !
On peut créer un raccourci dans notre menu Mate (commande = flatpak run com … ).
Merci Flatpak, mais non merci !
Résumé : L'interface de Linphone, l'un des rares téléphones en logiciel libre encore maintenu devient agréable (et unifiée sur Windows/Android/GNU/Linux) à partir de la version 4.X. La version Windows crashe parfois quand le codec Opus est utilisé, donc il faut le désactiver. Parfois, il est impossible de répondre à un appel car l'application ne réagit plus. Je déconseille la version provenant du Windows Store : si l'on réduit la fenêtre lors d'un appel, le son ne circule plus…
VOIP = téléphonie sur Internet. Toute la téléphonie (box, mobile, téléphonie d'entreprise) passe par Internet à moment donné. J'ai écrit les trois premiers volets de la série il y a bientôt cinq ans : Tome 1 : Free Mobile, Tome 2 : des implémentations bancales et Tome 3 : Numericable. Depuis, je me suis tenu à l'écart de la VOIP… jusqu'à récemment. Et là, c'est le drame.
Linphone est l'un des téléphones en logiciel libre encore maintenu. Il faut être honnête, l'interface graphique s'est bonifiée avec le temps, notamment à partir des versions 4.X. Interface plus simple à prendre en main et unifiée pour winwin / GNU/Linux / Android.
Sur Windows (winwin), il y a actuellement deux versions : celle disponibles sur le site web officiel de l'éditeur et celle disponible dans le winwin store.
La version winwin "standard" crashe parfois lorsque le codec audio libre Opus est utilisé… L'origine est souvent l'installation d'un pack de codecs (qui fait encore ça en 2020 au lieu d'utiliser VLC ?!). A priori, ce n'était pas le cas. Il faut donc désactiver, à regret (c'est un bon codec), Opus dans la rubrique audio des paramètres de Linphone.
Parfois, cette même version se met à devenir extrêmement lente genre la fenêtre de Linphone est ouverte, tu entends sonner, mais tu ne peux pas cliquer pour répondre. Soit parce que l'application est en mode « ne répond plus », soit parce qu'actionner le bouton répondre est vain.
J'ai gardé le meilleur pour la fin. Avec la version winwin store de Linphone, si, durant un appel, tu réduis la fenêtre afin qu'il reste uniquement l'icône de Linphone dans la zone de notification, alors pouf, le son ne circule plus. L'appel suit son cours, il n'est pas terminé, mais aucun interlocuteur entend l'autre. Linphone version winwin store peut être mis en arrière-plan (c'est-à-dire qu'il y a un autre logiciel au premier plan), mais pas être réduite dans la zone de notification. :D
Résumé : L'interface de Linphone, l'un des rares téléphones en logiciel libre encore maintenu devient agréable (et unifiée sur Windows/Android/GNU/Linux) à partir de la version 4.X. L'assistant de configuration de la version 3.12 empaquetée dans Debian GNU/Linux ne permet pas l'ajout d'un compte SIP existant. Il faut soit utiliser la version 4.X de Linphone distribuée sur le site web officiel de l'éditeur, soit ajouter le compte à la main depuis les préférences en copiant l'adresse du domaine dans le champ « Adresse du proxy SIP ».
VOIP = téléphonie sur Internet. Toute la téléphonie (box, mobile, téléphonie d'entreprise) passe par Internet à moment donné. J'ai écrit les trois premiers volets de la série il y a bientôt cinq ans : Tome 1 : Free Mobile, Tome 2 : des implémentations bancales et Tome 3 : Numericable. Depuis, je me suis tenu à l'écart de la VOIP… jusqu'à récemment. Et là, c'est le drame.
Linphone est l'un des téléphones en logiciel libre encore maintenu. Il faut être honnête, l'interface graphique s'est bonifiée avec le temps, notamment à partir des versions 4.X. Interface plus simple à prendre en main et unifiée pour winwin / GNU/Linux / Android.
La version 3.12 empaquetée dans Debian GNU/Linux Buster (dernière version stable à ce jour) comporte un bug qui prolongue celui déjà présent dans la version 3.6 de Linphone empaquetée dans Debian GNU/Linux Stretch : l'assistant de configuration est inutilisable pour ajouter un compte SIP existant à la configuration de Linphone. Si tu ne veux pas être embêté, utilise la version 4.X distribuée sur le site web officiel de Linphone.
J'ai une ligne téléphonique souscrite chez OVH. Forfait « VOIP découverte ».
Je démarre l'assistant de configuration de comptes de Linphone. Je coche que j'ai déjà un compte SIP. Nom d'utilisateur = « Login / User name » dans l'email d'OVH = numéro de téléphone. Mot de passe = celui que j'ai créé dans le manager d'OVH. Domaine = « Domain / Registrar » dans l'email d'OVH = « sip5.ovh.fr » dans mon cas. L'email d'OVH ne dit pas de configurer un proxy SIP, donc je ne le fais pas. Je clique sur le bouton « Appliquer ». Le message suivant s'affiche « Merci. Votre compte est maintenant configuré et prêt à être utilisé. ».
L'assistant Linphone n'a pas ajouté ma ligne téléphonique à sa configuration. Même si je remplis le champ proxy avec la même valeur que le domaine, Linphone n'ajoute pas ma ligne téléphonique.
Avec la version 3.6 de Linphone sous Debian GNU/Linux Stretch, on avait un problème similaire : le compte été ajouté, mais il n'était pas affiché dans la liste des comptes disponibles lorsqu'on le créeait depuis cet endroit. Il fallait fermer les paramètres de Linphone et les ré-ouvrir pour voir le compte apparaître dans la liste.
Revenons à la version 3.12. Il faut ajouter le compte à la main. Je vais dans le menu « Options » -> « Préférences » -> onglet « « Gérer mes comptes SIP » -> bouton « Ajouter ». « Votre identité SIP » = sip:<Login>@<Domain>. On ne peut pas valider tant que l'on ne saisit pas un proxy (c'était déjà le cas avec Linphone 3.6). Allons-y : « Adresse du proxy SIP » : « sip:sip5.ovh.fr. Je peux enfin valider et mon compte est enfin ajouté.
J'ai pensé à une erreur dans la traduction (« registrar » traduit à tort en « proxy »), mais, en demandant l'utilisation de la langue anglaise dans « Préférences » -> « Interface utilisateur », on constate que ce n'est pas le cas.
Les versions 4.X de Linphone n'ont pas ce bug : l'assistant de configuration y est parfaitement fonctionnel. Quand j'ai écrit, en intro, que l'interface graphique s'est bonifiée, je ne plaisantais pas. :D
