About FreeSWITCH – The World’s First Cross-Platform Scalable FREE Multi-Protocol Soft Switch.
FreeSWITCH is a scalable open-source cross-platform telephony platform designed to route and interconnect popular communication protocols using audio, video, text, or any other form of media.
FreeSWITCH also provides a stable telephony platform on which many applications can be developed using a wide range of free tools.
FreeSWITCH was originally designed and implemented by Anthony Minessale II with the help of Brian West and Michael Jerris. All 3 are former developers of the popular Asterisk open source PBX.
The project was initiated to focus on several design goals including modularity, cross-platform support, scalability, and stability. Today, many more developers and users contribute to the project on a daily basis.
FreeSWITCH supports both wide and narrow band codecs making it an ideal solution to bridge legacy devices to the future. The voice channels and the conference bridge module all can operate at 8, 12, 16, 24, 32 or 48 kilohertz in mono or stereo and can bridge channels of different rates. The G.729 codec is also available under a commercial license.
FreeSWITCH builds natively and runs standalone on several operating systems including Windows, Max OS X, Linux, BSD and Solaris on both 32 and 64 bit platforms.
FreeSWITCH supports FAX, both over audio and T.38, and can gateway between the two.
Steps for installation on Debian/CentOS and a making call within your internal network.
The process that i have followed is with Manual Build in here :
Step 1: You need to make sure that you have all the packages defined below installed on your debian mahine.
root@ linux :~# apt-get install autoconf automake devscripts gawk g++ git-core libjpeg-dev libncurses5-dev libtool-bin make python-dev gawk pkg-config libtiff5-dev libperl-dev libgdbm-dev libdb-dev gettext libssl-dev libcurl4-openssl-dev libpcre3-dev libspeex-dev libspeexdsp-dev libsqlite3-dev libedit-dev libldns-dev libpq-dev
Note: Do not move ahead until unless you have successfully installed these packages.
Step 2: Change your directory to /usr/src by running the following command :
cd /usr/src
Step 3: Once you are in src directory run the following command to install freeswitch
root@ linux :~# git clone https://freeswitch.org/stash/scm/fs/freeswitch.git
Step 4: Change your Directory to /usr/src/freeswitch by doing
root@ linux :~# cd /usr/src/freeswitch
Step 5: In that directory run :
root@ linux :/usr/src/freeswitch# ./bootstarp.sh -j
Step 6: You can see the different modules that are by default present in freeswitch in modules.conf file. By modules, i mean different configurations.
Step 7: Then you have to run :
root@ linux :/usr/src/freeswitch# ./configure --enable-core-pgsql-support
Step 8: After this run :
root@ linux :/usr/src/freeswitch# make && make install
From now onwards it will take about 30 minutes to get FreeSwitch completely configured
After this process a folder named FreeSwitch is created in /usr/local/freeswitch which is basically the working directory of Freeswitch that will be having the startup scripts and config files in it.
To install Sounds for FreeSwitch run the following command :
root@ linux :/usr/src/freeswitch# make cd-sounds-install cd-moh-install root@ linux :/usr/src/freeswitch# cd
Now you need to add a user named freeswitch
So do the following things :
# create user 'freeswitch' # add it to group 'daemon' # change owner and group of the freeswitch installation
If gourp doesnot exist then create by using the following command :
root@ linux :~# groupadd deamon
Then, to add new user with named as “freeswitch” and some other options :
root@ linux :~# adduser --disabled-password --quiet --system --home /usr/local/freeswitch --gecos "FreeSWITCH Voice Platform" --ingroup daemon freeswitch
Change the permissions / ownership as mentioned below :
root@ linux :~# chown -R freeswitch:daemon /usr/local/freeswitch/ root@ linux :~# chmod -R ug=rwX,o= /usr/local/freeswitch/ root@ linux :~# chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/*
Now is the time that you have to start freeswitch for the first time :
root@ linux :~# cd /usr/local/freeswitch/bin root@ linux :~# ./freeswitch
You will be able to see Free switch banner and you will be logged in to freeswitch’s console.
Which will look somwthing like this.
Now the main thing begins here we will configure some pre-defined extensions.
There are some pre-defined(default) extensions in freeswitch.To see all these extensions you can go in /usr/local/freeswitch/conf/directory/default
You have to make minor changes in vars.xml located in : /usr/local/freeswitch/conf/vars.xml
you have to change the default password because the first time you will call it will throw you an error so look for a tag like this in vars.xml :
in my case i changed my password to 123456
Now as you have canged the password you need to install Zoiper (tool to configure and call through sip profile)
to install zoiper please go to :
http://www.zoiper.com/en/voip-softphone/download/zoiper3
After downloading Zoiper extract the tar file with below commands
root@ linux :~# tar zxvf Zoiper_3.3_Linux*
After extracting Zoiper run Zoiper by
root@ linux :~# ./Zoiper_3.3_Linux_Free_64Bit.run
Then install zoiper and after installing do the following changes:
- Click on Settings > Create new a account
- Select SIP account > Next
Enter 1001-100* (Any one from the default extensions can be mentioned here) for the account name, click OK
Then you have to provide the default password that you changed in vars.xml
and Then you have to provide the IP of freeswitch server (The machine on which you have done setup of Freeswitch). Have look below :
Click on NEXT and provide the details as shown above.
Once provided Click on next and save this SIP profile, then you have to repeat the steps to configure one more extention on zoiper client.
After getting 1001 and 1002 configured on 2 different Zoiper clients you are free to make call from one extension to another and then along side you can see the logs for the connectoin created between these 2 SIP profiiles in your FreeSwitch server Console.