[XiVO] SCCP et provisioning sur téléphones non supportés et DHCP désactivé (MàJ des greffons)
Va falloir penser à contacter WordPress pour mettre des titres de 1000 caractères tant je traite de cas particuliers…
Bonjour tout le monde !
Encore un cas ultra particulier avec XiVO. Comme d’habitude, je vous explique.
Préambule
Nous avons l’immense joie d’utiliser au quotidien XiVO, une solution de téléphonie IP open source de qualité, performante et complète. Ses développeurs sont très sympa et répondent à toutes nos questions. Heureusement, car nous avons l’indélicatesse et le mauvais goût d’infliger à notre valeureux serveur la gestion de téléphones Cisco IP Phones 7900 Series, dont le fonctionnement est presque aussi obscur à comprendre que la physique quantique, l’intérêt en moins.
Cependant nous aimons beaucoup XiVO, et nous aimons beaucoup nos téléphones et je me sentirai comme une âme en peine si je devais me passer d’un de ces bidules (dont nous avons possédé plus d’un quarantaine).
Dans la suite de cet article, lorsque je parle de téléphone Cisco IP Phone 794x (prévus pour gérer jusqu’à deux lignes), comprenez que c’est valable également pour les modèles 796x (qui eux sont prévus pour gérer jusqu’à six lignes). Il est important de bien comprendre également la différence entre l’enregistrement (le fait qu’un téléphone sache se connecter au serveur pour passer des appels) et l’approvisionnement (ou provisioning, soit le fait qu’un téléphone reçoive ses paramètres depuis le serveur). De plus, il serait de bon ton pour parvenir à effectuer les manipulations que vous sachiez utiliser un peu la ligne de commande Linux, même si je vais tenter d’être le plus didactique possible. De plus les manipulation ont été effectuées avec la version 15.02 et 15.03 de XiVO. Elles devraient fonctionner avec des versions plus anciennes ou plus récentes.
Entrons donc dans le vif du sujet.
1. L’existant
- Nous avons des téléphones Cisco IP Phone 7940 et 7960, ainsi que des 7941 tous supportés mais nous commençons la mise à jour du parc avec des 7945, plus modernes, et également des 7970. Ces modèles ne sont pas supportés par XiVO. Les Cisco ne peuvent être provisionnés qu’en SCCP donc nous les utiliserons tous sur ce protocole, sur nos différents sites à travers nos VPN.
Explication: Pour qu’un modèle puisse s’enregistrer, il faut recompiler le module xivo-libsccp en précisant les modèles à supporter en éditant trois fichiers. C’est rapide à faire et c’est très simple en se connectant au serveur en SSH. Si on ne le fait pas, les modèles non supportés ne pourront qu’afficher « Enregistrement » indéfiniment et seront rejetés par le serveur, les laissant inopérants.
- Nous avons fait le choix de complètement nous passer d’un VLAN dédié à la téléphonie ainsi que du serveur DHCP intégré de XiVO. Nous préférons en effet gérer l’attribution des adresses de manière globale sur le routeur de chaque site. Dans la mesure où nous utilisons des VPN nous ne souhaitons pas compliquer davantage la configuration de chaque routeur afin de limiter les erreurs et simplifier les diagnostics.
Explication: Cela n’empêche pas le fonctionnement du provisioning mais il y a un problème. XiVO, dans cette configuration, se trouve incapable de déterminer automatiquement le modèle de téléphone, impliquant de devoir sélectionner manuellement le greffon pour chaque téléphone (c’est une archive contenant ce qu’il faut pour générer un fichier de configuration pour chaque terminaison, c’est également là que l’on place les fichiers de firmware Cisco, plus d’informations ici).
Un autre problème, c’est que dans un greffon se trouve la gestion de plusieurs téléphones. Sauf que si XiVO ne sait pas précisément quel modèle on veut provisionner, alors il créera seulement un fichier générique qui ne contient pas les spécificités de chaque modèle. Ça fonctionnera quand même pratiquement à tous les coups mais ce n’est pas idéal.
- Comme le 7945 et le 7970 ne sont pas du tout supportés, si on modifie le module xivo-libsccp, ils seront capables de s’enregistrer, mais encore faut il un greffon pour les provisionner!
Explication: Au départ, j’avais modifié le greffon qui gère entre autres les Cisco 7941 et 7942 pour lui faire accepter les 7945 et 7970, ces dernier étant simplement des nouvelles versions du 7941. Et cela fonctionnait correctement. Rapidement j’ai découvert que les fichiers de configuration permettaient bien de faire fonctionner indifféremment un 7941 ou un 7945, mais les options spécifiques à chaque modèle n’étaient pas renseignées dans les fichiers générés. Une option dans XiVO permettant d’effectuer ce choix était vraisemblablement présente mais elle a été retirée, selon les dires d’un développeur.
J’ai alors décidé de rétablir ce choix manuel grâce à une petite astuce. Puisque l’on peut toujours choisir manuellement un greffon, j’ai créé des greffons dédiés modèle par modèle à partir des greffons officiels fournis par XiVO. Ainsi, lorsque l’on se trouve dans la même configuration, il suffit d’ajouter un de nos greffons modifiés et l’attribuer à une terminaison, un téléphone.
J’ai souhaité rendre cela facile d’accès pour tout le monde, il suffit de savoir manipuler un peu la ligne de commande sous Linux et comprendre un peu le fonctionnement des greffons et de XiVO. Attention tout de même, les greffons Cisco sont fournis sans les fichiers firmware à l’intérieur, il faut donc se les procurer séparément, comme pour les greffons officiels.
2. Modification et recompilation du module xivo-libsccp pour supporter le Cisco 7945 et le 7970
C’est presque l’étape la moins risquée, mais tout de même assez sensible. De mauvaises manipulations pourraient entraîner un fonctionnement erratique. J’ai choisi d’ajouter deux modèles pour vous montrer la marche à suivre mais il est tout à fait possible d’en ajouter d’autres.
On va donc commencer par accéder au serveur, dans mon cas en SSH.
ssh -l root IP.DE.VOTRE.XIVO
Puis, une fois le mot de passe saisi et validé, on entre la commande suivante:
apt-get update && apt-get install build-essential asterisk-dev git-core
Acceptez ce qui est proposé. Puis nous allons entrer successivement :
git clone https://github.com/xivo-pbx/xivo-libsccp.git
cd xivo-libsccp/xivo-libsccp/
C’est là que le plus risqué doit être fait. La documentation officielle indique qu’il faut compiler. Dans notre cas, nous allons préalablement éditer trois fichiers à l’aide de nano: sccp_device.c, sccp_msg.c ainsi que sccp_msg.h.
On va s’en occuper dans l’ordre:
nano sccp_device.c
On va d’abord rechercher l’emplacement où se trouvent les modèles supportés. On utilise la commande Control-W pour cela, puis on tape le texte à chercher et on valide en appuyant sur la touche Entrée. Ici on va rechercher par exemple case SCCP_DEVICE_7942, car on sait qu’il est déjà dedans. Note : Il est possible que l’on trouve déjà dans le fichier les informations pour le 7970.
Cela renvoie vers une liste qui ressemble à ceci (en gras, ce que l’on ajoute):
case SCCP_DEVICE_7941: case SCCP_DEVICE_7941GE: case SCCP_DEVICE_7942: case SCCP_DEVICE_7945: case SCCP_DEVICE_7960: case SCCP_DEVICE_7961: case SCCP_DEVICE_7962: case SCCP_DEVICE_7970:
On va maintenant enregistrer les modifications en utilisant la commande Control-X, et on valide lorsqu’il nous est demandé si on veut enregistrer les changements.
On vient de s’occuper du premier fichier, il en reste deux autres. Ce ne sera pas plus compliqué. Je vais abréger un peu, il suffit de reproduire ces étapes pour chaque fichier.
Dans le cas de sccp_msg.c on va donc rechercher quelque chose qui n’est pas en gras et ajouter ce qui l’est:
case SCCP_DEVICE_7942: return "7942"; case SCCP_DEVICE_7945: return "7945"; case SCCP_DEVICE_7960: return "7960"; case SCCP_DEVICE_7961: return "7961"; case SCCP_DEVICE_7970: return "7970";
Et enfin, même opération pour le fichier sccp_msg.h:
SCCP_DEVICE_7962 = 404,
SCCP_DEVICE_7937 = 431,
SCCP_DEVICE_7942 = 434,
SCCP_DEVICE_7945 = 435,
SCCP_DEVICE_7905 = 20000,
SCCP_DEVICE_7920 = 30002,
SCCP_DEVICE_7970 = 30006,
Je ne sais pas à quoi correspond précisément la valeur à droite du numéro de modèle mais c’est nécessaire. Pour ajouter le support d’un modèle supplémentaire, il suffit de reprendre ces étapes, et pour la valeur en question, vous pouvez vous aider de ceci. Attention, un modèle non supporté pourra ainsi s’enregistrer, mais il faudra encore avoir un greffon d’approvisionnement qui le gère.
À partir de là, une fois que tous les fichiers sont modifiés et enregistrés (il est préférable de se relire), on va pouvoir compiler conformément à ce qui est expliqué dans la documentation. Pour cela, on entre l’une après l’autre les commandes suivantes:
make make install
Quand tout est terminé, on redémarre le serveur avec la commande reboot. On entre ensuite le nom d’hôte du serveur si on est connecté en SSH.
3. Installation des greffons modifiés
On se connecte à l’interface d’administration web de XiVO, puis on choisit l’onglet Configuration, et enfin, dans la colonne de gauche, sous Approvisionnement, on clique sur Configuration.
Dans le champ URL, entrez l’adresse du dépôt de greffons que nous avons spécialement créé:
http://xivo-provd.labcellar.com
On sauvegarde la configuration, puis on se rend dans Greffons (dans la colonne de gauche), et on clique sur l’icône en haut à droite qui permet de charger les greffons. Au bout d’un instant, on peut voir apparaitre un liste de greffons nommés sous la forme xivo-cisco-sccpXX-9.0.3.
Au moment où j’écris ces lignes, j’ai préparé sept greffons (d’autres sont à venir si besoin):
- xivo-cisco-sccp05-8.0.3 : Pour Cisco IP Phone 7905
- xivo-cisco-sccp06-9.0.3 : Pour Cisco IP Phone 7906 et 7911
- xivo-cisco-sccp12-8.0.4 : Pour Cisco IP Phone 7912
- xivo-cisco-sccp20-3.0.2 : Pour Cisco IP Phone 7920
- xivo-cisco-sccp21-1.4.5 : Pour Cisco IP Phone 7921
- xivo-cisco-sccp31-9.0.3 : Pour Cisco IP Phone 7931
- xivo-cisco-sccp40-8.1.2 : Pour Cisco IP Phone 7940 et 7960
- xivo-cisco-sccp41-9.0.3 : Pour Cisco IP Phone 7941 et 7961
- xivo-cisco-sccp42-9.0.3 : Pour Cisco IP Phone 7942 et 7962
- xivo-cisco-sccp45-9.0.3 : Pour Cisco IP Phone 7945 et 7965
- xivo-cisco-sccp70-9.0.3 : Pour Cisco IP Phone 7970 et 7971
- xivo-cisco-sccp75-9.0.3 : Pour Cisco IP Phone 7975
Il n’est utile d’installer, via l’icône en regard de la ligne du tableau, que les greffons dont vous avez besoin. Quelques secondes après avoir cliqué sur l’icône, un autre tableau devrait apparaître, correspondant au contenu du greffon. Si on essaye d’installer un fichier cela ne fonctionne pas.
4. Installation des firmwares Cisco dans les greffons
En effet, nous allons devoir procéder manuellement. Je ne peux pas vous fournir les fichiers de firmware, mais ils sont téléchargeables depuis le site de Cisco. Il suffit de créer un compte pour accéder aux firmwares. Les fichiers de langues quant à eux nécessitent un contrat de racket service SMARTnet payant.
Mes greffons, ont été élaborés à partir des greffons officiels de XiVO, nécessitent les mêmes versions des firmwares et leur installation se fait de la même façon. En l’occurrence pour les modèles cités plus haut, il faut la version 9.0.3. Pour les fichiers networklocale et les fichiers de langage, il faudra les versions 9.0.2.
Une fois que vous avez obtenu les fichiers dont vous avez besoin, au minimum le firmware, alors mettez le en ligne quelque part, un hébergement en ligne quelconque, c’est le plus simple.
Pour la suite, je vais prendre comme exemple l’installation des fichiers pour le 7945. Il conviendra de remplacer les noms des fichiers par ce que vous avez si vous installez un autre greffon.
On se connecte en SSH au serveur:
ssh -l root IP.DE.VOTRE.XIVO
On entre le mot de passe et on valide. Puis:
cd /var/lib/xivo-provd/plugins/xivo-cisco-sccp45-9.0.3/var/cache
Puis on va télécharger ici les fichiers dont on a besoin depuis l’emplacement en ligne où on les a placé.
On a donc:
- firmware (obligatoire) : cmterm-7945_7965-sccp.9-0-3.zip
- langage (optionnel) : po-locale-fr_FR-9.0.2.1000-1.cop.sgn
- network locale (optionnel) : po-locale-combined_network-9.0.2.1000-1.cop.sgn
On va donc entrer la commande wget suivie de l’URL du fichier:
wget http://mon-hebergement-web.com/fichiers/cmterm-7945_7965-sccp.9-0-3.zip
On répète ensuite l’opération pour les deux autres fichiers, si besoin.
Une fois que c’est fait, on reprend l’interface web de XiVO que l’on a laissé de côté. On retourne dans le greffon que l’on avait installé, dans notre cas celui du 7945, et on peut cliquer sur le bouton d’installation en regard de la ligne qui correspond au firmware, et on répète cette opération si besoin pour les autres fichiers.
5. Configuration du serveur DHCP du routeur
Une fois les fichiers installés, il faut s’assurer que votre serveur DHCP, sans doute votre routeur, indique aux téléphones que vous branchez où ils doivent aller chercher les infos. Je ne peux pas expliquer comment on fait avec tous les modèles de routeurs, il vous faut un modèle un peu plus évolué qu’une box. Avec pfSense, il faut se rendre dans l’interface de configuration. Une fois connecté, on se rend dans Services puis DHCP Server.
On clique ensuite sur le bouton Advanced en regard de Additional BOOTP/DHCP Options. Dans la case Number on entre 150. Dans la liste déroulante on sélectionne IP address or host et enfin on tape l’adresse IP de notre serveur dans la case Value.
On va à tout hasard cliquer sur TFTP, et entrer l’adresse IP de notre serveur.
Ensuite on clique sur Save.
6. Installation des téléphones
Maintenant on peut brancher notre téléphone. Je continue mon exemple avec le Cisco 7945. Il suffit de le relier à la prise Ethernet appelée généralement 10/100 SW. Si le switch n’est pas en mesure de fournir l’alimentation PoE, alors il faut également relier un bloc d’alimentation compatible. Le téléphone va démarrer. Note : Pour que le firmware puisse être provisionné, il faut que votre téléphone soit chargé avec la version 8.3.3 du firmware au minimum.
Pendant ce temps, on retourne dans l’interface de gestion de XiVO et dans la page des terminaisons, accessible dans la colonne de gauche de la page IPBX, on devrait pas tarder à voir apparaitre dans le tableau une nouvelle ligne, il faut parfois un peu de patience.
À gauche, l’adresse MAC indiquée correspond à celle du téléphone. À droite on peut voir quel greffon est utilisé. L’un des boutons à droite de cette ligne permet de modifier la terminaison et ainsi choisir quel greffon on lui applique. Il est important que le bon greffon soit sélectionné sans quoi le téléphone ou le système d’approvisionnement pourrait avoir un comportement erratique.
Si besoin, on peut remettre le téléphone en configuration d’usine en le déconnectant de son alimentation. Il suffit alors de le reconnecter et immédiatement appuyer sur la touche # et maintenir la touche enfoncée jusqu’à ce que les touches de lignes clignotent alternativement en orange. Lorsque c’est le cas, on peut relâcher la touche # et on dispose alors d’une minute pour entrer la séquence de touches 123456789*0#, et le téléphone redémarre et réclame au serveur son firmware.
Pendant ce temps, il est vital de ne pas déconnecter le téléphone sans quoi le firmware risque d’être corrompu et le téléphone inutilisable.
En attendant que le firmware se charge, dans l’interface, section IPBX, on va dans Utilisateurs, dans la colonne de gauche. On entre toutes les informations nécessaires comme indiqué dans la documentation officielle, puis dans l’onglet ligne, on clique sur l’icône +.
On choisit le protocole SCCP, on entre un numéro de ligne désiré. Dans le champ Terminaison on clique sur l’adresse MAC du téléphone à provisionner, et le pop-up devrait disparaître et le champ se remplir. Il ne reste maintenant plus qu’à sauvegarder.
Au bout de quelques instants, une fois le firmware chargé sur le téléphone et lors que ce dernier indique Enregistrement ou Registering, il devrait alors finir par afficher le num de l’utilisateur en haut à droite, et la première touche de ligne devrait afficher le numéro de ligne demandée.
Il ne reste qu’a répéter l’opération pour tous les téléphones concernés et vous aurez un serveur XiVO qui sait enregistrer et provisionner des téléphones Cisco SCCP non supportés.
Conclusion
Ce tutoriel nous est très utile car il permet de faire fonctionner nos téléphones préférés avec XiVO et il a été rédigé pour répondre à notre besoin. Certains greffons ont été réalisés à la demande d’autres utilisateurs de XiVO et toute remontée de bug ou d’information m’intéresse. Une fois toutes les manipulations effectuées il n’y a plus grand chose à faire à part en profiter. Ce tutoriel a été réalisé grâce à l’aide des développeurs de XiVO et à ce titre, je les remercie très chaleureusement.
[MISE A JOUR]
Depuis, XiVO a forké vers Wazo qui est développé par l’équipe originale, et aussi le système de répertoires a changé, ce qui implique que les greffons que l’on trouve ici ne fonctionnent plus depuis plusieurs éditions de XiVO. Si quelqu’un a le courage de les modifier nous pouvons aussi les héberger avec plaisir.
l article est sympa …moi aussi j ai un 7945 et aucun provider voip ne l utilise…
je fait un commentaire car mon appareil a une etiquette qui semble dire que le firmware doit etre au moins le 9.31…
j ai deja demande a xivo si ils fairaient un update a leur pluggin vu que sa liste n est fait que de matos plus vendu…et que le firmware qu ils utilisent est un peu out-dated …
a cote de ca j ai demande si leur logiciel etait un configurateur du 7945 , ce qui veut dire que le 7945 une fois regle sur le compte du provider de voip , est capable de fonctionner sans le serveur xivo ? mais la reponse a pas ete oui ou non .
comment que je pourrais faire ?
Bonjour!
Tout d’abord merci pour votre commentaire.
Pour vérifier la version du firmware du téléphone procédez comme suit :
Touche réglages > 6 > 3
Vous devriez voir apparaître dans le champ 1 « fichier de chargement » : SCCP45.9-3-1S où 9-3-1 représente la version 9.3.1 du firmware SCCP pour ce téléphone. Et c’est là que les choses se compliquent.
Chez XiVO il n’est pas question du modèle plus vendu, mais du modèle qu’ils possèdent. La façon dont est développé XiVO leur impose de posséder physiquement un téléphone pour effectuer les tests de fonctionnement toutes les deux semaines, à chaque nouvelle itération du logiciel. Or, ils sont confrontés à quelques difficultés pour se fournir du matériel Cisco.
Alors sinon, aucun provider ne gère les Cisco 7900 Series pour la simple et bonne raison que ce sont des téléphones SCCP et non SIP comme les Linksys/Cisco SPA.
Le problème du SCCP c’est que c’est assez rare en dehors d’un environnement Cisco et surtout ce n’est pas prévu pour traverser le NAT, et donc qu’un téléphone chez vous fonctionne avec un provider à l’extérieur, comme OVH, OpenIP ou autre, même s’ils voulaient bien gérer ce modèle.
Comme je l’explique dans mon tutoriel, nous ne sommes plus confrontés à ce problème dans la mesure où nos sites sont reliés par VPN, simulant ainsi un réseau local.
Nos greffons pour Cisco 7945 sont faits pour fonctionner avec XiVO et uniquement en SCCP. Ils ne sont donc pas adaptés à votre utilisation.
Ce qu’il vous faut c’est passer vos téléphones en SIP (C’est peut-être déjà le cas, il faut vérifier comme je disais plus haut la version du logiciel) à l’aide des multiples tutoriels disponibles sur internet.
Ensuite il est important de savoir que contrairement aux 7940/7960, tous les autres modèles ne peuvent être utilisés totalement en « standalone ». Vous aurez systématiquement besoin de les provisionner au démarrage via un serveur TFTP pour leur affubler des paramètres de connexion. L’avantage des 7940/7960 est que vous pouvez vous rendre manuellement dans les menus du téléphone et configurer un compte SIP. Les modèles plus récents comme le 7945 sont conçus pour fonctionner conjointement à un Cisco Unified Communications Manager, leur serveur de téléphonie maison, capable de provisionner ces téléphones en SCCP mais aussi en SIP.
Le greffon n’est pas non plus un configurateur pour le 7945. En effet, en fonction du téléphone, des paramètres, XiVO va générer un fichier de configuration pour chaque téléphone qu’on lui raccorde. Or ce fichier est fait pour un firmware SCCP et pour fonctionner avec XiVO et… C’est tout. Le téléphone va chercher son fichier de configuration à chaque redémarrage.
Une solution que vous pouvez employer, c’est ce mettre en route un serveur TFTP sur votre réseau local, où se trouve le téléphone, et y mettre les firmwares et fichiers de configuration spécifiques et adaptés à votre situation.
Il va falloir mettre les mains dans le cambouis…
Voici trois liens qui vous seront très utiles pour écrire vos fichiers de configuration :
http://www.voip-info.org/wiki/view/Standalone+Cisco+7945/7965
http://www.voip-info.org/wiki/view/Standalone+Cisco+7941/7961+without+a+local+PBX+-+Another
http://www.voip-info.org/wiki/view/Standalone+Cisco+7941/7961+without+a+local+PBX
Si vous avez plusieurs téléphones à configurer vous pourrez réutiliser votre premier fichier de configuration en l’adaptant un peu pour chacun de vos téléphones. Cela dit, même si vous n’en avez que trois ou quatre, un serveur XiVO peut être assez pratique à mettre en œuvre et vous permettre une meilleure gestion de votre téléphonies avec différents utilisateurs, des messageries vocales, des renvois d’appel, etc. Il ne vous restera ensuite qu’a raccorder XiVO lui même à votre provider et il s’occupera de tout!
Bonnes découvertes !
j ai change le firmware en SIP au debut , le fichier config a jamais fonctionne pour utiliser les voip comme ippi…j ai essaye plusieurs semaine ne sachant pas que cet appareil est si « faiblard » qu il passe pas le NAT et surtout les autres telephones des autres marque se configurent avec tres peu de parametres .
apres avoir creuse , j ai trouve asterisk et xivo . ce dernier est tres bien dans la virtual box de sun mais le iso linux installer souffre du manque de support hardware comme le packet des firmwares des cartes reseaux qui fait quelques Mo , leur iso en faisant moins de 400 Mo….
comme ils supportent le sccp , j ai refait passer le 7945 en ce mode .
les fichiers recents des firmwares sont telechargeables gratuitement sur le website cisco .
j ai configurer xivo avec le telephone ayant le dernier firwmware et sans les fichiers locaux , je met une capture d ecran qui montre qu il est reconnu et presque totalement configure sans l usage de vos modifications .
http://s1.postimg.org/4fiin88kv/cisco_cp7945g_xivo_01.jpg
comme a xivo par email , je vous donne des liens vers les derniers firmwares
https://software.cisco.com/download/navigator.html?mdfid=269065653
la photo de l etiquette warning
http://s1.postimg.org/g3ckhrxpr/P1130422_FILEminimizer.jpg