Cisco Phone 8841-K9 success story without 3PCC conversion

After getting a Cisco Phone 8841-K9 on ebay and reading this topic community.freepbx dot org/t/cisco-8841/87403 by @RNHurt , I thought my unit was a doorstop.
Fortunately, I found a user on Reddit that confirmed that this phone works without problems on FreePBX without spending money on an expensive 3PCC license.

In order to configure the telephone, it needs the DHCP 150 option. If this option for the TFTP server is not provided by DHCP, it is possible to enter it manually using the telephone settings button under Admin Settings/Ethernet setup/IP4 setup/Alternate TFTP

MAC address of my phone: 00B0E1BEFEDD
My phone’s active software: sip88xx.11-5-1SR1-1
Asterisk/FreePBX IP address: 192.168.10.200
My phone’s extension number: 1761

TFTP server needs 3 files in its directory

dialplan.xml

<dialTemplate>
        <TEMPLATE MATCH="91.........." Timeout="0"/>
        <TEMPLATE MATCH="911" Timeout="0"/>
        <TEMPLATE MATCH="\*.." Timeout="0"/>
        <TEMPLATE MATCH="[1-8].." Timeout="1"/>
        <TEMPLATE MATCH="*" Timeout="2"/>
</dialTemplate>

AppDialRules.xml

<DialRules>
  <DialRule BeginsWith="+" NumDigits="11" DigitsToRemove="" PrefixWith="" />
  <DialRule BeginsWith="+" NumDigits="12" DigitsToRemove="" PrefixWith="" />
  <DialRule BeginsWith="+" NumDigits="13" DigitsToRemove="" PrefixWith="" />
  <DialRule BeginsWith="2" NumDigits="10" DigitsToRemove="" PrefixWith="+1" />
  <DialRule BeginsWith="3" NumDigits="10" DigitsToRemove="" PrefixWith="+1" />
  <DialRule BeginsWith="4" NumDigits="10" DigitsToRemove="" PrefixWith="+1" />
  <DialRule BeginsWith="5" NumDigits="10" DigitsToRemove="" PrefixWith="+1" />
  <DialRule BeginsWith="6" NumDigits="10" DigitsToRemove="" PrefixWith="+1" />
  <DialRule BeginsWith="7" NumDigits="10" DigitsToRemove="" PrefixWith="+1" />
  <DialRule BeginsWith="8" NumDigits="10" DigitsToRemove="" PrefixWith="+1" />
  <DialRule BeginsWith="9" NumDigits="10" DigitsToRemove="" PrefixWith="+1" />
</DialRules>

and SEP00B0E1BEFEDD.cnf.xml

<?xml version="1.0" encoding="UTF-8"?>
<device>
    <deviceProtocol>SIP</deviceProtocol>
    <sshUserId>cisco</sshUserId>
    <sshPassword>cisco</sshPassword>
    <devicePool>
       <dateTimeSetting>
          <dateTemplate>M/D/YA</dateTemplate>
          <timeZone>Eastern Standard/Daylight Time</timeZone>
          <ntps>
             <ntp>
                <name>0.us.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>192.168.10.200</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>1800</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>MyCompany</phoneLabel>
       <stutterMsgWaiting>1</stutterMsgWaiting>
       <callStats>false</callStats>
       <silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
       <disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig>
       <sipLines>
          <line button="1">
             <featureID>9</featureID>
             <featureLabel>VoIP Phone</featureLabel>
             <proxy>USECALLMANAGER</proxy>
             <port>5060</port>
             <name>1761</name>
             <displayName>Mario</displayName>
             <autoAnswer>
                <autoAnswerEnabled>2</autoAnswerEnabled>
             </autoAnswer>
             <callWaiting>3</callWaiting>
             <authName>1761</authName>
             <authPassword>pass</authPassword>
             <sharedLine>false</sharedLine>
             <messageWaitingLampPolicy>1</messageWaitingLampPolicy>
             <messagesNumber>*97</messagesNumber>
             <ringSettingIdle>4</ringSettingIdle>
             <ringSettingActive>5</ringSettingActive>
             <contact>1761</contact>
             <forwardCallInfoDisplay>
                <callerName>true</callerName>
                <callerNumber>false</callerNumber>
                <redirectedNumber>false</redirectedNumber>
                <dialedNumber>true</dialedNumber>
             </forwardCallInfoDisplay>
          </line>
       </sipLines>
       <voipControlPort>5060</voipControlPort>
       <startMediaPort>10000</startMediaPort>
       <stopMediaPort>20000</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>sip88xx.11-5-1SR1-1</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>
       <sshAccess>0</sshAccess>
       <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></name>
       <uid></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></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>

In the SEP00B0E1BEFEDD.cnf.xml file, the following lines should be edited:

<processNodeName>192.168.10.200</processNodeName>
<name>1761</name>
<authName>1761</authName>
<authPassword>pass</authPassword>
<contact>1761</contact>
<loadInformation>sip88xx.11-5-1SR1-1</loadInformation>

The last step is to enable TCP transport on the Asterisk/FreePBX

[[email protected] asterisk]# cat pjsip.transports.conf

[0.0.0.0-tcp]
type=transport
protocol=tcp
bind=0.0.0.0:5060
...

The 8800 series phones support more advanced features when Asterisk is patched with usecallmanager and chan_sip is used. Keep in mind that Asterisk v.20 is the last version to support chan_sip.
For more details check out this project:
usecallmanager dot nz/documentation-overview.html

Troubleshooting:

Use code beautifier to check for syntax errors
codebeautify dot org/xmlviewer

CP-8841 Web Console Logs
TFTP server output logs
tcpdump/wireshark/pjsip logger

1 Like

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.