From FreedomFone

Jump to: navigation, search



About Freedom Fone

Who are you?

We are a group of developers interested in making technology accessible to the people. Our focus is low cost, low power, highly scalable and flexible phone/audio based information systems. We are free software and open hardware advocates! You can reach us by writing to info@freedomfone.org

What does Freedom Fone look like?

To the end-user, a phone number to call or send SMSs. To the administrator, an intuitive user interface to build information/content services. Check the demo site http://demo.freedomfone.org.

Why did you choose FreeSWITCH vs Asterisk?

There are a few reasons for that technical decision, but an important one from the user perspective is that FreeSWITCH is really cross-platform and has a few but important design features that makes it a winner in the long run. One of the technical reasons that made us interested in FreeSWITCH is the Event Socket Layer. Opposite to Asterisk and its AMI, the events are much easier to parse. We also very much liked the possibility of creating realtime dialplans and IVRs. One of the members (Giovanni) of our development team did a good job of explaining the benefits of FreeSWITCH's modular approach to us!.

Why is the GUI written in Cake PHP?

We wanted to write the graphical user interface (GUI) in a popular programming language, which led us to PHP. After many years programming in PHP, we understood that we needed a framework that supported the "model-view-controller" (MVC) representations. We reviewed a dozen PHP MVC frameworks and not without many hours of discussions we settled for Cake PHP. If you are looking for the ultimate reason for choosing one MVC framework or another, we can tell you that we chose Cake because of our sympathy for Bakeries!.


Please visit out Troubleshooting guide

GSM Support

Why so much effort in GSM?

Although GSM is the largest telephony network, the "interfacing" has always been expensive. In the last five years we have deployed several GSM gateways, from stand alone solutions (GSM SIP gateways) to dedicated PCI cards. We were interested in building an inexpensive and scalable solution that could provide an interface to GSM for less than 50 EUR per channel. At the same time, we wanted the solution to be as __low power as possible__ so it could be deployed with solar panels. The idea of controlling and integrating a cheap mobile phone via USB opened the opportunity to build something like Freedom Fone. Freedom Fone integrates the first release of gsmopen, a low cost GSM channel for USB controlled GSM modems.

What GSM hardware is supported?

Freedom Fone supports audio-enabled GSM modems listed here and provides legacy support for the Mobigater. We have tested the Huawei E173 and E1550 dongles.

How many GSM channels are supported?

You can use 3 GSM channels. If you want to add more than GSM channels to the system but you will need to buy a multi-TT USB hub. The technical reason behind this limitation is that the Mobigater includes a USB sound card that follows 1.1 USB standard. USB 2.0 hubs commonly used in the PC motherboards can not efficiently share the USB bandwidth when connected to 1.1 USB devices. For that reason you need to connect your Mobigaters using an intermediary hub known as multi-TT USB hub. Want to know more? Check the following links: Cypress multi TT-USB Hubmulti-TT USB hub TomsHardware

Supported Multi TT Hubs

The following Multi devices have been tested:

-Belkin F5U231 Hi-Speed USB 2.0 !TetraHub

-Cables Unlimited USB-1870

How are applications assigned to the GSM channels?

We have built an internal logic to allow multiple instances of our applications to exist under the same installation. The logic is as follows: each application has an internal extension number, the internal extension number consists of two parts AAAAXXXX. AAAA indicates the application ID, while XXXX indicates the instance of such application. For example, application leave a message has AAAA=2 while the IVR has AAAA=4. Internal extension 2100 means, leave-a-message instance 100.

Freedom Fone has two applications pre-configured: leave-a-message (2100) and IVR (4100)

Every GSM interface (interface1, interface2, interface3) has an internal extension assigned with the form 5XXX. Freedom Fone 1.5pre has three GSM channels preconfigured: 5000, 5001, 5002. The leave-a-message application has an internal extension 2100 (2=leave a message 100=instance number). When a call arrives at the GSM interface, we transfer the call from its internal extension (5XXX) to the application's internal extension.

To connect your MobiGaters differently, edit the file: /usr/local/freedomfone/xml_curl/dialplan.xml

This is done by opening a terminal window and typing in the following at the command line: gedit /usr/local/freedomfone/xml_curl/dialplan.xml

