Friday, August 20, 2010

HOWTO : Voice over IP (VoIP) on Android (Ekiga edition)

*** UPDATED ON AUGUST 28, 2010 (GMT +8)***

UPDATED : CSipSimple just released 0.00-12-24 today (2010-AUG-28). A quick test is conducted and some bugs are fixed. This tutorial will be updated when I fully tested this new version.

Testing report

UPDATED : The current version is 0.00-12-36 as on today (2010-SEP-22). The app is much more stable but accounts cannot be communication each other over 3G at the moment.

This tutorial is show you how to setup your Android phone to communicate with another IP Phone or Android in no further investment. Meanwhile, this feature does not consume your mobile phone air time but consume the 3G data. If you have an unlimited 3G plan, you will be very happy with that. Make sure you are connected to the internet when using the VoIP. Wifi also works fine.

Step 0 (Optional) :

If you will use your Android to call VoIP via wifi, you will need to configure your router for the purpose.

Forward the essential ports of SIP at your router.

Forward port 5000-5100 and port 3478-3479 to any internal address.

*It works great on TP-Link TL-WR1043ND router with DD-WRT firmware.

**You may also consider to do MAC filter for wifi access.

Step 1 :

Use free SIP provider

Official page

Register page

*the account may look like this -

** may require STUN server when you are behind NAT or firewall. The STUN server should be and port is 3478.

***You can also use Ekiga on your Ubuntu / Linux desktop.

Step 1a (Optional) :

If you will use Ekiga on Ubuntu 10.04, you should patch it with PPA.

sudo add-apt-repository ppa:sevmek/ppa
sudo aptitude update

To install -
sudo aptitude install ekiga

or, to upgrade -
sudo apt-get upgrade

Step 1b (Optional) :

If you are using Ubuntu or Linux and behind NAT or firewall, you may require to add the following lines to /etc/rc.local and then reboot.

The following setting is to overcome the timeout problem.

sudo nano /etc/rc.local
echo 3600 > /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout
echo 3600 > /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout_stream

Step 2 :

Install CSipSimple apps at the official site. The current version is 0.00-12-22 at this writing. CSipSimple is under development at Alpha stage. The version at the Market is 0.00-12.

Select "Menu" -- "Accounts" -- "Add account" -- "World wide providers" -- "Ekiga"

Fill in the "User name" - "yourname" and "Password" - "yourpassword".

Save it.

You may see the word "Ekiga" turn to green.

Step 3 :

Select "Menu" -- "Settings"

(a) Easy Configuration
Nothing to set now.

(b) Network
Check all items.

(c) Media
Check "Echo cancellation"
Check "Voice audio detection"
Check "Enable ICE" (if you are behind firewall or NAT)
Check "Enable STUN" (if you are behind firewall or NAT)
Enter "" at "STUN server"

*ICE may not required in some conditions.

(d) User interface
Check "Use partial wake lock"

Step 4 :

Exit and go to the dial panel. Select "six dots" icon on the left lower corner just next to the green phone headset.

Type your friend's account, the format may be "". Then, press green phone headset to dial out.

Remarks :

Up to now, the only cons is no contact list for speed dial. I have posted the request to the developer's site.

The known issue is that it cannot dial to Asterisk server as it will hang up automatically. In addition, when you call to Desktop that running Ekiga and behind router, you may encounter no voice between both sides.

The current development version (CSipSimple 0.00-12.22) does not support bluetooth. When bluetooth is enabled, the incoming and outgoing call may caused your Android hang or power off is required.

That's all! See you.