SIP Configurations for 79×1 & 79×5 phones

Applies to Cisco CP-7941G, CP-7945G, CP-7961G, CP-7965G, CP-7970G, CP-7971G-GE, CP-7975G handsets.

The second wave of Cisco VoIP phones work very well with SIP platforms, although are simplest to implement in a ‘non-NAT’ environment, where the phones and PBX can be connected without any intervening NAT router.

Some of the settings for these handsets can be configured directly from the phone keypad (go to settings, then press **# and the padlock symbol in the upper-right corner will unlock).

TFTP (trivial file transfer protocol)

For the best results, the phones should be configured via a configuration file, supplied by a TFTP  server.

If you have installed any of the Linux-based Asterisk/FreePBX (or similar) distributions, you will be able to use your PBX server as a TFTP server.   Use your local package manager (yum, apt, etc) to install & activate.

There is also great open-source TFTP server software available for Windows.  I recommend tftpd32

Creating the necessary configuration files

In the ideal world, you have Cisco CallManager running, which will allow you to configure your phones via a swanky GUI, and will generate the appropriate config files for you.

In the open-source VoIP world, you have two ways to create configuration files:

  1. Make use of tools supplied by your PBX software
  2. Manually create the files with a text editor
FreePBX Tools

FreePBX has two endpoint configuration tools available. The various versions allow the user to generate configuration files for handsets from a number of manufacturers.  Both options mentioned here will create files for the older (79×0) Cisco phones, as well as the newer (79×1, 79×5) handsets.

First there is the latest commercial solution, which I expect will give you the smoothest route to generating Cisco config files.  See your FreePBX installation for details on downloading and installing.

Secondly there is an open source community supported version of the endpoint manager known as the OSS Endpoint Manager which is detailed here.   There are YouTube videos that cover the installation and use.  I will add something more detailed here soon.

Manually Creating the Necessary Files

The files required are text based and can be created by copy/pasting suitable text into properly named files.  These files should be located in the tftp server ‘home’ directory/folder.

The files needed are:

XMLDefault.cnf.xml – default values – will be required when starting the phone

SEPmac.cnf.xml – Handset specific values (‘mac’ should be replaced with the handset-specific MAC address found on a label at the rear of the phone, and in the on-screen settings pages).

Examples of the contents for these files are listed at the end of this article.

Telling the phone where to find the files

Once your TFTP server is running and you have created the necessary configuration files – you have to ensure that the phone will be able to retrieve the files.  Once again, there are two ways to achieve this.

Manually setting the TFTP server IP address via the phone keypad.

To do this, you must be able to unlock the configuration settings via the phone keypad.

  1. Press the ‘settings’ button
  2. Key **# to unlock
  3. Select the ‘Network Configuration’ option (2)
  4. Scroll down to the ‘Altername TFTP’ option (24 on the phone I am looking at now) – and change to YES.
  5. Scroll back up to the ‘TFTP Server 1’ option (8 on my phone) and press yje Edit softkey.  Now you can key in the IP address of your TFTP server – using * for the ‘dot’ parts.
  6. Press ‘validate’ to check that the entry is syntactically acceptable.
  7. Press ‘Save’ to save the change.
  8. Press ‘Exit’ – at which point the phone will reboot and pick up the configuration from the TFTP server (if all goes well).
Automatically supplying the TFTP server IP address via DHCP.

To use this mechanism, the DHCP server on your network must be capable of supplying DHCP options data.  Most home network routers do not implement these features.

If you do not have a router capable of supplying DHCP option data, then you can either use a Linux server to temporarily replace your usual DHCP server – or the Windows tftpd32 software (mentioned above) does provide a suitable DHCP server.

Using a suitable DHCP server, set the option 150 data to be the IP of your TFTP server.  Then when your phone boots, it will get it’s IP address details from DHCP, AND the IP address of your TFTP server – so you can avoid the step of having to manually set the data in the phone’s settings pages.

Example Configuration Files

XMLDefault.cnf.xml

[xml]
<Default>
<callManagerGroup>
<members>
<member priority="0">
<callManager>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
<mgcpPorts>
<listen>2427</listen>
<keepAlive>2428</keepAlive>
</mgcpPorts>
</ports>
<processNodeName></processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
<loadInformation8 model="IP Phone 7940">P003-08-4-00</loadInformation8>
<loadInformation7 model="IP Phone 7960">P003-08-4-00</loadInformation7>
<loadInformation6 model="IP Phone 7970">SIP70.8-0-3S</loadInformation6> *** identifies the filename to LOAD (SIP70.8-0-3S.loads)
<authenticationURL></authenticationURL>
<directoryURL></directoryURL>
<idleURL></idleURL>
<informationURL></informationURL>
<messagesURL></messagesURL>
<servicesURL></servicesURL>
</Default>
[/xml]

 

SEPmac.cnf.xml

  • The file should be renamed, using device MAC address – e.g. SEP001BE264C906.cnf.xml
  • References to xxx.xxx.xxx.xxx should be changed to reflect the IP address of your PBX server.
  • References to SipUser and SipPass in the <SipLines> section should be changed to reflect the SIP Username and associated SIP Password that you are using to register the handset.

[xml]
<device>

<deviceProtocol>SIP</deviceProtocol>

<sshUserId>admin</sshUserId>
<sshPassword>cisco</sshPassword>

<devicePool>
<dateTimeSetting>
<dateTemplate>D-M-Y</dateTemplate>
<timeZone>GMT Standard/Daylight Time</timeZone>
<ntps>
<ntp>
<name>pool.ntp.org</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>xxx.xxx.xxx.xxx</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
</devicePool>

<commonProfile>
<phonePassword></phonePassword>
<backgroundImageAccess>true</backgroundImageAccess>
<callLogBlfEnabled>2</callLogBlfEnabled>
</commonProfile>

<vendorConfig>
<disableSpeaker>false</disableSpeaker>
<disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
<pcPort>0</pcPort>
<settingsAccess>1</settingsAccess>
<garp>0</garp>
<voiceVlanAccess>0</voiceVlanAccess>
<videoCapability>0</videoCapability>
<autoSelectLineEnable>0</autoSelectLineEnable>

<webAccess>1</webAccess>
<spanToPCPort>1</spanToPCPort>
<loggingDisplay>1</loggingDisplay>
<loadServer></loadServer>
</vendorConfig>

<networkLocale>United_States</networkLocale>

<networkLocaleInfo>
<name>United_States</name>
<uid>64</uid>
<version>1.0.0.0-1</version>
</networkLocaleInfo>

<deviceSecurityMode>1</deviceSecurityMode>

<authenticationURL>http://xxx.xxx.xxx.xxx/cisco/services/authentication.php</authenticationURL>
<directoryURL>http://xxx.xxx.xxx.xxx/xmlservices/PhoneDirectory.php</directoryURL>
<idleURL>http://xxx.xxx.xxx.xxx/xmlservices/index.php</idleURL>
<informationURL></informationURL>

<messagesURL></messagesURL>
<proxyServerURL></proxyServerURL>
<servicesURL>http://xxx.xxx.xxx.xxx/xmlservices/index.php</servicesURL>
<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
<dscpForCm2Dvce>96</dscpForCm2Dvce>

<transportLayerProtocol>4</transportLayerProtocol>

<capfAuthMode>0</capfAuthMode>
<capfList>
<capf>
<phonePort>3804</phonePort>
</capf>
</capfList>

<certHash></certHash>
<encrConfig>false</encrConfig>

<sipProfile>
<sipProxies>
<backupProxy></backupProxy>
<backupProxyPort></backupProxyPort>
<emergencyProxy></emergencyProxy>
<emergencyProxyPort></emergencyProxyPort>
<outboundProxy></outboundProxy>
<outboundProxyPort></outboundProxyPort>
<registerWithProxy>true</registerWithProxy>
</sipProxies>

<sipCallFeatures>
<cnfJoinEnabled>true</cnfJoinEnabled>
<callForwardURI>x–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>false</remotePartyID>
<userInfo>None</userInfo>
</sipStack>

<autoAnswerTimer>1</autoAnswerTimer>
<autoAnswerAltBehavior>false</autoAnswerAltBehavior>
<autoAnswerOverride>true</autoAnswerOverride>
<transferOnhookEnabled>false</transferOnhookEnabled>
<enableVad>false</enableVad>
<preferredCodec>none</preferredCodec>
<dtmfAvtPayload>101</dtmfAvtPayload>
<dtmfDbLevel>3</dtmfDbLevel>
<dtmfOutofBand>avt</dtmfOutofBand>
<alwaysUsePrimeLine>false</alwaysUsePrimeLine>
<alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
<kpml>3</kpml>

<natEnabled>false</natEnabled>
<natAddress></natAddress>

<stutterMsgWaiting>0</stutterMsgWaiting>

<callStats>false</callStats>
<silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
<disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig>

<startMediaPort>16384</startMediaPort>
<stopMediaPort>32766</stopMediaPort>

<voipControlPort>5060</voipControlPort>
<dscpForAudio>184</dscpForAudio>
<ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
<dialTemplate>dialplan.xml</dialTemplate>

<phoneLabel>YourPhoneLabel</phoneLabel>
<sipLines>
<line button="1">
<featureID>9</featureID>
<featureLabel>SipUser</featureLabel>
<name>SipUser</name>
<displayName>SipUser</displayName>
<contact>SipUser</contact>

<proxy>xxx.xxx.xxx.xxx</proxy>
<port>5060</port>
<autoAnswer>
<autoAnswerEnabled>2</autoAnswerEnabled>
</autoAnswer>
<callWaiting>3</callWaiting>

<authName>SipUser</authName>
<authPassword>SipPass</authPassword>

<sharedLine>false</sharedLine>
<messageWaitingLampPolicy>1</messageWaitingLampPolicy>
<messagesNumber>*97</messagesNumber>
<ringSettingIdle>4</ringSettingIdle>
<ringSettingActive>5</ringSettingActive>

<forwardCallInfoDisplay>
<callerName>true</callerName>
<callerNumber>false</callerNumber>
<redirectedNumber>false</redirectedNumber>
<dialedNumber>true</dialedNumber>
</forwardCallInfoDisplay>
</line>
</sipLines>
</sipProfile>
</device>
[/xml]

dialplan.xml

This file tells the phone when to actually place a call to the server.   Without it the phones will not successfully place any calls – they will try to send each digit dialled directly to the PBX, which will not work.

Below is the standard default file. Which will accept all key presses and only send to the server after 5 seconds of keypad inactivity.  Usually, the user will type the digits and then press the ‘dial’ soft key.

More complex dialplan.xml examples can be found on the www, and will recognise local dialling formats and place a call immediately after the appropriate number of digits have been received.

The file should be placed in the same tftp root folder as the other configuration files

[xml]
<DIALTEMPLATE>
<TEMPLATE MATCH="*" Timeout="5"/> <!– Anything else –>
</DIALTEMPLATE>
[/xml]


0 Comments

Leave a Reply

Avatar placeholder