Make sure to save your edits and then close the gedit window after you are done.

      <extension name="inbound_Mobigater1">
         <condition field="destination_number" expression="^5000$">
           <action application="transfer" data="4100 XML default"/>
       <extension name="inbound_Mobigater2">
         <condition field="destination_number" expression="^5001$">
           <action application="transfer" data="4100 XML default"/>
       <extension name="inbound_Mobigater3">
         <condition field="destination_number" expression="^5002$">
           <action application="transfer" data="2100 XML default"/>

You can see that the default values are 5000->4100 5001->4100 5000->2100. In version 2.0, this file will be created via the GUI once we implement ACL with the system.

Problems detecting the GSM modems

There is an issue with the PL3003 driver that comes with Ubuntu. GSM modems get detected as /dev/ttyUSBX and not as /dev/ttyACM0. A quick fix is to remove the pl2303.ko driver from the sytem. This issue is fixed in 1.5 and higher

mv /lib/modules/2.6.24-26-generic/kernel/drivers/usb/serial/pl2303.ko /root

How many Mobigaters can be attached to Freedom Fone?

Without using any special hardware you can attach 3 Mobigaters to your Freedom Fone installation. The default installation assumes that two Mobigaters are connected (5000,5001). If you use only one Mobigater edit the file: /usr/local/freedomfone/xml_curl/dialplan.xml and decide what application is visible to the GSM channel. The first Mobigater is 5000 and can be associated to application IVR (4100) or LAM (2100)

      <extension name="inbound_Mobigater1">
         <condition field="destination_number" expression="^5000$">
           <action application="transfer" data="4100 XML default"/>

How SMSs are received?

There are two ways to receive SMS into Freedom Fone depending on the hardware that is used. If you use a Mobigater, SMSs arrive to Freedom Fone by an internal SIP MESSAGE event. If you use an Office Route the SMS arrive to Freedom Fone by polling the Office Route unit periodically. SMSs arriving to the Office Route are stored in the unit in the form of a e-mail. Freedom Fone polls (POP3) the unit periodically to retrieve new SMSs.

Problems with SIM cards and SMS arrivals

If you have problems receiving SMS, make sure that your SIM card memory is not full. If you were using the SIM card in a handset before, it can be the case that the SIM card has not temporary space to handle the new incoming SMSs.

Live CD

Can you run Freedom Fone from the LiveCD?

Freedom Fone is not designed to run from the LiveCD and it requires installation. There is known issue with Apache serving static files in LiveCDs. Geek note: The Sendfile does not work well on the unionfs used by the LiveCD. A quick fix is to add - EnableSendfile off - to the apache2.conf and restart apache2.

What is the user/password of the LiveCD?

For versions prior to 2.0, the default user and password is lupinus/lupinus. Thereafter, the default user and password is sekowei/sekowei. Once you complete the installation you will need to log in with the user lupinus or sekowei, no matter what user you configure during the installation.


Can I test Freedom Fone using a SIP device?

Yes, we have left the accounts 1000,1001,...1019 configured in the system. Check the IP address of your installation and register your SIP devices as 1000-1019. The password by default is 1234. Once the device is registered you can call 2100 for leave-a-message or 4100 for the IVR.

Can I connect my SIP based GSM gateway

Yes, register the GSM gateway as one of the extensions (1000,1001,...) and make sure that the INCOMING calls are forwarded to one of the Application internal extensions (2100 for leave-a-message, 4100 for IVR)

Which gateways are supported?

2N OfficeRoute - recommended.

2N VoiceBlue Lite - this is a legacy device.


What IP address is assigned to Freedom Fone?

By default Freedom Fone is trying to retrieve the IP via DHCP. Make sure that you have a DHCP server in your network. You can check the IP address of the box by issuing the command /sbin/ifconfig eth0 from the terminal

Can I SSH into the Freedom Fone server?

You need to install the openssh-server first.

apt-get update
apt-get remove openssh-server
apt-get install openssh-server

If you do not have Internet connection you can just run:

dpkg-reconfigure openssh-server

Can I stream/listen to the audio files on another computer?

Freedom Fone is designed not to depend on Internet connectivity to operate. Freedom Fone can operate using GSM-only as a voice channel. If you want to listen/stream the audio files to another computer you need to edit two configuration files.

If you are running version 1.5 or 1.6.1 Edit the file /usr/local/freedomfone/config/gui_config_core.php and change the IP address for your local IP address.

define ('MY_DOMAIN','');

