Skip to content

Contact sales

By filling out this form and clicking submit, you acknowledge our privacy policy.

How to Install FreeSWITCH in Windows

Aug 10, 2011 • 3 Minute Read

FreeSWITCH: The Future of Telephony

FreeSWITCH is an open-standards VoIP telephony platform. It can be used as a softclient, carrier-class softswitch or even as PBX. Its ease of installation and configuration has made it a very attractive PBX solution nowadays. It has a modular design which means that new features can be easily integrated into the system as supplementary modules. At the same time unwanted modules can be disabled.

Due to the fact that FreeSWITCH can be installed and operate without any problem in almost any operating system platform including Windows, has made it a very attractive choice to the VoIP PBX engineers. Although, FreeSWITCH can be managed via a GUI, the structure of its configuration directories and files makes the direct file access management more attractive and really easy to handle even for the novice. Configuration files are XML-based. The XML schema is very straightforward and can be easily understood. No XML expertise is needed.

The scope of this article is to introduce this powerful and at the same time reliable PBX solution, which is free by the way, so that you can follow up with the detailed FreeSWITCH configuration instructions in upcoming articles. Furthermore, I would like to take this opportunity and personally thank the Lead Developer of FreeSWITCH, Mr. Anthony Minessale and his team for an outstanding work of art. Their contribution to the VoIP world is invaluable.

How to Install FreeSWITCH in Windows

Detailed installation guide of FreeSWITCH for all operating systems can be found at http://wiki.freeswitch.org/wiki/Installation_Guide.

I will talk a little bit about Windows installation binaries. You can find a list of executable installers here. You may select either the freepbx_svn.exe or fusionpbx_svn.exe. The only difference they have is the GUI type.

You may choose not to install the GUI. Just select custom installation from the drop-down menu and unselect the unwanted features as shown in the figure below. I personally prefer the "clear" installation with just the core components and the sound files of your choice.

FreeSWITCH Configuration Directories

On Windows, FreeSWITCH is installed by default under C:\Freeswitch. The configuration directories along with the XML configuration files are all located under the "conf" directory. The most important configuration directories you will definitely use are the following:

Autoload_configs: It contains all configuration files for every platform software module. They are automatically loaded along with their correspondent module. Sometimes you need to manipulate these configuration files in order to achieve specific core operations.

Dialplan: Dial-digit manipulation is performed here. FreeSWITCH has a powerful dialplan scheme which uses various filtering options for advance call routing and service activation based on different SIP headers. Perl regular expressions are used for caller and callee dial- number processing.

Directory: This folder holds the user database with all user accounts, authentication credentials and specific user characteristics such as Caller_ID, Call restrictions, user grouping, etc.

Sip_profiles: All necessary SIP configurations are contained here. Different profiles can be created. There two profiles are; Profiles for external communication with the outside world through SIP proxies and also Profiles for local SIP connectivity with home SIP users.

Important FreeSWITCH Configuration Files

SIP_Profiles

With the installation of FreeSWITCH, two default SIP profiles are created:

Internal: The Internal.xml file located under conf/sip_profiles/ controls the behavior of local extensions only. By default uses port 5060 on the local PC to listen for incoming client requests. Specific SIP settings and custom parameterization of SIP options is applied here.

External: The external.xml file located under conf/sip_profiles directory as well, refers to “external” connectivity, i.e. connectivity with external devices or VoIP providers. It uses port 5080 by default and it handles all “external” SIP flows according to individual requirements of different VoIP providers or remote devices.

Dialplan

Under /conf/dialplan directory there are two important xml files called default.xml and public.xml.

Default.xml: It contains all dialed code point analysis of the system. All Signaling routes along with added call features are analyzed in here and it is the default dial plan configuration for all local users. It is consulted by default at the initiation of all outgoing calls although for the incoming calls a different approach is followed.

Public.xml: For the incoming calls (incoming from external networks towards the PBX), the public.xml file is consulted first. According to specific match conditions, called or calling party preanalysis takes place and for further analysis switching to the default.xml is applied in order to terminate the call.

Directory

By default, all local phone extensions are defined under /conf/directory/default. For each SIP extension a separate XML file is created which contains among other things the user's call id, call-allowance, voicemail password and group ID in case the user belongs to a specific group of users. The default.xml file which holds all the user groups in the network is located under /conf/directory. Users that belong to specific groups or even multiple groups need to be specified here. Grouping of users is necessary for certain services such as “follow me” calling plans where multiple users ring simultaneously or sequentially.

Vars.xml

The vars.xml file is another important configuration file located under the /conf directory and holds some important preprocessor variables. In other words, it contains some of the system's variables that are globally used. For example, the SIP ports per profile are defined here, the preferred codec list for external and internal SIP profiles are also specified here and also the IP address to be used for SIP signaling and RTP media is also specified here either statically or by the help of other means like STUN protocol or UPnP.

Up Next: FreeSWITCH Configuration

It may seem hard to follow at first, but when we get into the FreeSWITCH configuration details and we examine specific examples, things will become much clearer. In my next article I will show you step-by-step how to create your own internal sip profile and also how to setup your connection with your VoIP provider. We will also see details of configuring PBX extensions along with their value-added features.

Detailed illustrations of important dialplan recipes as well as short training on Regular Expressions are some of the topics that are definitely in my to-do list for this series. So stay tuned!

Stelios Antoniou

Stelios A.

Stelios Antoniou holds a BSc in Electronic Engineering and an MSc in Communication Networks. He has over three years of experience in teaching MS Office applications, networking courses and GCE courses in Information Technology. Stelios is currently working as a VoIP Engineer in a Telecom company, where he uses his knowledge in practice. He has successfully completed training on CCNP topics, Linux and IMS. His enthusiasm, ambition and knowledge motivate him to offer his best. Stelios has written many articles covering Cisco CCENT, CCNA, and CCNP.

More about this author