Sparrow : Wazo PBX sur Raspberry Pi

Le jeune projet Sparrow propose un build non officiel de l’architecture armhf de plateforme Wazo. Il vous permet d’héberger un système téléphonique VoIP Open Source complet et programmable sur un Raspberry Pi. Un autre projet qui semble maintenant peu maintenu permettait d’installer un système Xivo ou Wazo (mais en 18.03) sur Raspberry, Raspvivo.

J’apprécie particulièrement cette architecture, car elle permet de manière efficace et avec une faible consommation de faire fonctionner des services performants. Dans la même veine, mais j’en parlerai dans un autre article, j’ai fait fonctionner la plateforme de class 4 de Wazo sur un cluster Kubernetes à base de cartes Raspberry.

J’aime bien la définition de Wazo :

Wazo Platform is an Open Source project writen in python who gets the best from Asterisk and Kamailio to build a telecom platform.

Sparrow peut fonctionner sur n’importe quel système avec une architecture armhf. Il est néanmoins recommandé 2 Go de RAM et une carte SD rapide industrielle d’une taille d’au moins 16 Go. Attention au volume des messages de logs, des backups et surtout des messages vocaux, le chiffre annoncé étant un minimum !

La dernière version est basée sur Wazo 20.01. C’est la seconde version de Sparrow, la première release datant du 3 janvier 2020.

L’ensemble des fonctionnalités de Wazo Platform sont disponibles sous Sparrow  sauf le codec OPUS qui n’est pas fonctionnel. Mais cela n’impactera que les applications WebRTC. De plus, du fait des faibles ressources d’une carte raspberry PI, les capacités de transcodage sont fortement limitées. Veillez bien à correctement configurer vos paramètres SIP.

Le process d’installation est assez simple. Après avoir installé la distribution Raspbian en version minimale (basée sur debian Buster, les dernières releases de Wazo ne supportant plus Jessie mais uniquement Buster), l’installation se déroule en quelques simples lignes de commandes. Le process prend du temps, profitez en pour prendre un bon café et marcher un peu !

Je n’ai pas eu le temps de faire des tests de performances, mais on peut facilement estimer que pour une petite entreprise équipée de 1 ou 2 T0 (2 à 4 appels simultannés) ou une utilisation en homelab, le Raspberry sera suffisament performant.

La documentation est accessible ici : https://sparrow.b5.pm/docs

et le repo github : https://github.com/benasse/sparrow

Merci Benoit Stahl pour ce superbe travail qui met en valeur la force d’une communauté Open Source.

Xivo et Raspberry PI 2 : l’IPBX idéal pour les petites sociétés ?

Intégrer Xivo, IPBX libre sur Asterisk, et une carte low cost, la Raspberry PI 2 pour proposer une solution de téléphonie low cost aux TPE.

Pouvoir utiliser une carte Raspberry PI pour faire un petit IPBX est un projet intéressant : compacité et faible consommation. Plusieurs manières existent afin d’atteindre cet objectif. Naturellement, installer un Asterisk ou un FreeSwitch tout frais sur une distribution adaptée à la carte, la Raspbian, est la première idée qui a germée dans mon esprit. L’exercice fut concluant, mais les performances assez limitées, entre 3 et 5 appels simultanés selon la configuration et le système. Un peu juste, et difficilement utilisable en production sans une interface graphique digne de ce nom (sauf pour des projets de niche).

Depuis, la carte Raspberry PI 2 a vu le jour avec des spécifications en hausse ouvrant ainsi d’intéressantes perspectives. Les limitations techniques de la carte étant repoussée, une utilisation en IPBX pour les petites entreprises devient envisageable. Cette carte embarque assez de puissance afin de pouvoir faire tourner Asterisk ou FreeSwitch et un petit serveur web pour la configuration et l’interface utilisateur. N’ayant pas eu beaucoup de temps disponible, ni de carte Raspberry PI 2 sous la main, je n’ai pas encore monté de lab.

Mais un intégrateur Nantais, Geoffroy RABOUIN a remonté ses manches et a passé quelques nuits blanches afin d’intégrer Xivo, un célèbre IPBX Open Source basé sur Asterisk offrant une interface web agréable,  à une carte Raspberry PI 2. Au passage, un grand merci à la community manager de Xivo, Valérie DAGRAIN, de m’avoir fait découvrir ce projet. Le nom de ce sympathique projet : simplement Raspivo, Xivo sur Raspberry PI 2.

A l’heure de la rédaction de cet article, Raspivo intègre la dernière version de Xivo, la 15.12.

La documentation d’installation est disponible en ligne : installation de Raspivo depuis les dépôts de Iris Networks (société de Geoffroy RABOUIN). Le process est vraiment simple. Selon le créateur, les performances sont très intéressantes. Il a en effet atteint 12 appels simultanés sans déformation de la voix. Reste à voir les limitations, je pense notamment à certaines fonctionnalités gourmandes en CPU et en I/O.

Ce projet mérite une attention toute particulière, de part la qualité de la distribution Xivo (une de mes 2 solutions de téléphonie libre préférées), et d’autre part par les caractéristiques de la carte Raspberry PI 2 : faible consommation, pas de pièces mobiles et taille réduite.

Dès que j’ai un peu de temps et une carte sous la main, je testerai Raspivo et je vous ferai un retour détaillé.

Raspivo présente une réelle alternative permettant aux petites sociétés de disposer d’une solution de téléphonie libre low cost, un IBPX asterisk simple et fiable.