Edit the file /usr/local/freedomfone/config/leave_message_100_core.conf and edit the variable lmURIRoot for your "visible IP address". If you want to make Freedom Fone visible to the world and your box is "port forwarded" in your external router.

Configure the variable lmURIRoot as your external IP address. e.g. http://www.myexternalip_domain.org/freedomfone.

If your Freedom Fone runs on the network you might want to edit: Change:

var lmURIRoot = "http://localhost/freedomfone/";


var lmURIRoot = "http://192.168.x.x/freedomfone/";

Why all these changes? In the current version we have two variables that need to be set to the IP address of the box (or the IP address that the box is visible on from the outside). The variable MY_DOMAIN is used in the MVC (Cake GUI) to create the "links" that stream the audio files that you upload. The second variable "lmURIRoot" is used by the leave-a-message (LAM) application to inform the dispatcher and in turn the GUI where the files have been stored.

We have designed Freedom Fone's components so they can run on one single computer or distributed on several servers.

If you are running 1.6.5 (LTS) or above all this configuration is done automatically with the help of the GUI (FIXME!)


Can Freedom Fone run in a Virtualised environment

We have successfully tested Freedom Fone 1.5 and 1.6 using Virtualbox, OpenVZ and Proxmox 1.5 under Linux. Problems have been reported (20100214) using Virtualbox under Windows as it seems that the USB modem is not visible to the guestOS.

The main challenge to run Freedom Fone in a virtual environment is the access to the GSM USB modem from the guest operative system. The GSM modem is in fact both a serial port (/dev/ttyACM0) and a sound card /dev/snd/XXX. No matter what virtualization platform you use, you need to ensure that the Mobigater is seen from the guest operative system and is writable.

Every virtualization platform vmware, openvz, virtualbox has very specific mechanism to support USB in the guest operative system.

Text to speech TTS

What is Cepstral?

Cepstral is the text to speech software used in Freedom Fone. Our ISO will work without a license but Cepstral will play a reminder that you need to buy a license. We are using Allison 8 Khz voice for Linux. A license can be bought at https://www.cepstral.com/. Once you get the license you can register the voice running the following command:

You can enter your license key using the command-line swift utility. The swift executable can be found at /opt/swift/bin/swift. Run: /opt/swift/bin/swift --reg-voice and follow the instructions.

REMEMBER: if you use your own audio files you do not need to use text-to-speech at all :-D

Do you plan to support other TTS engines?

We are currently working on integrating Flite in Freedom Fone.


How do I change the localized GUI interface?

From version 1.5 Freedom Fone is a fully internationalized *i18n* software. Swahili and English localization are part of the release. To change the GUI to Swahili you need to edit the file:


and change the variable Config.language. Use eng: for english, swa: for swahili, esp: spanish

/********** ********** ********** **********
 * CONFIG: Change localhost for the visible IP address of your server
 *         Configure language: eng (english) swa (swahili) 
 *         Set the correct time zone http://php.net/manual/en/timezones.php
 ********** ********** ********** **********/
define ('MY_DOMAIN','http://localhost/freedomfone/');
Configure::write('Config.language', 'swa');
Configure::write('Config.timezone', 'Africa/Harare');
/********** ********** ********** **********
 ********** ********** ********** **********/

Version 1.6 has a language switcher in the GUI.

How do I extract the strings of Freedom Fone to make my own translation?

Navigate to:

       cd /usr/local/freedomfone/gui/cake/console

Issue the command:

      bash cake i18n

From Freedom Fone LTS we are proving a community GUI for localization


I do not want my users to press any DTMF to get their audio messages recorded in the leave a message (LAM) application

From version 1.6, the LAM application does not require the caller to input any DTMF to get their audio recorded. This allows "quick hangers" to get their feedback recorded. These are the 'basic' LAM settings.

You can update the LAM application by downloading the file:


and overwriting the old version

cd /usr/local/freedomfone/freeswitch/scripts/freedomfone/leave_message
mv main.js main.old.js
wget https://dev.freedomfone.org/svn/freedomfone/trunk/freeswitch/scripts/freedomfone/leave_message/main.js

The new LAM is backward compatible with version 1.0 and 1.5

The default behavior of the script is NOT to delete files that have not been confirmed via DTMF. You can change this default behavior (so LAM works as before) by editing the internal dialplan.xml of freedomfone

