Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Ève

Les aventures d'un débutant dans le monde de la téléphonie SIP

Première rédaction de cet article le 29 octobre 2010
Dernière mise à jour le 1 novembre 2010


Personnellement, je suis plus à l'aise avec le shell et les scripts Python qu'avec les beautés merveilleuses du multimédia. Je sais envoyer et recevoir du courrier, me connecter en IRC ou en XMPP mais la téléphonie, c'est autre chose. Mais il ne faut jamais rester ignorant, et j'ai donc décidé d'essayer la téléphonie sur IP avec le protocole SIP. Deux motivations : apprendre un peu plus sur SIP et téléphoner moins cher.

Premièrement, un point important sur SIP. Ce protocole, décrit dans le RFC 3261 (et dans d'innombrables RFC auxiliaires), a de nombreuses possibilités et même les experts SIP (dont je ne fais pas partie) en oublient souvent. Par exemple, son mode de fonctionnement le plus courant, car calqué sur la téléphonie classique, consiste à avoir un compte chez un opérateur (SIP provider) comme, par exemple :

  • SIPgate, « Only for US residents »,
  • OVH, très bon marché,
  • VoIPcheap,
  • OnSIP qui, à en juger par ses prix, s'adresse à des utilisateurs professionnels,
  • mais aussi Ekiga ou SIP2SIP, purement IP et qui n'offrent pas de passerelle vers le PSTN mais qui sont gratuits.

Le logiciel SIP (le softphone) s'enregistre lors de son démarrage auprès dudit opérateur (section 10 du RFC 3261). Il pourra ensuite passer des coups de téléphone, y compris vers le traditionnel réseau téléphonique non-SIP, avec ses archaïques numéros. Mais SIP permet aussi des appels directs, de logiciel à logiciel, sans passer par un opérateur. Cela ne permet pas d'appeler les téléphones traditionnels (il faut bien que quelqu'un paie l'acheminement sur le réseau traditionnel, c'est l'opérateur si on est abonné). Cela ne permet pas non plus d'avoir un service de répondeur, cela ne permet pas d'appel entrant (si on est derrière un routeur NAT) mais, pour les appels sortants, c'est quand même cool. Et cela a l'avantage d'être une solution 100 % Internet, y compris dans son adressage (on se sert d'adresses SIP, des URI, comme helpdesk@voip.apnic.net et non plus de numéros de téléphone) et gratuite (ou, plus exactement, incluse dans le prix de l'accès à l'Internet). Et cela évite de confier ses données privées à un tiers. À noter enfin qu'on peut aussi être son propre opérateur, en installant son propre serveur, par exemple Kamailio (ex-OpenSER). Je n'ai pas testé cette solution.

Donc, pour résumer, pour faire du SIP, il faut :

et, si on veut aller vers le PSTN :

  • Un opérateur SIP. Étant abonné de Free, j'ai d'abord utilisé Freephonie, l'opérateur SIP de Free, qui est inclus dans l'abonnement de base.

Freephonie est un service très agréable. On le configure depuis sa console d'administration Free (« Téléphonie » -> « Gestion de mon compte SIP / Gérer mon téléphone wifi »). On reçoit une adresse SIP du type NNNNNNNN@freephonie.net (oui, hélas, l'adresse inclut un numéro de téléphone) et tous les appels que feront le logiciel SIP « viendront » du numéro de la Freebox. Attention toutefois, pour faire des économies en appelant des pays lointains, on ne peut pas utiliser Freephonie, qui ne marche plus avec l'étranger depuis 2007 (voir aussi http://www.universfreebox.com/article4058.html). On trouvera plein d'autres informations sur Freephonie sur le site non-officiel.

Je me suis ensuite abonné au service d'OVH. Techniquement, tout marche très bien, je peux appeler la Chine, on se comprend, il me reste à voir sur le long terme (suprises éventuelles pour la facturation), etc. L'interface du client (qu'OVH apelle le manager) est amusante car SIP y est un ajout récent et, pour voir la facture, il faut choisir un... « domaine » dont le nom est le numéro de téléphone.

Maintenant qu'on a un abonnement, avec un téléphone Android (en l'occurrence un HTC Desire), que se passe-t-il ? J'ai choisi pour l'instant le logiciel cSIPsimple. Il est libre, fait tout ce qu'on peut souhaiter, est activement développé, des nouvelles fonctions sont ajoutées lorsqu'on demande, il marche bien avec plusieurs comptes (et, dans une version actuellement beta, avec des comptes « locaux », sans opérateur). Parmi les choses agréables avec cSIPsimple, les « wizards » de configuration pour les opérateurs connus.

