Skip to main content



Cisco offers a wide range of hard phones, some of which are documented here. Some older phones listed here are no longer available from Cisco, but can still be found on the used aftermarket.

Cisco has firmware images for both their own proprietary CUCM as well as 3PCC (3rd party call control) also known as MPP (multi-platform phone). You should observe carefully which phone you purchase to ensure that it has the 3PCC/MPP firmware, also listed as SIP firmware. While some experimenters have had success getting the CUCM phones to work with FreeSWITCH and Asterisk, the time spent on tweaking things exceeds any cost savings. Order carefully.

There have been many issues with the older Cisco SIP implementations (buggy and non-RFC), but almost all have workarounds in FreeSWITCH.

Click to expand Table of Contents

Cisco Functionality Table

In the body of the table:
Y = yes, the phone performs this function fully.
L = limited functionality
n = no, the function does not work
<blank> = not tested, no information

Model = Cisco model number
FW = firmware version tested
Reg = SIP registration
CID = Caller*ID number and/or name
In = receives inbound calls
Out = places outbound calls
CW = Call*Waiting
Xfer = call transfer
Park = call park
BLF = Busy Lamp Field, shows state of other FS extensions
MWI = Message Waiting Indicator, shows at least 1 voicemail message is unheard


Additional notes and information follow.

Cisco Analog Telephone Adapters

ATA 186

  • Registration: Works
  • Caller Id: Not tested
  • Call in/out: Works
  • Fax over G.711: Works

SPA 112

  • Registration: Works
  • Caller Id: Not tested
  • Call in/out: Not tested
  • Fax over G.711: Not tested

For TLS:

Follow directions at the following link: Then...

cat `file.crt` `file.key` > agent.pem
cp `combinedca.crt` cafile.pem
And in the sip profile you need to use sslv23 not tlsv1.
<param name="tls-version" value=sslv23"/>

Cisco Hard Phones

Cisco 7941

Place in the root of your TFTP server this file named SEP<MAC_ADDRESS>.cnf.xml, along with a dialplan.xml file and the latest firmware from the Cisco web site. Alter the load information node to get the firmware to upgrade:

Click to expand 7941 configuration

<?xml version="1.0" ?>
<timeZone>New Zealand Standard/Daylight Time</timeZone>
<member priority="0">
<phoneLabel>Test 7941</phoneLabel>
<line button="1">

Cisco 7960/7960G

See also: Cisco 7960 SIP

Cisco 7945/7965/7970

Latest tested build: SIP45.8-5-2S.loads (8.5.2)

Busy Lamp Field display is not currently supported as of FreeSWITCH 1.0.3 [deprecated]

Wideband codec support works well on phone-to-phone, IVR, auto attendant and SIP trunk calls.
If you are having issues with proper codec selection, make sure your XML IP phone configuration contains:

Also, make sure your internal SIP profile (${conf_dir}/sip_profiles/internal.xml) contains:
<param name="inbound-codec-negotiation" value="greedy"/>

To debug your codec selection and call quality, you can press the Help button (blue question) twice in a row quickly during a call for detailed statistics.

A sample XML configuration with troubleshooting instructions are available here: Cisco Sample XML Config 79xx

Cisco CP-88xx Series

Applies to CP-8841, CP-8851, CP-8861 at least.

Cisco documentation shows an incorrect template for BLF configuration. The correct XML line to watch another FreeSWITCH extension is:

<Extended_Function_n_>fnc=blf;sub=watched-phone@server;nme=Name to appear on display</Extended_Function_n_>

_n_ = number of the line button which will display the BLF state of the other extension, e.g. Extended_Function_5_
watched-phone = the FS user directory id, typically the extension number, e.g. 1001
server = FS server i.p. address or FQDN
nme = name to display on the phone screen next to this BLF button

Cisco SPA50X/SPA30X

For Cisco SPA 5xx/3xx phones, I had to do quite a bit of NAT setup. Login to the phone through the web interface as 'admin' with default password of 456. Click "Advanced" in top right corner. Click on the SIP tab. Scroll down to the NAT Support Parameters section. I set the first 6 dropdown boxes to YES. They are:
Handle VIA received,
Handle VIA rport,
Insert VIA received,
Insert VIA rport,
Substitue VIA Addr, and
Send Resp to Src Port.
They might not all be required, but it worked like this for me.

I also found on many routers that NAT requires unique local SIP ports on the phone. On each extension tab (Ext 1, Ext 2, ...) that you register with FreeSWITCH, scroll down to the SIP Settings and set the SIP Port to a number that is unique to each line on this phone.

Cisco UCM

Cisco Unified CallManager Express (UC500/UC520 and ISR router platforms)

Latest tested versions:
Cisco IOS 12.4(24)T - UCME 7.1 T Train build (uc500-advipservicesk9-mz.124-24.T.bin)
Cisco IOS 12.4(22)YB3 - UCME 7.1 Special build (uc500-advipservicesk9-mz.124-22.YB3.bin)

The Cisco UC520 is a fairly flexible PBX geared for small businesses; and the Cisco IOS SIP stack it uses seems to be reasonably compatible with FreeSWITCH without too much messing around. Cisco Integrated Services Routers, such as the 1861, 2800, 3800 can also connect to FreeSWITCH using Unified CallManager Express as PBX or using Cisco Unified Border Element as a session border controller.

  • Registration: Works
  • Caller Id: Works
  • Call in/out: Works
  • Call waiting: Works
  • Transfer calls: Works
  • Park calls: Works

Cisco Unified Call Manager

CUCM (formerly Cisco Call Manager) defaults to requiring the FreeSWITCH Sofia profile configuration option of third party call control (3pcc). This is because the default CUCM SIP Trunk configuration is to send the initial INVITE without an SDP. Even with 3pcc enabled in FreeSWITCH this can cause issues (especially when ringback/progress needs to be provided).

The workaround is to enable "Media Termination Point Required" in the SIP trunk configuration screen in CUCM. With this change you should no longer need to enable 3pcc in your FreeSWITCH Sofia profile. Tested and confirmed to work with CUCM 7.1.

An alternative to using "Media Termination Point Required" is to enable "Early Offer" which includes the SDP in the initial invite. Delayed offer does not include the SDP and instead waits for the receiving device to send it's capabilities first. Delayed Offer is the default setting on the SIP Profile in CUCM 7.0+. You may change this by navigating to Device → Device Settings → SIP Profile. Find the existing SIP Profile and make a copy. Edit the copy you just created and check the box near the bottom of the page "Early Offer support for voice and video calls (insert MTP if needed)". Save this profile, apply it to your FreeSWITCH trunk. Remember that you must reset the trunk in CUCM for this change to take effect.

If you press the ? mark twice during a call from a Cisco phone you will notice the active codec is now G.722 instead of G.711.

See also: Cisco UC520 HowTo