Cisco 7975 on FreePBX

I am trying to register my Cisco 7975 phone with FreePBX and really need some help!

I am running freepbx version 5.211.65-4

SIP75.8-5-4S

I’m really not sure about the URL’s in the code.

also, do I need any more files or just this xml file?

my SEPmac.cnf.xml file is:

<device>
<fullConfig>true</fullConfig>
<deviceProtocol>SIP</deviceProtocol>
<sshUserId>admin</sshUserId>
<sshPassword>cisco</sshPassword>
<devicePool>
<dateTimeSetting>
<dateTemplate>D/M/Y</dateTemplate>
<timeZone>Central Standard/Daylight Time</timeZone>
<ntps>
<ntp>
<name>10.10.10.177</name>
<ntpMode>Unicast</ntpMode>
</ntp>
</ntps>
</dateTimeSetting>
<callManagerGroup>
<tftpDefault>true</tftpDefault>
<members>
<member priority="0">
<callManager>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
<sipPort>5060</sipPort>
<securedSipPort>5062</securedSipPort>
</ports>
<processNodeName>10.10.10.177</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
</devicePool>
<commonProfile>
<phonePassword/>
<backgroundImageAccess>true</backgroundImageAccess>
<callLogBlfEnabled>0</callLogBlfEnabled>
</commonProfile>
<loadInformation>SIP75.8-5-4S</loadInformation>
<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>
<daysDisplayNotActive>1,2,3,4,5,6,7</daysDisplayNotActive>
<displayOnTime>10:00</displayOnTime>
<displayOnDuration>00:01</displayOnDuration>
<displayIdleTimeout>00:05</displayIdleTimeout>
<webAccess>0</webAccess>
<spanToPCPort>1</spanToPCPort>
<loggingDisplay>1</loggingDisplay>
<loadServer/>
</vendorConfig>
<userLocale>
<name>English_United_States</name>
<uid>1</uid>
<langCode>en_US</langCode>
<version>1.0.0.0-1</version>
<winCharSet>iso-8859-1</winCharSet>
</userLocale>
<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://10.10.10.177/xmlservices/authentication.php</authenticationURL>
<directoryURL>http://10.10.10.177/xmlservices/PhoneDirectory.php</directoryURL>
<idleTimeout>10</idleTimeout>
<idleURL/>
<informationURL>http://10.10.10.177/xmlservices/index.php</informationURL>
<messagesURL/>
<proxyServerURL/>
<servicesURL>http://10.10.10.177/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/>
<encrConfig>false</encrConfig>
<sipProfile>
<sipProxies>
<backupProxy>sip00.mynetfone.com.au</backupProxy>
<backupProxyPort>5060</backupProxyPort>
<emergencyProxy/>
<emergencyProxyPort/>
<outboundProxy/>
<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>true</rfc2543Hold>
<callHoldRingback>2</callHoldRingback>
<localCfwdEnable>true</localCfwdEnable>
<semiAttendedTransfer>true</semiAttendedTransfer>
<anonymousCallBlock>2</anonymousCallBlock>
<callerIdBlocking>0</callerIdBlocking>
<dndControl>0</dndControl>
<remoteCcEnable>true</remoteCcEnable>
</sipCallFeatures>
<sipStack>
<sipInviteRetx>6</sipInviteRetx>
<sipRetx>10</sipRetx>
<timerInviteExpires>180</timerInviteExpires>
<timerRegisterExpires>120</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>true</transferOnhookEnabled>
<enableVad>false</enableVad>
<preferredCodec>g729</preferredCodec>
<dtmfAvtPayload>101</dtmfAvtPayload>
<dtmfDbLevel>3</dtmfDbLevel>
<dtmfOutofBand>avt</dtmfOutofBand>
<alwaysUsePrimeLine>false</alwaysUsePrimeLine>
<alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
<kpml>3</kpml>
<stutterMsgWaiting>1</stutterMsgWaiting>
<callStats>false</callStats>
<silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
<disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig>
<startMediaPort>16384</startMediaPort>
<stopMediaPort>16399</stopMediaPort>
<voipControlPort>5061</voipControlPort>
<dscpForAudio>184</dscpForAudio>
<ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
<dialTemplate>dialplan.xml</dialTemplate>
<phoneLabel>VoipStore</phoneLabel>
<natEnabled>true</natEnabled>
<natAddress>10.10.10.177</natAddress>
<sipLines>
<line button="1">
<featureID>9</featureID>
<featureLabel>402</featureLabel>
<name>F02929E2A1C9</name>
<displayName>402</displayName>
<contact>F02929E2A1C9</contact>
<proxy>10.10.10.177</proxy>
<port>5060</port>
<autoAnswer>
<autoAnswerEnabled>2</autoAnswerEnabled>
</autoAnswer>
<callWaiting>3</callWaiting>
<authName>F02929E2A1C9</authName>
<authPassword>1111</authPassword>
<sharedLine>false</sharedLine>
<messageWaitingLampPolicy>1</messageWaitingLampPolicy>
<messagesNumber>1111</messagesNumber>
<ringSettingIdle>4</ringSettingIdle>
<ringSettingActive>5</ringSettingActive>
<forwardCallInfoDisplay>
<callerName>true</callerName>
<callerNumber>false</callerNumber>
<redirectedNumber>false</redirectedNumber>
<dialedNumber>true</dialedNumber>
</forwardCallInfoDisplay>
</line>
<line button="2">
<featureID>9</featureID>
<featureLabel>Line 2</featureLabel>
<name>MNFNUMBER</name>
<displayName>MNFNUMBER</displayName>
<contact>MNFNUMBER</contact>
<proxy>sip00.mynetfone.com.au</proxy>
<port>5060</port>
<autoAnswer>
<autoAnswerEnabled>2</autoAnswerEnabled>
</autoAnswer>
<callWaiting>3</callWaiting>
<authName>MNFNUMBER</authName>
<authPassword>MNFPASSWORD</authPassword>
<sharedLine>false</sharedLine>
<messageWaitingLampPolicy>1</messageWaitingLampPolicy>
<messagesNumber>121</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>

