Cisco 9971 phone configuration working example with setup tips



Thanks for this! Would really appreciate if it works!

However, I can’t seem to see the XML tags in the above SEPxxx.cnf.xml file. Am I missing something here?



This formatting all got screwed up when they migrated this site recently to the new ‘look and feel’. It’s totally ripped up all the XML in the code snippets above. What a disaster!

I may be able to dig something out for you later in the week and update this accordingly.


Thanks Skyking. I’m not seeing a PM option anywhere either unfortunately. Not sure if this is something I’m restricted from being new though…


SkyKing… As I don’t appear to have PM ability I sent an email Out of Band to an address I hope is you. If I guessed wrong some poor sap will be rather confused :slight_smile:


Hi guys. Im in the process of adding a 9971 to my trixbox. Registers, majority of functions working, and i have the phone receiving video from Jitsi softphone, but its not sending. Not sure if its something in my phone config or not. Selftest video works, but the green light on the camera never comes on during a video call. I have applied the video patch and my asterisk version is


I don’t think you are going to get much help with a trixbox setup here.

Still a lot of underlying resentment to what Fonality pulled.

I would suggest running a legitimate version of FreePBX if you want help from this community.


Downloading FreePBX now. I understand completely, alot of good info gone now thanks to what they did.


Ok…I have new FreePBX Distro installed and running (Asterisk 10 ver.). Its very basic now, but i have 2 ext. setup with video H264 enabled and verified a 2 way video call with Jitsi softphone. Here is where your going to laugh. I cant even get my 9971 to register (config i was using successfully). Status message stays at Error Updating Locale. So I tried to register a Cisco 7911 with a good config and that comes up unprovisioned (Status message: Error Verifying Config). I have the new FreePBX setup in DHCP as the new TFTP server and I have updated configs to point to FreePBX. Is there something basic I am missing to get the cisco phones to register?


I think the NAT settings may be different in release 10.

Are the phones on the same net as the server?


Yep, phones are on the same subnet as freepbx. I thought using the newest version of asterisk may make it easier to get the video working. The nat settings are different under the extension settings than what i am used to seeing. Would the freepbx distro asterisk 1.8 be a better idea?


No, it’s basically the same.

Did you read this whole thread, I think you have to patch Asterisk to get the video and BLF’s to work.


I did…wasnt 100% if I still needed to with ver. 10 or not, but I will do that today. Do you have a working config for 9971? I havent been able to find many sources since Fonality shutdown the forums. Would be nice to have something to compare to.


Simcity - I finally got my hands on one of these to test however I can’t seem to get the right loadinformation line for XMLDefault.cnf,xml, can you kindly share?



Hi Scott. Bizarrely these phones don’t use/request an XMLDefault.cnf.xml file, even if you create one the phone doesn’t touch it. I only found that out by trial and error when tracing the files they actually request from the TFTP server. The phone will only request a specific SEPmacaddress.cnf.xml configuration file.

So I would just use a cut down one if you are uploading firmware to the phone.

Here are the example tags I use in the config file:


PS - wow I managed to get XML to display on this new fangled forum software…trouble is could I be bothered to translate 4 pages of XML code above to get it all to display nicely…Ho hum!


Wow, what a pain way you did it to display the XML. We really need to get that fixed.

So you put that code in the SEP(mac address).xml then allowed it to upgrade, then setup your SIP(mac address).xml?

I can tell you the phone is certainly trying to pull XMLDedfault with the SEP sccp load.

BTW, SEP stands for Selsius Internet Phone, Selsious was the company Cisco bought out to get the CUCM technology in 1998. I worked for the largest Cisco reseller in Great Lakes from 1999-2002.



Yes, not sure about the SCCP load (I actually thought all 99xx and 89xx phones were SIP load only), but with the SIP based firmware on the 99xx series, Cisco broke their own conventions (hey what’s new), so the XMLDefault and SIP(mac address).xml files are redundant.

The crucial configurations files are:

SEP(mac address).cnf.xml

The latter is the Feature Policy file for the ‘soft’ key configuration/activation on the display. You can actually call it whatever you want, but just needs be correctly referenced/associated within the SEP(mac address).cnf.xml file. The content of my DefaultFP.xml is as follows (note I’ve replaced all the less-than and greater-than brackets with their HTML/BBcode equivalents to make it look nice. This is such a ball-ache, would be great too get fixed ;-):

Some of these feature policy codes are as you would expect not fully functional, with an asterisk switch, but the hacker community over at JIRA seems to be bringing more and more to life…