J'avais d'abord testé SIPdroid, logiciel libre. Il n'est pas évident à configurer, surtout si on a eu le malheur de le tester sans accès au réseau : c'est alors un festival de plantages. Si on est connecté à un réseau, ça marche mieux. La configuration est simple mais j'avoue ne pas comprendre pourquoi il y a deux menus « Réglages du compte SIP ». Est-ce pour permettre d'avoir plusieurs comptes ? Mais, alors, pourquoi seulement deux ? Et comment sélectionner l'un ou l'autre ? En tout cas, avec un compte Freephonie, tout marche (mettre le numéro de téléphone comme « Nom d'utilisateur pour l'authentification » et « Nom d'utilisateur appelant », et freephonie.net comme domaine). Je peux alors appeler un numéro de téléphone, qui verra un appel comme s'il venait de ma Freebox, et aux tarifs de Free, pas à ceux de l'opérateur mobile. Notez qu'il vaut mieux ne pas se tromper de numéro, en cas de problème, SIPdroid ne fournit aucune explication.

Je n'ai pas trouvé où configurer un compte « SIP direct », sans opérateur. Peut-être faut-il obligatoirement s'enregistrer à pbxes.org, comme semble l'indiquer la FAQ. Et je n'ai pas trouvé comment déclarer plusieurs comptes et passer facilement de l'un à l'autre. Globalement, SIPdroid m'a paru faible, côté finition. Un bon article sur sa configuration est http://www.android-software.fr/sipdroid et il y a un autre article sur sa configuration avec Freephonie.

Et avec 3cx, logiciel commercial ? Il y a nettement moins de problèmes. Comme SIPdroid, on peut configurer pour le service Freephonie et cela fonctionne, la documentation est claire. On peut aussi lire un article en français sur la configuration avec Freephonie.

Dans les deux cas, ces deux logiciels ne semblent pas permettre les appels directs en SIP pur, et 3cx ne semble même pas fournir de moyen d'indiquer un URI comme adresse à joindre.

Je n'ai pas non plus été convaincu par un autre logiciel libre, Linphone, qui ne permet apparemment que d'enregistrer un seul compte SIP, ce qui est peu réaliste : il n'y a pas d'opérateur SIP assez complet pour qu'on puisse n'utiliser que lui.

Et sur un PC avec un Unix ? J'ai testé sur une machine Debian le logiciel Twinkle. D'abord, un gros problème avec Linux : le son est toujours très difficile à configurer. J'arrive à écouter sans trop de problème mais enregistrer est une autre histoire. Il m'a fallu pas mal de réglages pour obtenir un son acceptable (merci à Vincent Tondellier et Jean-Yves F. Barbier pour leur aide). Pour tester, j'enregistre du son avec :

% arecord -f cd -d 3 /tmp/test-mic.wav
Recording WAVE '/tmp/test-mic.wav' : Signed 16 bit Little Endian, \
  Rate 44100 Hz, Stereo

Et j'écoute le fichier résultant avec aplay ou mplayer. Ma carte son est :

% lspci
...
00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 02)
...
% arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC883 Analog [ALC883 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 1: ALC883 Digital [ALC883 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 2: ALC883 Analog [ALC883 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

À l'heure actuelle, la qualité sonore est encore perfectible, il va falloir que je continue les réglages. Sur un autre PC, avec une autre carte son, cela marche nettement mieux. Le son, sur Linux, ce n'est pas facile. Règle générale du son sur Linux : 95 % des problèmes se résolvent depuis alsamixer. Par exemple, à mes débuts, dans la vue "Capture" :

  • Les "Input source" étaient à "Mic" alors qu'il fallait indiquer "Front mic", le micro avant de mon PC.
  • Les "Capture" n'étaient pas activés (barre d'espacement, un L et un R doivent alors apparaître). En raison de ces deux premiers points, je n'enregistrais que du silence.
  • Les valeurs de "Capture" et "Digital" étaient trop élevées (dans la zone rouge). Le son saturait complètement. J'ai abaissé jusqu'à la zone verte.

En attendant, Twinkle, lui, fonctionne bien. Le configurer pour le service Freephonie est simple (User name et Authentication name le numéro de téléphone Free et Domain freephonie.net) et cela fonctionne.

Twinkle gère facilement des profils multiples et permet de passer de l'un à l'autre. Si on laisse le champ Authentication name vide, Twinkle n'essaie pas de s'enregistrer et on peut faire sans problème des appels directs, sans opérateur.

Au fait, pour tester SIP, sans déranger ses copains en les appelant toutes les trente secondes pour vérifier le résultat d'un changement de réglage, il existe plusieurs listes de numéros ou d'URI à appeler, avec un robot en face :

Pour les appels SIP directs, j'ai surtout utilisé l'excellent service d'écho echo@iptel.org, qui vous répète ce que vous lui dites au téléphone. Si vous aimez regarder des paquets sur pcapr.net, une session complète entre Twinkle et ce service figure en http://www.pcapr.net/view/bortzmeyer+pcapr/2010/9/4/13/sip-direct.pcap.html. De nombreuses autres traces SIP sont disponibles. Apparemment (mais je ne l'ai pas testé), 123@voip.w3.org fournit un service d'écho équivalent à celui d'Iptel.

Un bon article d'introduction à Twinkle est « Twinkle: My favorite SIP program ». Et merci à Christophe Wolfhugel pour ses conseils très détaillés.

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)