Hi Sam,

I have a Cisco 7975 up and running on FreePBX 2.11.0.38. Did you get yours working?

Jeff

Thank your for your reply!!!

no, I still haven’t had any success. I have tried manually adding the phone to the endpoint manager like in this article “http://www.groverfamily.org/asterisk/using-freepbx-endpointmanager-with-cisco-7945g-and-7975g-sip-phones/” but still no luck.

I have now installed the latest version of endpoint manager and it says the 7975 is supported as long as it is already has sip firmware 8.2 or higher loaded on it. I’m about to try this. the link to where I read this is: “http://wiki.freepbx.org/display/FCM/EPM-Supported+Devices” , think it will work?

Hi Sam,

What version of firmware do you have on your phone? I have 9.2.1 I believe and I didn’t use the endpoint manager. I am traveling today but I can post my xml file for you to see. It should get your phone working then you can see what you need to do with Endpoint Manager.

Jeff

Thank you, That would be wonderful.

I have it factory reset right now and have been trying to load SIP75.8-5-4S on it.

Sam,
I have alot of experience with the pains of Cisco Phones and Asterisk. I have spent 100s of hours experimenting with many different Cisco phone models to integrate with Asterisk, mainly for fun because I am a Cisco Voice guy/ CCNP Voice certified.

  • The first thing to check is if the phone is capable of downgrading to the older, supported SIP firmware.

As you seem to already know, the latest phones SIP firmwares will not work, so it has to be downgraded to 8-5-4

However, I recently bought a 7965 and it was not capable to downgrade to SIP 8-5-4. Look on the bottom of your phone, mine had a sticker that read something like “requires SIP 9-3-1 or above”

That will likely mean that you have little/no chance of making it work. If there is not a sticker saying 9 or above, then let me know what the hardware version is, and we can look online to see if that hardware version supports 8-5-4 SIP firmware.

  • If it does support the 8-5-4 firmware, I can help you downgrade to it, but it will likely require you to be familiar with wireshark debugging as it is really the only way to tell what the hell the phone is asking for and then you can give it what it wants -

