I recently needed to test some Asterisk features for a customer. The fastest PBX to get up and running is FreePBX, which also has a very well thought out and fairly simple GUI for the countless configuration options that Asterisk has.

The only VoIP phone I had around was a Cisco 9971 UC, from when I was fiddling with Cisco Callmanager and such in my lab.

After a lot of digging and research, and even though the phone uses SIP, there are certain non-standard settings that I needed to be able to register and use it with FreePBX. Here are some important notes that we are going to need.

FreePBX / Asterisk

SIP over TCP

Normally SIP runs over UDP, but it seems that this phone model, or the firmware it has, requires TCP to work. And it must be enabled globally and by extension (DN).

find / -name sip_general_custom.conf
tcpenable=yes tcpbindaddr=0.0.0.0

Extension (DN)

We must configure an extension of type Generic CHAN SIP Device with the following parameters:

  • User Extension: 1001
  • Display Name: i686
  • SIP Alias: i686
  • Outbound CID: 555xxx
  • Secret: 1234
  • Transport: TCP Only

The latter is of vital importance!

Cisco 9971

The configuration is carried out by means of an .xml file that will be served via TFTP. FreePBX already provides this. We will also need the option 150 in the DHCP, so that the phone knows where to go to look for its configuration when it starts up and picks up an IP address. The file must have the nomenclature SEP<MAC>.cnf.xml. So since mine’s MAC is E8:BA:70:FA:97:F3, its configuration file will be SEP.cnf.xmlSEPE8BA70FA97F3.cnf.

The representative values to include are:

<processNodeName>10.0.0.1</processNodeName>
<phoneLabel>i686</phoneLabel>
<featureLabel>1686 - 1001</featureLabel>
<proxy>USECALLMANAGER</proxy>
<name>1001</name>
<displayName>1001</displayName>
<authName>1001</authName>
<authPassword>1234</authPassword>
<contact>1001</contact>
<dialTemplate>dialplan.xml</dialTemplate>
<loadInformation>sip9971.9-4-2SR2-2</loadInformation>
<inactiveLoadInformation>sip9971.9-4-2SR2-2</inactiveLoadInformation>
<pcPort>0</pcPort>

The rest of the configurations, as well as the dialplan will depend on the deployment being used. The related documentation is easily accessible.