<?xml version="1.0" encoding="utf-8"?> <featurePolicy name="Default Policy"> <versionStamp>0000000000</versionStamp> <featureDef name="ForwardAll"> <id>1</id> <enable>true</enable> </featureDef> <featureDef name="Park"> <id>2</id> <enable>true</enable> </featureDef> <featureDef name="iDivert"> <id>3</id> <enable>true</enable> </featureDef> <featureDef name="ConfList"> <id>4</id> <enable>true</enable> </featureDef> <featureDef name="SpeedDial"> <id>5</id> <enable>true</enable> </featureDef> <featureDef name="Callback"> <id>6</id> <enable>true</enable> </featureDef> <featureDef name="Redial"> <id>7</id> <enable>true</enable> </featureDef> <featureDef name="Barge"> <id>8</id> <enable>true</enable> </featureDef> </featurePolicy>

All my phones had SIP firmware installed from the factory, and to be honest I thought these phones were deliberately SIP-only by design rather than SCCP, so cant really advise on the changeover process unfortunately.

What exact model of phone have you got?


Thanks goodness for find and replace…

I have tidied up the XML code and tag examples in my original post to comply with the strange HTML and BBcode parser on the new forum software. Mostly the less-than and greater-than angle brackets which were not being interpreted correctly.

I hope the changes don’t weird anyone out reading these posts from a non-HTML, text only device (e.g. text only summaries via email).


Ok, I guess I am even more confused.

The phone has SCCP firmware, the first thing it looks for when the SEP(mac) is not found is XMLDefault. Is your point that I need to create dummy SEP(MAC) with the firmware filename declared as above (loadinformation without an index) ?


I just use a dummy SEP(mac address).cnf.xml file, put this in the same directory as the firmware files and you should be good to go.

Just make sure the content of the XML tag <loadInformation>sip9971.9-X-Y-Z</loadInformation> where X, Y, Z reflects the version of the firmware you are trying to update to. For example for version firmware, the tag would be:


You need the following associated version firmware files in the TFTP directory for the phone to load:


By far the largest file is the rootfs file. Its around 37 Meg, so make sure your TFTP server has adequate block size for the transfer and can handle it.

Here is a sample dummy SEP(mac address).cnf.xml file that I just use to load firmware. I do this because I use a windows box running TFTP server to upgrade the firmware on these phones. I find it a bit quicker than doing it on the FreePBX box - I just point the phones to the ‘upgrade’ server, then once they have done the upgrade (takes about 10-15 mins) and they have done the christmas tree lights reboot, I check the firmware from the front screen menu and then repoint the phone back to my FreePBX box.