1 First it will ask for DHCP, you will give it an IP address, netmask, gateway, and option 150 (TFTP server IP)
2 Then it will contact the TFTP server and begin asking for firmware and config files which you will serve up and watch for any errors on the wireshark debug (missing files or it will often ask for a file in a different directory than expected or a different name than expected)
3 then once it gets its config downloaded, if there is any XML syntax errors in the config file, it will just not load it, and wont give you any error message. This is why I always check XML syntax using a validator suchas w3schools validator

(I already checked your XML config, no errors)

4 If there is a problem with the config - it downloads and puts the extension on your phone but it wont register or something, then we check out the actual configuration settings, here is an example of a working 7970 registered to freepbx server (running on a raspberry pi actually, but all the same)

<?xml version="1.0" encoding="UTF-8"?>
<device>

  <deviceProtocol>SIP</deviceProtocol>

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

  <devicePool>
                <dateTimeSetting>
                        <dateTemplate>M/D/Ya</dateTemplate>
                        <timeZone>Pacific Standard/Daylight Time</timeZone>
                        <ntps>
                                <ntp>
                                        <name>169.229.70.183</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>192.168.2.2</processNodeName>
              </callManager>
           </member>
        </members>
     </callManagerGroup>
  </devicePool>

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

  <loadInformation>SIP70.8-5-4S</loadInformation>

  <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>0</webAccess>
     <spanToPCPort>1</spanToPCPort>
     <loggingDisplay>1</loggingDisplay>
     <loadServer></loadServer>
     <daysDisplayNotActive></daysDisplayNotActive>
     <displayOnTime>07:00</displayOnTime>
     <displayOnDuration>17:00</displayOnDuration>
     <displayIdleTimeout>1:00</displayIdleTimeout>
  </vendorConfig>

  <deviceSecurityMode>1</deviceSecurityMode>

  <authenticationURL>x.192.168.2.2/cisco/services/authentication.php</authenticationURL>
  <directoryURL>x.192.168.2.2/xmlservices/PhoneDirectory.php</directoryURL>
  <idleURL>x.192.168.2.2/xmlservices/index.php</idleURL>
  <informationURL></informationURL>

  <messagesURL></messagesURL>
  <proxyServerURL></proxyServerURL>
  <servicesURL>x.phone-xml.berbee.x/menu.xml</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>Reilly Chase</phoneLabel>
     <sipLines>
        <line button="1">
           <featureID>9</featureID>
           <featureLabel>100</featureLabel>
                   <name>100</name>
                   <displayName>100</displayName>
                   <contact>100</contact>

           <proxy>192.168.2.2</proxy>
           <port>5060</port>
           <autoAnswer>
              <autoAnswerEnabled>2</autoAnswerEnabled>
           </autoAnswer>
           <callWaiting>3</callWaiting>

           <authName>100</authName>
           <authPassword>secretPassword</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>

You will also need a dialplan.xml for dialplan config which is called into the config above

    <DIALTEMPLATE>
  <TEMPLATE MATCH="1.." TIMEOUT="1"/><!-- Internal extensions 100 to 199. Wait 1 second, then dial -->
  <TEMPLATE MATCH="......." TIMEOUT="1"/><!-- 7 digits. Wait 1 second, then dial -->
  <TEMPLATE MATCH=".........." TIMEOUT="1"/><!-- 10 digits. Dial immediately -->
  <TEMPLATE MATCH="1.........." TIMEOUT="0"/><!-- 1+10 digits. Dial immediately -->  
  <TEMPLATE MATCH="2..." TIMEOUT="0"/><!-- Conference Bridge -->  
  <TEMPLATE MATCH="*97" TIMEOUT="0"/><!-- *86 (*VM for voicemail). Dial immediately -->
  <TEMPLATE MATCH="*#" TIMEOUT="0" REWRITE="%1"/><!-- Dial Immediately After Pressing # -->
  <TEMPLATE MATCH="*" TIMEOUT="5"/> <!-- Anything else. Wait 5 seconds, then dial -->
</DIALTEMPLATE>

I didnt use endpoint manager for any configs, just DHCP, TFTP, firmware and XML files

Thanks for this. I had managed to kludge my way to getting the 7975’s pulling SIP firmware, and registered but I couldn’t dial anything no matter what I did. I didn’t realize that the dialplan had to come from another XML file, and not the dialplans configured in FreePBX. In retrospect, it should have been obvious I suppose.