HowTo : comment overclocker votre carte Raspberry PI ?

Introduction

Vous adorez votre carte Raspberry mais vous trouvez qu’elle manque un peu de pêche pour certains projets, notamment multimédia ? je vais vous guider afin de doper (légalement, on est pas dans le cyclisme 🙂 ) votre Raspberry.

Les étapes de l’overclocking

Pour cela, nous avons 3 étapes (quand même !) à suivre :

  1. ajouter un radiateur à notre carte
  2. mettre à jour notre distribution
  3. paramétrage

Choix du radiateur

Il faut en effet ajouter un radiateur, car en augmentant les fréquences et les tensions, le chip va émettre plus de chaleur qu’il va falloir dissiper. Il faut bien avoir en tête, que le vieillissement d’un composant électronique s’accélère très fortement avec l’augmentation de sa chaleur (et l’augmentation n’est pas linéaire). Il existe plusieurs modèles (je ne les ai pas testé, il faudrait avoir des specs plus détaillées pour comparer les performances).

Sur Kubii.fr, on trouve un dissipateur en céramique (Réf. : 1892471 – 2,51 €TTC, sur kibuck.fr), on trouve un kit de 3 dissipateurs pour 1,49 €TTC, et enfin, un superbe boitier intégrant 3 dissipateurs sur le site de Adafruit à 74,95 $ (ah oui, ce n’est pas donné !)

Mise à jour du système

Maintenant que votre carte est bien protégée de l’excès de chaleur, il est essentiel de mettre à jour votre firmware. Pour cela, il faut lancer la commande :

sudo rpi-update

Si aucune erreur n’est détectée, vous devez redémarrer afin d’activer le nouveau firmware.

Paramétrage

Passons à l’étape d’overclocking.

Il est possible de modifier les fréquences du microprocesseur, de la mémoire ainsi que du processeur graphique.

Afin de modifier ces valeurs, il faut éditer le fichier config.txt qui se trouve dans /boot . Ce fichier est lu par le GPU avant l’initialisation du processeur ARM.

sudo nano /boot/config.txt

A noter, que sous la distribution Rasbian, il est possible de modifier ces paramètres directement en tapant sudo raspi-config et ceci sans perte de garantie. Pour ceux qui fonctionne sur une autre distribution n’intégrant pas encore cette fonctionnalité, il faut modifier les variables suivantes :

force_turbo=0

en passant la variable à 1, on désactive le mode « turbo », c’est à dire la possibilité au système d’adapter les fréquences en fonction de la charge et de la température. A part des applications très spécifiques, ce n’est pas recommandé, car en plus d’accélérer le vieillissement, on augmente la consommation électrique.

Passons aux variables permettant de régler les fréquences :

  • arm_freq : fréquence du processeur ARM en MHz. Défaut : 700.
  • core_freq : fréquence du GPU en MHz. Défaut: 250.
  • sdram_freq : fréquence de la mémoire SDRAM en MHz. Défaut : 400.

Il est aussi possible de définir des valeurs minimum :

  • arm_freq_min : valeur min de arm_freq utilisée pour la gestion dynamique de la fréquence. Défaut : 700
  • core_freq_min : valeur min de core_freq utilisée pour la gestion dynamique de la fréquence. Défaut : 250
  • sdram_freq_min : valeur min de sdram_freq utilisée pour la gestion dynamique de la fréquence. Défaut : 400

Attention, avant de choisir vos fréquences, il est important de comprendre qu’elles sont liées entre elles. Le processeur GPU core, h264, v3d and isp partage la même PLL, ainsi les fréquences sont liées.

Il est aussi possible de changer la tension, mais dans ce cas la garantie saute (d’autres éléments peuvent faire sauter la garantie, attention) !

Après avoir modifié le fichier, redémarrer afin que les nouveaux paramètres soient bien pris en compte.

Vérifications d’usage

Maintenant, il possible de vérifier en ligne de commande, différentes données :

  • Fréquence du processeur ARM : /opt/vc/bin/vcgencmd measure_clock arm
  • Fréquence du core : /opt/vc/bin/vcgencmd measure_clock core
  • Température du chip BCM2835 : /opt/vc/bin/vcgencmd measure_temp
  • Tensions core et mémoire : vcgencmd measure_volts core (remplacer core par sdram_c, sdram_i et sdram_p pour les données de la mémoire)

Allez, je vous donne un petit script afin de voir les données en une seule commande :

#!/bin/sh echo Core `/usr/bin/vcgencmd measure_temp` echo Core `/usr/bin/vcgencmd measure_volts` echo sdram phy `/usr/bin/vcgencmd measure_volts sdram_p` echo sdram i/o `/usr/bin/vcgencmd measure_volts sdram_i` echo sdram controller `/usr/bin/vcgencmd measure_volts sdram_c` echo Arm `/usr/bin/vcgencmd measure_clock arm` echo Core `/usr/bin/vcgencmd measure_clock core` echo v3d `/usr/bin/vcgencmd measure_clock v3d`

Conclusion

On peut encore booster sa carte avec divers paramètres, en désactivant certaines fonctions si elles ne sont pas utiles comme par exemple, l’USB, permettant de récupérer 10% de puissance complémentaire au processeur ARM. Il faut avant tout bien définir ses besoins, et régler aux petits oignons votre superbe Raspberry.

Good hack !