What a nightmare I’ve had getting these two phone registered to FREEPBX. The 7940 with help from Dave on these forums but the 7971 was sheer perseverance and some help from a post by David Chidel, even buying the license to Endpoint Manager was no help.
So in the spirit of helping others, I’ll post both of my files here for others to benefit, just copy and change the indicated fields to your setup and you should be either ok or close to it.
Feel free to add yours ![]()
Well I will once i figure out how to post it without the xml tags being stripped?
Email them to me and I’ll put them in the Chan-Sccp-B Wiki FreePBX Page. It probably needs some updates - I haven’t looked at it too closely in about six months. PM if you can’t figure out my e-mail address (Google “cynjut” and it should be pretty easy to find).
You have mail 
OK, so this forum doesn’t allow xml to display so I’ve put them on to some webspace for you all.
Enjoy
Also, which firmware did you use on the 7971?
Those links don’t work anymore. Any chance you can repost the files? Thanks!
Deleted
Hi brantz,
Opening a 9 year old thread isn’t a good way to ask for assistance!
The Cisco 7971 is a very old phone BUT if you have the correct firmware for it, it’s a usable phone.
But, what firmware is running on your phone? Cisco released both SCCP and SIP firmware for this phone. Asterisk USED to support a 3rd party chan_sccpb driver but even though it’s still possible to compile that with Asterisk 22, the most current version, the internal bridging between that and SIP is broken in later Asterisk versions.
You used to be able to do this by using the pre-formatted text markup (</> button), which used to work well, although was partially broken a few months ago, in that it can add some artefacts, even though it does preserve the tag delimiters.
Thanks Ted,
I’ve got several older phones running on a Cisco UC540 and I want to move them all over to a virtualized FreePBX 16 implementation to simplify my set-up and not be dependent that aging UC box. My mix of phones include 7960, 7971, 7931, 9971 and SPA525G. I thought I’d start with the 7971 and installed the chan_sccp manager module. I didn’t get very far with this and read a few articles that indicated the SCCP functionality was removed from the underlying Asterisk service, so I flashed the 7971 with SIP 9.2.1 and tried to add it as a Chan_SIP device but couldn’t get it to register. That is when I made my post. I do use the intercom function a lot and am hoping that can still work with freePBX. So any advice you can provide on getting that 7971 going and whether intercom will even work would be great to know. I have the following sets of firmware for the 7971:
SCCP FIRMWARE
cmterm-7970_7971-sccp.9-4-2SR1-1
cmterm-7970_7971-sccp.9-3-1sr1-1
cmterm-7970_7971-sccp.9-1-1sr1
cmterm-7970_7971-sccp.9-0-3
cmterm-7970_7971-sccp.8-3-1
cmterm-7970-7971-sccp.7-0-3
SIP FIRMWARE
cmterm-7970_7971-sip.9-2-1
cmterm-7970_7971-sip.8-5-2
cmterm-7970_7971-sip.8-4-4
Thanks!
Brantz
The following is the SEPMAC config for my 7961 with the 7914 expansion module added:
$ cat SEP001F6C81328D.cnf.xml
<?xml version="1.0" encoding="UTF-8"?>
<device>
<fullConfig>true</fullConfig>
<deviceProtocol>SIP</deviceProtocol>
<ipAddressMode>0</ipAddressMode>
<sshUserId>cisco</sshUserId>
<sshPassword>cisco</sshPassword>
<devicePool>
<dateTimeSetting>
<dateTemplate>M/D/YA</dateTemplate>
<timeZone>Pacific Standard/Daylight Time</timeZone>
<ntps>
<ntp>
<name>172.16.1.1</name>
<ntpMode>unicast</ntpMode>
</ntp>
</ntps>
</dateTimeSetting>
<callManagerGroup>
<members>
<member priority="0">
<callManager>
<name>172.16.1.16</name>
<description>FreePBX</description>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
<sipPort>5160</sipPort>
<securedSipPort>5061</securedSipPort>
</ports>
<processNodeName>172.16.1.16</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
<connectionMonitorDuration>120</connectionMonitorDuration>
</devicePool>
<commonProfile>
<phonePassword>cisco</phonePassword>
<backgroundImageAccess>true</backgroundImageAccess>
<callLogBlfEnabled>1</callLogBlfEnabled>
</commonProfile>
<loadInformation model="IP Phone 7961">SIP41.9-4-2SR3-1S</loadInformation>
<addOnModules>
<addOnModule idx="1">
<loadInformation model="Addon 7914">S00105000400</loadInformation>
</addOnModule>
</addOnModules>
<vendorConfig>
<disableSpeaker>false</disableSpeaker>
<disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
<pcPort>0</pcPort>
<settingsAccess>1</settingsAccess>
<garp>0</garp>
<voiceVlanAccess>0</voiceVlanAccess>
<g722CodecSupport>2</g722CodecSupport>
<handsetWidebandEnable>1</handsetWidebandEnable>
<headsetWidebandEnable>0</headsetWidebandEnable>
<headsetWidebandUIControl>0</headsetWidebandUIControl>
<handsetWidebandUIControl>0</handsetWidebandUIControl>
<videoCapability>0</videoCapability>
<autoSelectLineEnable>0</autoSelectLineEnable>
<daysDisplayNotActive></daysDisplayNotActive>
<displayOnTime></displayOnTime>
<displayOnDuration></displayOnDuration>
<displayIdleTimeout>00:05</displayIdleTimeout>
<webAccess>0</webAccess>
<spanToPCPort>0</spanToPCPort>
<loggingDisplay>1</loggingDisplay>
<displayOnWhenIncomingCall>1</displayOnWhenIncomingCall>
<loadServer></loadServer>
<sshAccess>0</sshAccess>
<sshPort>22</sshPort>
</vendorConfig>
<phoneServices useHTTPS="false">
<provisioning>2</provisioning>
<phoneService type="1" category="0">
<name>Missed Calls</name>
<url>Application:Cisco/MissedCalls</url>
<vendor></vendor>
<version></version>
</phoneService>
<phoneService type="1" category="0">
<name>Received Calls</name>
<url>Application:Cisco/ReceivedCalls</url>
<vendor></vendor>
<version></version>
</phoneService>
<phoneService type="1" category="0">
<name>Placed Calls</name>
<url>Application:Cisco/PlacedCalls</url>
<vendor></vendor>
<version></version>
</phoneService>
<phoneService type="1" category="0">
<name>Contacts</name>
<url>http://phony.pdnit.com/cisco/directory.xml</url>
<vendor></vendor>
<version></version>
</phoneService>
</phoneServices>
<userLocale>
<name>English_United_States</name>
<uid>1</uid>
<langCode>en_US</langCode>
<version>1.0.0.0-1</version>
<winCharSet>utf-8</winCharSet>
</userLocale>
<networkLocale>United_States</networkLocale>
<networkLocaleInfo>
<name>United_States</name>
<version>1.0.0.0-1</version>
</networkLocaleInfo>
<deviceSecurityMode>1</deviceSecurityMode>
<authenticationURL></authenticationURL>
<directory></directory>
<idleTimeout>0</idleTimeout>
<idleURL></idleURL>
<informationURL></informationURL>
<messagesURL></messagesURL>
<proxyServerURL></proxyServerURL>
<servicesURL></servicesURL>
<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
<dscpForCm2Dvce>96</dscpForCm2Dvce>
<transportLayerProtocol>1</transportLayerProtocol>
<dndCallAlert>5</dndCallAlert>
<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-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>false</remotePartyID>
<userInfo>None</userInfo>
</sipStack>
<autoAnswerTimer>0</autoAnswerTimer>
<autoAnswerAltBehavior>false</autoAnswerAltBehavior>
<autoAnswerOverride>true</autoAnswerOverride>
<transferOnhookEnabled>true</transferOnhookEnabled>
<enableVad>false</enableVad>
<preferredCodec>g711ulaw</preferredCodec>
<dtmfAvtPayload>101</dtmfAvtPayload>
<dtmfDbLevel>3</dtmfDbLevel>
<dtmfOutofBand>avt</dtmfOutofBand>
<alwaysUsePrimeLine>false</alwaysUsePrimeLine>
<alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
<kpml>3</kpml>
<stutterMsgWaiting>0</stutterMsgWaiting>
<callStats>false</callStats>
<silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
<disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig>
<startMediaPort>16384</startMediaPort>
<stopMediaPort>32766</stopMediaPort>
<voipControlPort>5160</voipControlPort>
<dscpForAudio>184</dscpForAudio>
<ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
<dialTemplate>dialplan.xml</dialTemplate>
<softKeyFile>softkeys.xml</softKeyFile>
<phoneLabel>823</phoneLabel>
<natEnabled>true</natEnabled>
<natAddress></natAddress>
<sipLines>
<line button="1">
<featureID>9</featureID>
<featureLabel>823 TV Room</featureLabel>
<name>823</name>
<displayName>823</displayName>
<contact>823</contact>
<proxy>USECALLMANAGER</proxy>
<port>5160</port>
<autoAnswer>
<autoAnswerEnabled>0</autoAnswerEnabled>
</autoAnswer>
<callWaiting>1</callWaiting>
<authName>823</authName>
<authPassword>2919ca3</authPassword>
<sharedLine>false</sharedLine>
<messageWaitingLampPolicy>3</messageWaitingLampPolicy>
<messagesNumber>*98</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>130</featureID>
<featureLabel>DND</featureLabel>
</line>
<line button="3">
<featureID>4</featureID>
<featureLabel>Transfer</featureLabel>
</line>
<line button="4">
<featureID>21</featureID>
<featureLabel>803 Laptop</featureLabel>
<speedDialNumber>803</speedDialNumber>
<featureOptionMask>1</featureOptionMask>
</line>
<line button="5">
<featureID>21</featureID>
<featureLabel>804 Mobile</featureLabel>
<speedDialNumber>804</speedDialNumber>
<featureOptionMask>1</featureOptionMask>
</line>
<line button="6">
<featureID>21</featureID>
<featureLabel>805 PCS</featureLabel>
<speedDialNumber>805</speedDialNumber>
<featureOptionMask>1</featureOptionMask>
</line>
<line button="7">
<featureID>21</featureID>
<featureLabel>821 Master BR</featureLabel>
<speedDialNumber>821</speedDialNumber>
<featureOptionMask>1</featureOptionMask>
</line>
<line button="8">
<featureID>21</featureID>
<featureLabel>822 Basement BR</featureLabel>
<speedDialNumber>822</speedDialNumber>
<featureOptionMask>1</featureOptionMask>
</line>
<line button="9">
<featureID>21</featureID>
<featureLabel>824 Sunset BR</featureLabel>
<speedDialNumber>824</speedDialNumber>
<featureOptionMask>1</featureOptionMask>
</line>
<line button="10">
<featureID>21</featureID>
<featureLabel>825 Shop</featureLabel>
<speedDialNumber>825</speedDialNumber>
<featureOptionMask>1</featureOptionMask>
</line>
<line button="11">
<featureID>21</featureID>
<featureLabel>826 Garage</featureLabel>
<speedDialNumber>826</speedDialNumber>
<featureOptionMask>1</featureOptionMask>
</line>
<line button="12">
<featureID>21</featureID>
<featureLabel>827 Main House</featureLabel>
<speedDialNumber>827</speedDialNumber>
<featureOptionMask>1</featureOptionMask>
</line>
</sipLines>
</sipProfile>
</device>
$
You can modify this to suit your taste.
You will note that instead of registering into port 5060 it’s registering into 5160 this is because on my FreePBX test system I am using the USECALLMANAGER patch. The patch adds chan_sip back into Asterisk so you can use the latest Asterisk version and I have it configured on 5160 while pjsip is on 5060. This patch is detailed here:
My suggestion for your setup is to do the following:
-
Buy sufficient quantity of 7961Gs to replace your 7960s which can be picked up off Ebay for $20 ea. Besides having gigabit piggyback ports, not 10/100, these phones have better firmware and they look identical to the 7960’s Also the 7960’s use the SIPMAC format which is radically different than the SEPMAC format. Alternatively, buy sufficient quantity of used Polycoms which can also be obtained for the same cost. It really depends on what your users are used to and how many phones you got. Phone costs can add up so I completely understand the desire to reuse them.
-
Build the latest version of Asterisk 22 on Debian 12 and apply the USECALLMANAGER patch. I recommend this because the latest chan_pjsip fully supports the Cisco phones older versions of chan_pjsip you had to put a parameter into the extension definition to get the phone to register.
-
Install FreePBX 17 with the option to NOT use the Sangoma Asterisk binary
-
Configure everything with your 7961G test phones in parallel to the UC540 and make sure your test calling works between extensions
-
Over the weekend unplug the UC540 and set the IP address of the FreePBX system to that of the UC540 and test out your trunking, make test calls and such.
At this point you can then schedule cutover. You do want sufficient extra quantity of phones on hand because you may run into registration issues (not unsolvable, just it will take a bit of testing) and it may be quicker to temporarily swap in a 7960 for phone that either won’t register or will register but won’t provide functionality you want (like the SPA525G) until you get the config worked out.
Note on BLF keys, USECALLMANAGER, and registration sharing:
The 7960 and 7940’s that use SIPMAC supposedly keep the line keys separated and so you supposedly can register multiple different extensions off Asterisk chan_pjsip on to those phones, the 7961 and later phones with x9xx model numbers do not they only allow a single line appearance via chan_pjsip. Note I have not tested this with the 7940’s/7960’s.
This is why USECALLMANAGER patch was developed, to add multiple extension support and BLF key support into Asterisk for Cisco phones.
At some point in the future FreePBX may drop support for configuring chan_sup extensions and you will have to configure those manually if you use the USECALLMANAGER patch. But for now FreePBX supports chan_sip even if you are running Asterisk 22 you just need to override the autodetection of Asterisk version in FreePBX and set it to Asterisk version 20 to get the chan_sip configuration menus.
So, when doing a Cisco-to-FreePBX conversion, the first question you have to answer is - do you want to do a patched Asterisk FreePBX or do a Sangoma-built-binary FreePBX?
A patched Asterisk is called for if you have large quantities of model x9xx phones and you want to support BLF and multiple line appearances on each phone. But, it precludes support from Sangoma, you won’t be able to for example buy a commercial support pack.
A bone stock Sangoma-binary-built version of FreePBX is called for if you don’t care about anything other than a single line appearance per phone and you want the option of buying support from Sangoma if needed.
I’m currently doing a 400 extension migration from Cisco UCM. I decided to keep the Sangoma-built binaries and in the locations with phones where I need multiple extension appearances I replaced those phones with 7841’s running 3PCC firmware. But I don’t have many of those locations. So all other phones register in to chan_pjsip and have single line appearance. With the specific locations it’s setups like for example they wanted a “back door delivery number” so Amazon could arrive at the delivery door and call 1-800-867-5309 and a dozen phones would ring in the enterprise scattered throughout the building so SOMEONE would answer and have to get out of their chair and walk back to open the deliver door and let the poor guy in. So those dozen phones are 3PCC and their second line button registers to 5309 and 5309 has 12 contact limit on it.
3PCC also supports BLF on chan_pjsip as well so you can do it that way, I could have just setup BLF keys for 5309 on the dozen phones instead.
With the Cisco x9xx phones if you have a lot of configs like that then USECALLMANAGER is what you want.
My migration probably will take several years since I’m doing it in pieces as I want to gain institutional knowledge on how FreePBX works in this environment before fully committing.
Tim - Thanks very much for that very thorough and detailed reply. I have my work cut out for me now and it takes a lot of overlapping and sometimes incompatible configuration issues and guesswork out of the hodgepodge of searches I’ve done to try to cobble together the steps to make this work. I really appreciate your guidance on this!
Brantz
I have configs for the 7960’s/40’s as well as firmware & the steps needed to walk all of these phones from sccp to sip so PM me if you need anything.
2 last things I’ll warn you on the older 79xx phones - age-related plastic embrittlement on these phones - they really don’t like to have their stands messed around with much - and weird PoE. The later Cisco phones like the 6921s 8845s and so on - all of those work with off-the-shelf PoE switches - the 79xx series - they only like the Cisco Catalyst PoE ports. I’m assuming you have Catalyst 3500s or 2960s since the pull through revenue when Cisco was pushing these systems back in the day was high enough for Cisco reps to push in sales of their ethernet switches - don’t get smart and try swapping out old Cisco cat gear with modern Netgear PoE stuff. I use a lot of 48v adapters in my test lab that has these phones…
Thanks again - all of the phones work fine on the Cisco POE switches I have, including a newer Small Business SG300-52P, so I’m not planning to change that side of my set-up. And yes, I have had some of the rear plastic stands fail.
Just so I am clear, I am completely abandoning SCCP for this set-up and flashing all phones to SIP firmware, right? Also, do you know if intercom will work on these older phones set-up this way? Thanks!
Intercom will only work on these phones with the USECALLMANAGER patch. It does work. But any cheap Polycom phone can be setup with industry standard Intercom button on FreePBX.
If you want to stay on SCCP you can use an older Asterisk version to do that I think bridging between sccp and sip still worked in version 18. I made a post a few years ago on how to load the sccp module into modern Asterisk you can probably find it by searching. One of the big reasons people used to have for running SCCP on the older 79xx phones was that the SCCP firmware supported more features on the oldest phones. Another reason was that the author of the sccp module also write a FreePBX module that gave you a GUI phone configuration interface. With going to SIP on Cisco Enterprise you have to create the SEPMAC files with a text editor.
The author of SCCP was cjnut, Dave Burgess, but unfortunately he died a few years ago and he was the last one I believe who really understood that module and protocol. This is one of those things you do to prove your a phone guru, you would be extremely irresponsible to do it for production use.
The thing with phone systems is this - reliability reliability reliability. Would you trust your phone system to make a 911 call on if your very own heart suddenly failed and you fell out of your chair at the office and one of your coworkers was using your system to dial 911? I would not if I was running the SCCP module on old SCCP-loaded phones. The reason I went to trouble to build it was to prove it could still be done, not because I thought it would be anything more than a lab curiosity. I would not use SCCP in production and in fact on the Cisco UCM I manage at my employer, when I first started working there I went on a campaign to replace all Cisco SCCP phones with newer models running SIP. Half of those - about 100 of them - are packed in boxes, the other half - about 80 - I reflashed with SIP. And about 10 of those failed the firmware flashover due to errors in the flash ram of the phone.
You really have to build a system in parallel and experiment with it. The reality is that you yourself said you have an aging Cisco UC540 so you get it. You have 2 options. First is duplicate hardware, (UC540’s are readily available off Ebay) find all of the install files off Russian pirate sites then spend a lot of time learning about an antique phone system then when your UC540 dies, boot your spare and set the flag that ignores licensing, and replace it.
Second is to migrate everything to the latest and greatest where you will have support available. You can do that by flashing all the phones to SIP and working around any missing features, or you can do it by discarding all phones and buying replacements. Polycom phones are cheap and extremely standard or if you want to spend a bit more money you can just buy used Sangoma phones which are 2x the price on the used market then the Polys - but the benefit is FreePBX supports those out of the box via EPM and the GUI interface for provisioning.
It’s just a time/money calculation. The reason I spent a ton of time figuring out how to support the Cisco phones is I have over 300 Cisco model CP-8845 videophones. Unlike non-video phones there is no cheap option out there for videophones. A brand new Cisco 8875 videophone costs $500 so I would have to convince my employer to drop $150k into new videophones that would be supported “out of the box” , and thus I have a huge financial benefit to spending the time learning how to support the existing 8845’s I have that are running Enterprise firmware on FreePBX.
Since Cisco has not really changed phone device provisioning through all it’s phones - until PhoneOS phones - what I learned from the 8845’s is mostly applicable to the older phones. Thus since I am over the learning curve hump it’s not much more effort to learn how to support the old dinosaur phones like the 79xx phones you have - and I do admit I enjoy jabbing certain people in the rear who think those old Cisco phones should be Dumpsterized. You are approaching it from the other end - once you figure out completely how to get your antiques running with FreePBX - everything you learn is applicable to the newer phones like the 7841’s and 8845’s that are very cheap on the secondary market. You would have to go to the USECALLMANAGER patch to get Intercoming to work on your phones - so just embrace it and be done with it. The patch is really easy to load and I am pretty sure I posted instructions on how to integrate it with FreePBX in the forum.
Wow Ted, you really know your stuff! Thanks again for taking the time to share your experience and tips with me - they are very much appreciated!!
This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.