Some time ago, I needed to configure an SIP trunk between a Trixbox/FreePBX (Asterisk on Linux) PBX and a Cisco Call Manager PBX. It was pretty hard to find any relevant information on the internet, however eventually I figured out how to do it. Originally this article was written for Trixbox, however the same configuration applies to FreePBX (with minor differences in steps due to the UI differences).
Please note that the following configuration reflects a Trixbox/FreePBX PBX configured with phones with extensions of 1XX and the Cisco Unified Call Manager configured with extensions of 3XX.
If you are simply using CUCM for Cisco IP Phone handset connectivity, you don’t even need CUCM anymore, you can simply use the commercial “EndPoint Manager” on FreePBX to handle Cisco IP Phone connectivity to FreePBX (includes the Cisco 7961 phone’s I use).
Create an SIP Trunk (Leave settings default unless otherwise specified below)
Trunk Name: CallManager
USER Context: ip.address.of.CUCM
Create an Outbound Route to route calls made to 3XX to the Cisco Call Manager
Create outbound route “Cisco”. Check the “Intra Company Route”, and inside of the Dial Patterns type in 3XX. Under Trunk Sequence select “CallManager”.
This pretty much sums up the amount of configuration required on the Trixbox/FreePBX side of things. Now onto the Cisco stuff.
Cisco Unified Call Manager Configuration
Create an SIP Trunk
Device -> Trunk -> Add New
Trunk Type: SIP Trunk
Device Protocol: SIP
Device Name: TrixboxPBX
Call Classification: OnNet
Check the “Media Termination Point Required” checkbox (this is to handle transfers, hold music, etc…)
Destination Address: IP.address.of.trixboxfreepbx
Uncheck “Destination Address is an SRV”
Destination Port: 5060
MTP Preferred Originating Code: 711ulaw
SIP Trunk Security Profile: Non-Secure SIP Trunk Profile
Change the “Non-Secure SIP Trunk Profile” security profile from TCP to UDP
System -> Security Profile -> SIP Trunk Security Profile
Hit the “Find” button
Select “Non Secure SIP Trunk Profile”
Incoming Transport Type: TCP+UDP
Outgoing Transport Type: UDP
Uncheck “Enable Digest Authentication”
Incoming Port: 5060
Out of the last 6 checkboxes, all should be checked except the First and Last.
Create a Route Pattern to route calls from the Cisco Call Manager to Trixbox
Call Routing -> Route/Hunt -> Route Pattern
Route Pattern: 1XX
Gateway/Route List: TrixboxPBX
Route Option: Route this pattern
Call Classification: OnNet
Enable Required Services on CUCM
I’m not too sure which ones are actually required, however the below configuration works great. To get to the CUCM services go to the “Cisco Unified Serviceability” section (Top right of web interface).
Tools -> Serviceability
Enable the following:
Cisco Messaging Interface
Cisco Unified Mobile Voice Access Service
Cisco IP Voice Media Streaming App
Cisco CallManager Attendant Console Server
Cisco IP Manager Assistant
Cisco WebDialer Web Service
Select “Save”, afterwards select “Set to Default”. Please note that it may take some time to bring the services up.
It’s always a good idea to restart both the Trixbox/FreePBX PBX and the CUCM PBX.
After you have configured the above, configure phones in the 1XX range for the trixbox, configure phones on the CUCM for the 3XX range and they should be able to call each other. Please remember that if you have a PSTN line on your Trixbox or FreePBX you will need to create another route pattern for how to transfer 9XXXXXXXXXX from your CUCM -> Trixbox, then configure the applicable route in Trixbox -> PSTN.
Feedback is welcome, leave a comment!