Thursday, November 18, 2010

Introduction

Welcome,
My name is Max, I'm a student majoring in software engineering in Israel.

In my final B.Sc project, I had a goal of figuring out how to
make cheaper cellphone calls using VoIP (Voice over IP),
and taking advantage of the lowering of landline
phone calls prices in Israel.

Cheaper calls virtualized asterisk based system

My project instructor suggested I checkout Asterisk,
an open source VoIP PBX (=Private Branch eXchange,
a sophisticated switchboard app).


I also wanted to experiment with Google Android OS
based phones.
So the VoIP client had to be written for Android.

*** Please note that the VoIP protocol mentioned later is not restricted to
Android but clients are available for iPhone, Nokia, Windows Mobile, Blackberry etc.


And so, I began digging through the net to figure out how can I combine
the jigsaw parts above and create a working cheaper-phone call system.

What I learned is that there exists a well known protocol for VoIP called
SIP (Session Initiation Protocol) which is in essence, resembles HTTP.
SIP is for serving the needs of VoIP like HTTP is for serving the needs
of web pages.

Asterisk supports SIP out of the box but on it's own its quite complex to setup as
it's a Linux based app and takes time to configure thoroughly.
To make life easy there are some companies like Fonality which
create custom-made and tailored distributions of Asterisk.
Fonality's distro is called Trixbox,
latest version is based on CentOS 5.5 with Asterisk 1.6 and a web based frontend
for configuring settings based on FreePBX.

The trouble with Trixbox is that it requires a clean hard drive,
as its installation by default, formats everything, so what I
came up with is installing it inside a virtual machine using VirtualBox.

More so, I found out about another really cool open source project
called Sipdroid which is a SIP client for the Android OS.

Finally, the last piece of the puzzle is how to convert analog phone line to
a digital SIP based line.
Asterisk supports various hardware devices ranging from internal PCI cards to external ATAs
(Analog Telphone Adapters) router like devices.
Most of those converters are very expansive (amounting to thousands of USD).

Being a broke student, I looked for a cheap, yet flexible enough converter and I stumbled
upon the Cisco Linksys SPA3102 which price amounts to around $100 - $120.
It's a marvelous piece of hardware, although limited to only FXO port
(the port into which you plug-in your phone line) and has no echo cancelling
features, does the trick pretty well at an affordable price.

In the end, I glued everything together and created a method for calling from
my cellphone using WiFi/3G/EDGE/GSM from my landline plain simple telephone network.
And thus getting quite a discount when doing so, it's quite nice when you're abroad
and feel like calling cheap through WiFi.

Please stay tuned, I'm going to describe the whole process of making this
possible starting with installation of trixbox via VirtualBox,
configuration and setup of SPA3102
and finally, connecting and calling through Sipdroid.



Cheers, Max.