Cisco 7942

De Wiki doc

Dans cette documentation, nous allons voir comment exploiter un téléphone IP Cisco 7942. Contre toute attente, ce sujet n'est pas si bien décrit sur Internet il a fallut un petit paquet d'heures non négligeable pour en faire quelque chose d'utilisable.

Nous allons partir d'un téléphone de seconde main qu'il est nécessaire de réinitialiser pour mettre à jour son micrologiciel et repartir sur une base vierge. Les micrologiciels Cisco (comme à leur habitude) ne sont pas librement disponibles sur le site du constructeur (allez savoir pourquoi...). Il faut être client et s'inscrire chez eux pour bénéficier de ce qui est indispensable au fonctionnement de l'appareil (et pour ceux qui achètent sur le marcher de l'occasion on fait comment ?). Nous avons mis à disposition la version utilisé dans cette documentation ici.

Pour cette procédure, vous aurez besoin d'avoir et de mettre en place:

  • Un téléphone IP Cisco 7942
  • Un serveur TFTP, DHCP et Asterisk
  • Télécharger les ressources nécessaires
  • Un deuxième téléphone pour tester mais ça c'est plus du luxe que du nécessaire. Vous trouverez de la documentation sur le sujet ici

Réinitialisation

  1. Débrancher le téléphone électriquement
  2. Rebrancher le téléphone électriquement et maintenir le bouton #
  3. Lorsque les deux boutons, à droite de l'écran, clignote, taper la combinaison de touche suivante 123456789*0#

Le téléphone est maintenant réinitialisé, il redémarre de lui même et entame sa séquence d'initialisation. C'est à cet instant que le micrologiciel doit être disponible sur le serveur TFTP.

Envoi du micrologiciel

Après la réinitialisation, le téléphone demande son micrologiciel. Pour lui donner :

  1. Créer un serveur DHCP et TFTP (sur le même réseau que votre téléphone). Vous pouvez vous aider de la documentation du Serveur PXE pour ce faire
  2. Télécharger et extraire le micrologiciel dans l'arborescence /srv/tftp/ de votre serveur TFTP.
  3. Débrancher le téléphone électriquement
  4. Rebrancher le téléphone électriquement

Une IP sera attribuée par votre DHCP et le téléphone ira télécharger les fichiers nécessaire sur votre serveur TFTP.

Le micrologiciel de votre téléphone est maintenant installé. Il va dé à présent, exécuter une série de requêtes TFTP au serveur de manière continu jusqu'à ce qu'il puisse terminer sa phase de démarrage.

Envoi de la configuration SIP

Après une journée de recherche, nous avons trouvé la solution pour configurer le SIP. Cela fonctionne via trois fichiers XML à créer à la racine de votre serveur TFTP. Il est à noter que la majorité des tutoriels sur Internet traitent de fichiers .cnf en lieu et place des .cnf.xml. Nous ignorons dans quel cas de figure ces fameux .cnf se rencontrent mais en tout cas de de manière ordinaire, c'est la méthode décrite ci-après qui fonctionne à l'issue de la réinitialisation de l'appareil.

Dans le fichier XMLDefault.cnf.xml

<Default>
  <callManagerGroup>
    <members>
      <member priority="0">
        <callManager>
          <ports>
            <ethernetPhonePort>2000</ethernetPhonePort>
            <mgcpPorts>
              <listen>2427</listen>
              <keepAlive>2428</keepAlive>
            </mgcpPorts>
          </ports>
          <processNodeName>!!!ASTERISK!!!</processNodeName>
        </callManager>
      </member>
    </members>
  </callManagerGroup>
  <loadInformation434 model="Cisco 7942">!!!VERSION!!!</loadInformation434>
  <authenticationURL></authenticationURL>
  <directoryURL></directoryURL>
  <idleURL></idleURL>
  <informationURL></informationURL>
  <messagesURL></messagesURL>
  <servicesURL></servicesURL>
</Default>
  • Ligne 13 : Remplacer !!!ASTERISK!!! par l'IP ou le FQDN de votre serveur Asterisk
  • Ligne 18 : Remplacer !!!VERSION!!! par la version de votre micrologiciel. Vous le trouverez dans la racine de votre serveur TFTP avec la commande ls SIP*.loads| sed 's/\.loads//'

Vous pouvez télécharger notre fichier de configuration ayant servi pour faire cette partie ici.


Dans le fichier dialplan.xml :

<DIALTEMPLATE>
  <TEMPLATE MATCH="..." Timeout="0" User="Phone"/>
</DIALTEMPLATE>

Dans notre cas, nos numéros de téléphones sont composés de trois digits dont le ...

Vous pouvez télécharger notre fichier de configuration ayant servi pour faire cette partie ici.

Dans le fichier SEP<MAC>.cnf.xml dont <MAC> correspond à l’adresse MAC de votre téléphone IP :

<device>
  <deviceProtocol>SIP</deviceProtocol>
  <sshUserId>cisco</sshUserId>
  <sshPassword>cisco</sshPassword>
  <devicePool>
    <dateTimeSetting>
      <dateTemplate>D.M.Y</dateTemplate>
      <timeZone>E. Europe Standard/Daylight Time</timeZone>
      <ntps>
        <ntp>
          <name>!!!NTP!!!</name>
          <ntpMode>Unicast</ntpMode>
        </ntp>
      </ntps>
    </dateTimeSetting>
    <callManagerGroup>
      <members>
        <member priority="0">
          <callManager>
            <ports>
              <ethernetPhonePort>2000</ethernetPhonePort>
              <sipPort>5060</sipPort>
              <securedSipPort>5061</securedSipPort>
            </ports>
            <processNodeName>!!!ASTERISK!!!</processNodeName>
          </callManager>
        </member>
      </members>
    </callManagerGroup>
  </devicePool>
  <sipProfile>
    <sipProxies>
      <backupProxy></backupProxy>
      <backupProxyPort></backupProxyPort>
      <emergencyProxy></emergencyProxy>
      <emergencyProxyPort></emergencyProxyPort>
      <outboundProxy></outboundProxy>
      <outboundProxyPort></outboundProxyPort>
      <registerWithProxy>true</registerWithProxy>
    </sipProxies>
    <sipCallFeatures>
      <cnfJoinEnabled>true</cnfJoinEnabled>
      <callForwardURI>x-cisco-serviceuri-cfwdall</callForwardURI>
      <callPickupURI>x-cisco-serviceuri-pickup</callPickupURI>
      <callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI>
      <callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI>
      <meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI>
      <abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI>
      <rfc2543Hold>false</rfc2543Hold>
      <callHoldRingback>2</callHoldRingback>
      <localCfwdEnable>true</localCfwdEnable>
      <semiAttendedTransfer>true</semiAttendedTransfer>
      <anonymousCallBlock>2</anonymousCallBlock>
      <callerIdBlocking>2</callerIdBlocking>
      <dndControl>0</dndControl>
      <remoteCcEnable>true</remoteCcEnable>
    </sipCallFeatures>
    <sipStack>
      <sipInviteRetx>6</sipInviteRetx>
      <sipRetx>10</sipRetx>
      <timerInviteExpires>180</timerInviteExpires>
      <timerRegisterExpires>3600</timerRegisterExpires>
      <timerRegisterDelta>5</timerRegisterDelta>
      <timerKeepAliveExpires>120</timerKeepAliveExpires>
      <timerSubscribeExpires>120</timerSubscribeExpires>
      <timerSubscribeDelta>5</timerSubscribeDelta>
      <timerT1>500</timerT1>
      <timerT2>4000</timerT2>
      <maxRedirects>70</maxRedirects>
      <remotePartyID>true</remotePartyID>
      <userInfo>None</userInfo>
    </sipStack>
    <autoAnswerTimer>1</autoAnswerTimer>
    <autoAnswerAltBehavior>false</autoAnswerAltBehavior>
    <autoAnswerOverride>true</autoAnswerOverride>
    <transferOnhookEnabled>false</transferOnhookEnabled>
    <enableVad>false</enableVad>
    <preferredCodec>g711alaw</preferredCodec>
    <dtmfAvtPayload>101</dtmfAvtPayload>
    <dtmfDbLevel>3</dtmfDbLevel>
    <dtmfOutofBand>avt</dtmfOutofBand>
    <alwaysUsePrimeLine>false</alwaysUsePrimeLine>
    <alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
    <kpml>3</kpml>
    <natEnabled>false</natEnabled>
    <natAddress></natAddress>
    <phoneLabel>!!!NOM!!!</phoneLabel>
    <stutterMsgWaiting>0</stutterMsgWaiting>
    <callStats>false</callStats>
    <silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
    <disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig>
    <startMediaPort>16384</startMediaPort>
    <stopMediaPort>32766</stopMediaPort>
    <sipLines>
      <line button="1">
        <featureID>9</featureID>
        <featureLabel>!!!UTILISATEUR!!!</featureLabel>
        <proxy>USECALLMANAGER</proxy>
        <port>5060</port>
        <name>!!!UTILISATEUR!!!</name>
        <displayName>!!!UTILISATEUR!!!</displayName>
        <autoAnswer>
          <autoAnswerEnabled>2</autoAnswerEnabled>
        </autoAnswer>
        <callWaiting>3</callWaiting>
        <authName>!!!UTILISATEUR!!!</authName>
        <authPassword>!!!MOTDEPASSE!!!</authPassword>
        <sharedLine>false</sharedLine>
        <messageWaitingLampPolicy>1</messageWaitingLampPolicy>
        <messagesNumber>*97</messagesNumber>
        <ringSettingIdle>4</ringSettingIdle>
        <ringSettingActive>5</ringSettingActive>
        <contact>!!!UTILISATEUR!!!</contact>
        <forwardCallInfoDisplay>
          <callerName>true</callerName>
          <callerNumber>true</callerNumber>
          <redirectedNumber>true</redirectedNumber>
          <dialedNumber>true</dialedNumber>
        </forwardCallInfoDisplay>
      </line>
    </sipLines>
    <voipControlPort>5060</voipControlPort>
    <dscpForAudio>184</dscpForAudio>
    <ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
    <dialTemplate>dialplan.xml</dialTemplate>
  </sipProfile>
  <commonProfile>
    <phonePassword>1234</phonePassword>
    <backgroundImageAccess>true</backgroundImageAccess>
    <callLogBlfEnabled>2</callLogBlfEnabled>
  </commonProfile>
  <loadInformation>!!!VERSION!!!</loadInformation>
  <vendorConfig>
    <disableSpeaker>false</disableSpeaker>
    <disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
    <pcPort>1</pcPort>
    <settingsAccess>1</settingsAccess>
    <garp>0</garp>
    <voiceVlanAccess>0</voiceVlanAccess>
    <videoCapability>0</videoCapability>
    <autoSelectLineEnable>0</autoSelectLineEnable>
    <sshAccess>0</sshAccess>
    <sshPort>22</sshPort>
    <webAccess>0</webAccess>
    <spanToPCPort>1</spanToPCPort>
    <loggingDisplay>1</loggingDisplay>
    <loadServer></loadServer>
  </vendorConfig>
  <versionStamp></versionStamp>
  <userLocale>
    <name>French_France</name>
    <langCode>fr</langCode>
  </userLocale>
  <networkLocale>France</networkLocale>
  <networkLocaleInfo>
    <name>France</name>
  </networkLocaleInfo>
  <deviceSecurityMode>1</deviceSecurityMode>
  <authenticationURL></authenticationURL>
  <directoryURL></directoryURL>
  <idleURL></idleURL>
  <informationURL></informationURL>
  <messagesURL></messagesURL>
  <proxyServerURL></proxyServerURL>
  <servicesURL></servicesURL>
  <dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
  <dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
  <dscpForCm2Dvce>96</dscpForCm2Dvce>
  <transportLayerProtocol>2</transportLayerProtocol>
  <capfAuthMode>0</capfAuthMode>
  <capfList>
    <capf>
      <phonePort>3804</phonePort>
    </capf>
  </capfList>
  <certHash></certHash>
  <encrConfig>false</encrConfig>
</device>

Via un "rechercher et remplacer" ou à la main, remplacer :

  • !!!NTP!!! => l'IP ou le FQDN de votre Serveur NTP
  • !!!ASTERISK!!! => l'IP ou le FQDN de votre Asterisk
  • !!!NOM!!! => Le nom de votre téléphone
  • !!!UTILISATEUR!!! => Le nom d'utilisateur de votre compte configuré sur Asterisk
  • !!!MOTDEPASSE!!! => Le mot de passe de votre compte configuré sur Asterisk
  • !!!VERSION!!! => la version de votre micrologiciel => ls SIP*.loads| sed 's/\.loads//'

Vous pouvez télécharger notre fichier de configuration ayant servi pour faire cette partie ici.

INFORMATION

Quand vous sauvegardez vos fichiers de configuration, le téléphone IP va redémarrer automatiquement pour prendre les nouvelles configurations. Ceci s'explique par le fait que ce dernier demande en permanence les fichiers qu'il ne possède pas au serveur via des requêtes TFTP.

Astuces sur le téléphone

Passer en mode admin

Si vous voulez modifier un paramètre dans le menu de votre Cisco, il faut aller dans le volet de configuration via le bouton settings et taper la combinaison **# pour déverrouiller le petit cadenas (en haut à droite de votre écran) puis modifier (la réitération de cette combinaison le reverrouille).

Redémarrer le téléphone

Pour redémarrer le téléphone correctement (comprenez: sans le débrancher comme un porc), aller dans le menu du téléphone est taper la combinaison **#** (un message discret indique le redémarrage à l'écran).

Liens