<?xml version="1.0" encoding="utf-8"?> <device> <deviceProtocol>SIP</deviceProtocol> <sshUserId>admin</sshUserId> <sshPassword>password</sshPassword> <devicePool> <dateTimeSetting> <dateTemplate>D/M/YA</dateTemplate> <timeZone>GMT Standard/Daylight Time</timeZone> <ntps> <ntp> <name></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></processNodeName> </callManager> </member> </members> </callManagerGroup> </devicePool> <sipProfile> <sipProxies> <backupProxy></backupProxy> <backupProxyPort>5060</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> <dtmfAvtPayload>101</dtmfAvtPayload> <dtmfDbLevel>3</dtmfDbLevel> <dtmfOutofBand>avt</dtmfOutofBand> <alwaysUsePrimeLine>false</alwaysUsePrimeLine> <alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail> <kpml>3</kpml> <phoneLabel>PHONE TITLE</phoneLabel> <stutterMsgWaiting>1</stutterMsgWaiting> <callStats>false</callStats> <silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts> <disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig> <sipLines> <line button="1"> <featureID>9</featureID> <featureLabel>DISPLAYED ON SCREEN</featureLabel> <proxy></proxy> <port>5060</port> <name>420</name> <displayName>420</displayName> <autoAnswer> <autoAnswerEnabled>2</autoAnswerEnabled> </autoAnswer> <callWaiting>3</callWaiting> <authName>420</authName> <authPassword>420</authPassword> <sharedLine>false</sharedLine> <messageWaitingLampPolicy>1</messageWaitingLampPolicy> <messagesNumber>*97</messagesNumber> <ringSettingIdle>4</ringSettingIdle> <ringSettingActive>5</ringSettingActive> <contact>EXT NUMBER</contact> <forwardCallInfoDisplay> <callerName>true</callerName> <callerNumber>false</callerNumber> <redirectedNumber>false</redirectedNumber> <dialedNumber>true</dialedNumber> </forwardCallInfoDisplay> </line> <line button="2"> <featureID>20</featureID> <featureLabel>Menu</featureLabel> <serviceURI>http://example.domain.ext/services/menu.xml</serviceURI> </line> <line button="3"> <featureID>9</featureID> <featureLabel>DISPLAYED ON SCREEN</featureLabel> <proxy></proxy> <port>5060</port> <name>EXT NUMBER</name> <displayName>DISPLAY NAME</displayName> <autoAnswer> <autoAnswerEnabled>2</autoAnswerEnabled> </autoAnswer> <callWaiting>3</callWaiting> <authName>EXT NUMBER</authName> <authPassword>EXT PASSWORD</authPassword> <sharedLine>false</sharedLine> <messageWaitingLampPolicy>1</messageWaitingLampPolicy> <messagesNumber>*99</messagesNumber> <ringSettingIdle>4</ringSettingIdle> <ringSettingActive>5</ringSettingActive> <contact>EXT NUMBER</contact> <forwardCallInfoDisplay> <callerName>true</callerName> <callerNumber>false</callerNumber> <redirectedNumber>false</redirectedNumber> <dialedNumber>true</dialedNumber> </forwardCallInfoDisplay> </line> <line button="4"> <featureID>20</featureID> <featureLabel>Menu</featureLabel> <serviceURI>http://example.domain.ext/services/menu.xml</serviceURI> </line> <line button="5"> <featureID>9</featureID> <featureLabel>DISPLAYED ON SCREEN</featureLabel> <proxy></proxy> <port>5060</port> <name>EXT NUMBER</name> <displayName>DISPLAY NAME</displayName> <autoAnswer> <autoAnswerEnabled>2</autoAnswerEnabled> </autoAnswer> <callWaiting>3</callWaiting> <authName>EXT NUMBER</authName> <authPassword>EXT PASSWORD</authPassword> <sharedLine>false</sharedLine> <messageWaitingLampPolicy>1</messageWaitingLampPolicy> <messagesNumber>*99</messagesNumber> <ringSettingIdle>4</ringSettingIdle> <ringSettingActive>5</ringSettingActive> <contact>EXT NUMBER</contact> <forwardCallInfoDisplay> <callerName>true</callerName> <callerNumber>false</callerNumber> <redirectedNumber>false</redirectedNumber> <dialedNumber>true</dialedNumber> </forwardCallInfoDisplay> </line> <line button="6"> <featureID>20</featureID> <featureLabel>Menu</featureLabel> <serviceURI>http://example.domain.ext/services/menu.xml</serviceURI> </line> <line button="7"> <featureID>9</featureID> <featureLabel>DISPLAYED ON SCREEN</featureLabel> <proxy></proxy> <port>5060</port> <name>EXT NUMBER</name> <displayName>DISPLAY NAME</displayName> <autoAnswer> <autoAnswerEnabled>2</autoAnswerEnabled> </autoAnswer> <callWaiting>3</callWaiting> <authName>EXT NUMBER</authName> <authPassword>EXT PASSWORD</authPassword> <sharedLine>false</sharedLine> <messageWaitingLampPolicy>1</messageWaitingLampPolicy> <messagesNumber>*99</messagesNumber> <ringSettingIdle>4</ringSettingIdle> <ringSettingActive>5</ringSettingActive> <contact>EXT NUMBER</contact> <forwardCallInfoDisplay> <callerName>true</callerName> <callerNumber>false</callerNumber> <redirectedNumber>false</redirectedNumber> <dialedNumber>true</dialedNumber> </forwardCallInfoDisplay> </line> <line button="8"> <featureID>20</featureID> <featureLabel>Menu</featureLabel> <serviceURI>http://example.domain.ext/services/menu.xml</serviceURI> </line> </sipLines> <voipControlPort>5060</voipControlPort> <startMediaPort>16348</startMediaPort> <stopMediaPort>20134</stopMediaPort> <dscpForAudio>184</dscpForAudio> <ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy> <dialTemplate>dialplan.xml</dialTemplate> <softKeyFile></softKeyFile> </sipProfile> <commonProfile> <phonePassword></phonePassword> <backgroundImageAccess>true</backgroundImageAccess> <callLogBlfEnabled>2</callLogBlfEnabled> </commonProfile> <loadInformation>sip9971.9-3-2-10</loadInformation> <inactiveLoadInformation>sip9971.9-3-1-33</inactiveLoadInformation> <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> <daysDisplayNotActive>1,2,3,4,5,6,7</daysDisplayNotActive> <displayOnTime>00:00</displayOnTime> <displayOnDuration>00:00</displayOnDuration> <displayIdleTimeout>00:00</displayIdleTimeout> <spanToPCPort>1</spanToPCPort> <loggingDisplay>1</loggingDisplay> <loadServer></loadServer> </vendorConfig> <userLocale> <name>English_United_Kingdom</name> <uid></uid> <langCode>en</langCode> <version></version> <winCharSet>iso-8859-1</winCharSet> </userLocale> <networkLocale>United_Kingdom</networkLocale> <networkLocaleInfo> <name></name> <uid></uid> <version></version> </networkLocaleInfo> <deviceSecurityMode>1</deviceSecurityMode> <authenticationURL></authenticationURL> <directoryURL></directoryURL> <servicesURL></servicesURL> <idleURL></idleURL> <informationURL></informationURL> <messagesURL></messagesURL> <proxyServerURL></proxyServerURL> <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> </device>


Hey Scott,

You got me thinking (yes that it unusual). What phone have you actually got there? I’m 99.999% certain these 99xx and 89xx series phones are SIP firmware only, definitely not SCCP.

I’m intrigued.