Edit /usr/local/freedomfone/xml_curl/dialplan.xml

 <extension name="leave_message_pool">
         <condition field="destination_number" expression="^2(\d{3})$">
           <action application="ring_ready"/>
           <action application="answer"/>
           <action application="sleep" data="2000"/>
           <action application="set" data="instance_id=$1"/>
           <action application="javascript" data="freedomfone/leave_message2/main.js ${instance_id} ${on_quick_hangup}"/>

and uncomment the delete or accept line depending on the desired behavior.

Alternatively you can get our new dialplan.xml as follows:

cd /usr/local/freedomfone/xml_curl/
mv dialplan.xml /var/tmp/dialplan.old.xml
wget https://dev.freedomfone.org/svn/freedomfone/trunk/xml_curl/dialplan.xml

and uncomment ONE of the lines in dialplan.xml depending on the desired behavior. Freedom Fone version 1.6 will have a GUI to configure the type of LAM you prefer - basic or advanced.


How do i turn on debugging in the GUI?

The GUI has a debugging mode that can be turn on and off by editing the file


To turn on / off debugging edit the following variable

    Configure::write('debug', 3);

Change 3 for 0 to turn off debugging.

Security & Privacy

How do i ensure better security in my GUI?

The GUI has a unique "Salt" that is needed to be edited in each installation. Edit the configuration file


and change the following variable for a ramdom long string

       Configure::write('Security.salt', 'lsdkfppphsahsjatusrocks!OIUIUd8d83');


Why do I need to record my files at 8 Khz?

Telephone systems as GSM can only carry signals of approx 4 Khz of bandwidth. To ensure accurate signal regeneration (based on the Nyquist theorem), a voice signal must be sampled at twice the maximum frequency. Because the maximum frequency of the voice channel is limited to 4000 Hz, based on the Nyquist theorem, the sampling rate was set to 8000 times/second. (Ref: http://www.voipsupply.com/cisco-hd-voice). FreedomFone also supports SIP and some of our installations use wide-band audio. If you plan to connect Freedom Fone to something that is not a phone network you can sample your audio at higher frequencies.

Why do you recommend to upload my files in WAV format?

WAV is a lossless format, audio is not compressed and hence is stored with all its quality. Freedom Fone uses WAV format to store internally the files of the Voice Menus as this format is less CPU intensive for a voice system. WAV files are much bigger than other known formats as MP3. Our GUI has an embedded audio player that plays MP3 files. For that reason, Freedom Fone supports both formats internally, WAV is the internal format to store the audio for voice calls and MP3 is the format used to stream the audio via the GUI.

Why the Flash player is not playing or is playing the wrong audio files?

If you experience problems with the Flash Player, make sure that you do not have a problem with the Cache of your browser. Make sure that your Browser's cache is empty. Cleaning the Browser Cache and restarting the browser solves 99% of the problems related to audio streaming. Do not forget that the Flash Player is an audio client and it can lock your audio card when the player is active. If you want to play another content in the same computer, you need to close the Browser's Tab with the Flash Player

Time and Timezones

How do I set my time properly in Freedom Fone?

Before you install Freedom Fone, we recommend that you make sure that your BIOS time is set to Universal Time (UTC) also known as GMT.

PHP errors

How do I fix PHP memory errors?

Freedom Fone GUI uses PHP to generate automatically all the reports, in some large installations the generation of the reports can take large amount of memory. If you get memory errors, you need to increase the maximum amount of memory allowed to PHP. Look for the file /etc/php5/apache2/php.ini and change the value of memory_limit (Ref: http://php.net/memory-limit)

Network Configuration

How do I configure WiFi in Ubuntu?

The following website provides a guide to set-up a WiFi connection in Ubuntu. https://help.ubuntu.com/community/WifiDocs/WiFiHowTo and http://www.ubuntugeek.com/how-to-troubleshoot-wireless-network-connection-in-ubuntu.html

How do I configure Wired Networks in Ubuntu?

The following website provides a guide to set-up a wired network within Ubuntu. http://www.ubuntugeek.com/ubuntu-networking-configuration-using-graphical-tool.html

How do I configure a Dial-Up connection in Ubuntu?

The following website provides a guide to set-up a Dial Up internet connection within Ubuntu. http://www.ubuntugeek.com/setting-up-dial-up-connection-in-ubuntu.html

Personal tools