I bought two 8851 CUCM configured phones off Ebay, and for $24 each I think they were a bargain. After spending the best part of a weekend messing around with xml files, I think I have reach the limit of what I can do with regards to functionality.
Specifically, what I would like to do it have the phone dial the voicemail number when you press the voicemail soft key or hard key. Currently, when the phone shows you have an unread voicemail, pressing the button gives a “Message not Available” error. You can manually dial *97 to get to the voicemail, but I’d like the button to work. I’ve tracked the issue down to the phone ignoring the setting in the SEPMAC file and trying to contact the Cisco voicemail manager, which of course is not installed. I’d also like the “Decline” button to send an incoming call directly to the voicemail box. Currently, it does nothing when pressed.
I’d also like to add a working “Hold” button to the home screen. As best as I can tell, you cannot reconfigure the softkeys on a CUCM phone.
I could buy an MPP license for $41 on the internet, but before I did that, I was wondering if anyone else had experience with an MPP phone and if it was worth the upgrade. Or, even better, if anyone had been able to get the voicemail button working or been able to add a “Hold” button.
Thanks!
You can reconfigure all that stuff via XML files and get the voicemail button working. However, the 3PCC license makes the phone act like a Polycom or Yealink or any other standards-based desktop phone, the phone also gives you a web browser you can use to configure it, etc so you don’t have to mess with XML files if you don’t want to.
If you just want these to work as a phone then buy the upgrade. Otherwise if you want to learn about Asterisk and using these phones with the enterprise firmware that’s on them, then post your XML file and I’ll take a look.
Here’s my SEPMAC xml file. I’d really like to get the voicemail button, decline call (to send to voicemail) and hold button working.
Thanks!
<device>
<deviceProtocol>SIP</deviceProtocol>
<devicePool>
<dateTimeSetting>
<dateTemplate>D/M/Y</dateTemplate>
<timeZone>Eastern Standard/Daylight Time</timeZone>
<ntps>
<ntp>
<name>pool.ntp.org</name>
<ntpMode>Unicast</ntpMode>
</ntp>
</ntps>
</dateTimeSetting>
<callManagerGroup>
<members>
<member priority="0">
<callManager>
<ports>
<sipPort>5060</sipPort>
</ports>
<processNodeName>192.168.1.198</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
</devicePool>
<sipProfile>
<voicemailURL>*97</voicemailURL>
<voicemailNumber>*97</voicemailNumber>
<sipProxies>
<registerWithProxy>true</registerWithProxy>
</sipProxies>
<sipLines>
<line button="1">
<featureOptionMask>1</featureOptionMask>
<featureID>9</featureID>
<featureLabel>2005</featureLabel>
<name>2005</name>
<displayName>Andy</displayName>
<contact>2005</contact>
<authName>2005</authName>
<authPassword>***passwd***</authPassword>
<proxy>192.168.1.198</proxy>
<port>5060</port>
<transport>udp</transport>
<autoAnswer>
<autoAnswerEnabled>2</autoAnswerEnabled>
</autoAnswer>
<callWaiting>3</callWaiting>
<messageWaitingLampPolicy>3</messageWaitingLampPolicy>
<messageWaitingAMWI>1</messageWaitingAMWI>
<messagesNumber>*97</messagesNumber>
<ringSettingIdle>4</ringSettingIdle>
<ringSettingActive>5</ringSettingActive>
<forwardCallInfoDisplay>
<callerName>true</callerName>
<callerNumber>true</callerNumber>
<redirectedNumber>true</redirectedNumber>
<dialedNumber>true</dialedNumber>
</forwardCallInfoDisplay>
</line>
</sipLines>
<preferredCodec>g711ulaw</preferredCodec>
<natEnabled>false</natEnabled>
<dtmfAvtPayload>101</dtmfAvtPayload>
<dtmfOutofBand>avt</dtmfOutofBand>
<phoneLabel>Andy</phoneLabel>
<dialTemplate>dialplan.xml</dialTemplate>
</sipProfile>
<commonProfile>
<phonePassword></phonePassword>
<backgroundImageAccess>true</backgroundImageAccess>
</commonProfile>
<loadInformation>sip88xx.12-0-7MPP0001-46</loadInformation>
<!-- <loadInformation>sip88xx.12-5-1SR2-2</loadInformation> -->
<vendorConfig>
<webAccess>0</webAccess>
<sshAccess>0</sshAccess>
<videoCapability>0</videoCapability>
</vendorConfig>
<networkLocale>US</networkLocale>
<userLocale>
<name>US</name>
<langCode>en_US</langCode>
<version>1.0.0.0-1</version>
<winCharSet>utf-8</winCharSet>
</userLocale>
<deviceSecurityMode>1</deviceSecurityMode>
</device>
That is a template for a much older phone probably a 7961 or something, that has been sort of “bushed up” for the newer phone. The biggest reason I think that it’s not making the voicemail button and so on working is because in the newer firmware Cisco introduced a stanza “PhoneServices” which I believe enables modules that are inside the firmware.
Here’s a newer 8851 template that may work better for this phone. Sorry I don’t remember exactly where I pulled it from but it illustrates the section I’m talking about.
<device>
<fullConfig>true</fullConfig>
<deviceProtocol>SIP</deviceProtocol>
<devicePool>
<dateTimeSetting>
<dateTemplate>M/D/YA</dateTemplate>
<timeZone>Pacific Standard/Daylight Time</timeZone>
<ntps>
<ntp priority="0">
<name>0.0.0.0</name>
<ntpMode>unicast</ntpMode>
</ntp>
</ntps>
</dateTimeSetting>
<callManagerGroup>
<members>
<member priority="0">
<callManager>
<ports>
<sipPort>5060</sipPort>
</ports>
<processNodeName>[SERVER_IP_ADDRESS]</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
</devicePool>
<sipProfile>
<sipProxies>
<registerWithProxy>true</registerWithProxy>
</sipProxies>
<sipCallFeatures>
<cnfJoinEnabled>true</cnfJoinEnabled>
<localCfwdEnable>true</localCfwdEnable>
<callForwardURI>service-uri-cfwdall</callForwardURI>
<callPickupURI>*8</callPickupURI>
<callPickupGroupURI>service-uri-gpickup</callPickupGroupURI>
<meetMeServiceURI>service-uri-meetme</meetMeServiceURI>
<callHoldRingback>2</callHoldRingback>
<semiAttendedTransfer>true</semiAttendedTransfer>
<anonymousCallBlock>2</anonymousCallBlock>
<callerIdBlocking>2</callerIdBlocking>
<dndControl>1</dndControl>
<dndCallAlert>1</dndCallAlert>
<remoteCcEnable>true</remoteCcEnable>
</sipCallFeatures>
<sipStack>
<timerRegisterExpires>3600</timerRegisterExpires>
<timerRegisterDelta>5</timerRegisterDelta>
<timerInviteExpires>180</timerInviteExpires>
<timerKeepAliveExpires>3600</timerKeepAliveExpires>
<timerSubscribeExpires>3600</timerSubscribeExpires>
<timerSubscribeDelta>5</timerSubscribeDelta>
<timerT1>500</timerT1>
<timerT2>4000</timerT2>
<remotePartyID>true</remotePartyID>
</sipStack>
<sipLines>
<line button="1" lineIndex="1">
<featureID>9</featureID>
<featureLabel>Homer Simpson - 200</featureLabel>
<contact>200</contact>
<speedDialNumber></speedDialNumber>
<proxy>USECALLMANAGER</proxy>
<port>5060</port>
<voipControlPort>5060</voipControlPort>
<name>[USERNAME]</name>
<displayName>Homer Simpson</displayName>
<autoAnswer>
<autoAnswerEnabled>2</autoAnswerEnabled>
</autoAnswer>
<callWaiting>1</callWaiting>
<authName>[USERNAME]</authName>
<authPassword>[PASSWORD]</authPassword>
<sharedLine>false</sharedLine>
<messagesNumber>*98</messagesNumber>
<messageWaitingLampPolicy>3</messageWaitingLampPolicy>
<ringSettingActive>5</ringSettingActive>
<forwardCallInfoDisplay>
<callerName>true</callerName>
<callerNumber>true</callerNumber>
<redirectedNumber>true</redirectedNumber>
<dialedNumber>true</dialedNumber>
</forwardCallInfoDisplay>
<maxNumCalls>5</maxNumCalls>
<busyTrigger>2</busyTrigger>
</line>
<line button="2">
<featureID>2</featureID>
<featureLabel>PERSON_1</featureLabel>
<speedDialNumber>15555555555</speedDialNumber>
</line>
</sipLines>
<enableVad>true</enableVad>
<preferredCodec>g711ulaw</preferredCodec>
<dialTemplate>dialplan.xml</dialTemplate>
<softKeyControl>1</softKeyControl>
<softKeyFile>softkey1.xml</softKeyFile>
<kpml>0</kpml>
<phoneLabel>555-555-5555</phoneLabel>
<stutterMsgWaiting>2</stutterMsgWaiting>
<disableLocalSpeedDialConfig>true</disableLocalSpeedDialConfig>
<dscpForAudio>184</dscpForAudio>
<dscpVideo>136</dscpVideo>
<startMediaPort>10000</startMediaPort>
<stopMediaPort>20000</stopMediaPort>
</sipProfile>
<commonProfile>
<phonePassword>cisco</phonePassword>
<callLogBlfEnabled>3</callLogBlfEnabled>
</commonProfile>
<featurePolicyFile>featurePolicy1.xml</featurePolicyFile>
<loadInformation>sip88xx.10-3-1-20</loadInformation>
<vendorConfig>
<cucmGSMHandoffPreference>1</cucmGSMHandoffPreference>
<sshAccess>0</sshAccess>
<webAccess>0</webAccess>
<webProtocol>0</webProtocol>
</vendorConfig>
<commonConfig>
<videoCapability>0</videoCapability>
<ciscoCamera>0</ciscoCamera>
</commonConfig>
<addOnModules>
<addOnModule idx="1">
<deviceType>CKEM</deviceType>
<deviceLine>36</deviceLine>
<loadInformation></loadInformation>
</addOnModule>
</addOnModules>
<sshUserId>s2</sshUserId>
<sshPassword>cisco</sshPassword>
<userId></userId>
<phoneServices>
<provisioning>2</provisioning>
<phoneService type="1" category="0">
<name>Missed Calls</name>
<phoneLabel></phoneLabel>
<url>Application:Cisco/MissedCalls</url>
<vendor></vendor>
<version></version>
</phoneService>
<phoneService type="1" category="0">
<name>Received Calls</name>
<phoneLabel></phoneLabel>
<url>Application:Cisco/ReceivedCalls</url>
<vendor></vendor>
<version></version>
</phoneService>
<phoneService type="1" category="0">
<name>Placed Calls</name>
<phoneLabel></phoneLabel>
<url>Application:Cisco/PlacedCalls</url>
<vendor></vendor>
<version></version>
</phoneService>
<phoneService type="2" category="0">
<name>Voicemail</name>
<phoneLabel></phoneLabel>
<url>Application:Cisco/Voicemail</url>
<vendor></vendor>
<version></version>
</phoneService>
</phoneServices>
<versionStamp>0003330027034305</versionStamp>
<userLocale>
<name>SIP_English_United_States</name>
<langCode>en_US</langCode>
</userLocale>
<networkLocale>SIP_United_States</networkLocale>
<networkLocaleInfo>
<name>United_States</name>
</networkLocaleInfo>
<authenticationURL></authenticationURL>
<directoryURL>http://[SERVER_IP_ADDRESS]:80/localdirectory</directoryURL>
<servicesURL>http://[SERVER_IP_ADDRESS]:80/CMEserverForPhone/serviceurl</servicesURL>
<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
<dscpForCm2Dvce>96</dscpForCm2Dvce>
<transportLayerProtocol>2</transportLayerProtocol>
<telnetAccess>1</telnetAccess>
</device>
Is that XML file for phones that are connected to a Cisco Unified Communications Manager? The phoneService stanza looks like it points to an application to handle each of the functions (Application:Cisco/Voicemail). Or are those applications that are defined in the firmware code?
It also looks like the firmware version might be older than that one I am using (sip88xx.10-3-1-20 vs sip88xx.12-5-1SR2-2). When I originally got the phone, it was using a newer version of the firmware, but I was not able to get the phone to successfully register with that newer version so I downgraded on the advice of ChatGPT, and it did register then. However, when ChatGPT is wrong about something, it’s confidently wrong! So perhaps that was a lucky accident that the version it recommended was a one that would work with FreePBX.
I also see that there are the following lines:
<directoryURL>http://[SERVER_IP_ADDRESS]:80/localdirectory</directoryURL>
<servicesURL>http://[SERVER_IP_ADDRESS]:80/CMEserverForPhone/serviceurl</servicesURL>
Are those url’s located on the FreePBX server or are they part of the CUCM?
Thank you for your help! It is much appreciated!
All XML files for Cisco phones running Enterprise firmware are intended for the phones to connect to a Cisco UCM. Remember you are running the phone in an unsupported configuration, insofar that Cisco’s Enterprise firmware is written to connect to a UCM not to a 3rd party PBX.
It is just that Cisco elected to basically use all the VoIP SIP protocol to build the UCM - so, fortunately, for all the main functions, the Enterprise phone firmware will work with a 3rd party PBX.
Of course, Cisco reserves the right to change the Enterprise firmware to break compatibility with a 3rd party PBX at any time. Whether they will actually do this is anyone’s guess. They haven’t yet. But, they could in which case the obvious answer is to downgrade to a prior version of Enterprise firmware that doesn’t break things.
Cisco is currently using the 3PCC multiprotocol firmware for phones connected to their cloud PBX (it is just a modified version of 3PCC that only connects to their servers) so that’s a huge indicator that they don’t really want to spend a lot of time breaking things on the Enterprise firmware.
I assume the application lines activate things in the phone firmware.
The firmware version in the example file came from whoever wrote the example file, use whatever version you have that works. I don’t see any point in going beyond version 12.x of firmware on these phones, however, there’s no feature changes of any importance and version 14 of the firmware breaks compatibility with Cisco’s own older UCMs.
The directory URLs can be on any server and are just examples. There’s also a rather long post from a few weeks ago about getting the directory to work on a 79xx series phones, that is applicable to these phones also. Search the forum for it.
The xml file looks like it works on at least one of my phones (the newer V16 hardware version). I didn’t have a chance to properly test it last night, but now when I press the voicemail button it goes to voicemail. I’m not sure it’s logging in correctly, but I’ll take a look at that when I get home tonight.
I found the post on the directory URLs and I’ll take a look at that too. I’ve been trying to find some documentation that explains the options for each xml tag, but the only thing I’ve been able to find is the USECALLMANAGER.nz documentation. I’m assuming that is applicable for the non-patched versions of Asterisk.
Thank you!
It is scattered across the documentation for older UCMs on the Cisco website. Not all options are documented. As far as I know the usecallmanager author used a lot of trial and error to figure it out.