Skip to main content



Configuring OpenBTS 2.5 with freeswitch 1.0.4

Click here to expand Table of Contents


OpenBTS acts as a SIP client that registers into FreeSWITCH. You need to change OpenBTS.Config to match the IP address of your internal or external default profiles. If you use the external profile make sure that the port number is 5080 and not 5060. FreeSWITCH needs a profile that accepts registrations without requesting authentication. If you try to register OpenBTS with FreeSWITCH, you want to make sure that 401 (Unauthorized) or 407 (Proxy Authentication Required) are not requested.

OpenBTS has a very minimal SIP stack, so make sure that FreeSWITCH accepts the registration blindly.

One alternative is to use IP CIDR to ensure that only OpenBTS is accepted. Create a new entry in the directory to allow local registrations (registrations that come from the very same server) blindly.

<user id="31041464646464646" cidr="">
<param name="vm-password" value="461000"/>
<param name="accept-blind-reg" value="true"/>
<param name="accept-blind-auth" value="true"/>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="31041464646464646"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 461000"/>
<variable name="effective_caller_id_number" value="461000"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>

Another issue that you need to consider is the codec, the current implementation of OpenBTS supports GSM. Make sure that your profile accepts GSM as default codec. If your audio sounds like dropping dozen of wine glasses against the floor, it might the case that FreeSWITCH is sending PCMU audio to the phone. Not good! :) There is a bug around (20090917) that should be fixed soon in trunk.

The third issue to deal with is DTMF detection. OpenBTS provides DTMF to FreeSWITCH as INFO SIP Messages. DTMF are sent to FreeSWITCH as Signal=Number {0-12} where 11 is * and 12 is #. FreeSWITCH expects the * and # as Signal=* and not Signal=11. There is a bug around (20090917) that should be fixed soon in trunk that relates to multiple DTMFs in a single call. The CSeq field in the SIP Message needs to increments per DTMF or the DTMF are not properly detected by FreeSWITCH (in fact, it will only detect the first one!).

If you are working with OpenBTS and FS drop me a line, check for my address in