Connecting a Cisco 8831 to Asterisk

Derry Hamilton - 03/11/2023

Cisco VOIP phones have the benefit that their advertised features usually work. At least minimally, once you've figured out the right incantation, and how to sidestep the broken bits. Which is more than can be said for most of their competition (stares hard at Avaya). The downside is that they often only minimally work; the way they need to be configured suggests that the several teams that work on the firmware don't like each other; and many of the features were malletted in place just enough that the customer would pay for it. This goes especially for technology that they bought in and inserted into an existing product line.

Anyway, the CP-8831 conference table phone is the same colour as the rest of the 8800 series, and appears to use the same key-caps on the control unit. However, the way it rejects config files that work on the other 8800s, and the model specific firmware, gives away it's origins. Most of the questions on various forums are asking how to make the blasted thing work with Asterisk, but with no posted solutions. So I'm leaving some notes, and a minimally working config file that gets it to work with Asterisk, as of 2023-11-03.

This vintage of Cisco SIP stack claims to be able to use UDP, but always seems to turn up garbled in some way, so it needs forced to TCP. The softkeys appear to do something different to the rest of the 8800s, so I've yet to get that to work. Upgrading the software to v10 really does need the sip8831.9-3-3-TO-10-3-1-v2 intermediate version...

<?xml version="1.0"?>
<device>
  <deviceProtocol>SIP</deviceProtocol>
  <sshUserId>cisco</sshUserId>
  <sshPassword>cisco</sshPassword>
  <devicePool>
    <dateTimeSetting>
      <dateTemplate>D.M.Y</dateTemplate>
      <timeZone>GMT Standard/Daylight Time</timeZone>
      <ntps>
        <ntp>
          <name>0.ubuntu.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>ASTERISK_IP_ADDRESS</processNodeName>
          </callManager>
        </member>
      </members>
    </callManagerGroup>
  </devicePool>
  <sipProfile>
    <natEnabled>false</natEnabled>
    <natAddress></natAddress>
    <sipProxies>
      <registerWithProxy>true</registerWithProxy>
      <outboundProxy></outboundProxy>
      <outboundProxyPort></outboundProxyPort>
      <backupProxy>ASTERISK_IP_ADDRESS</backupProxy>
      <backupProxyPort>5060</backupProxyPort>
    </sipProxies>
    <phoneLabel>conference 1</phoneLabel>
    <sipLines>
      <line button="1" lineIndex="1">
        <featureID>9</featureID>
        <featureLabel>Line 1, xNNN</featureLabel>
        <proxy>USECALLMANAGER</proxy>
        <port>5060</port>
        <name>EXTENSION_NUMBER</name>
        <displayName>EXTENSION_NUMBER</displayName>
        <autoAnswer>
          <autoAnswerEnabled>2</autoAnswerEnabled>
        </autoAnswer>
        <callWaiting>3</callWaiting>
        <authName>EXTENSION_NUMBER</authName>
        <!-- SIP username, FreePBX uses extension number -->
        <authPassword>EXTENSION_PASSWORD</authPassword>
        <sharedLine>false</sharedLine>
        <messageWaitingLampPolicy>1</messageWaitingLampPolicy>
        <messagesNumber>*97</messagesNumber>
        <ringSettingIdle>4</ringSettingIdle>
        <ringSettingActive>5</ringSettingActive>
        <contact>234</contact>
        <forwardCallInfoDisplay>
          <callerName>true</callerName>
          <callerNumber>false</callerNumber>
          <redirectedNumber>false</redirectedNumber>
          <dialedNumber>true</dialedNumber>
        </forwardCallInfoDisplay>
      </line>
    </sipLines>
    <dialTemplate>dialplan.xml</dialTemplate>
  </sipProfile>
  <userLocale>
    <name>en_GB</name>
    <langCode>en</langCode>
  </userLocale>
  <transportLayerProtocol>1</transportLayerProtocol> <!-- 4:default=tcp, 2:udp, 1: tcp; Only really works on TCP. -->
<!-- <loadInformation>sip8831.9-3-3-TO-10-3-1-v2</loadInformation> -->
  <loadInformation>sip8831.10-3-1SR7-2</loadInformation>
</device>