Monday, August 23, 2010

HOWTO : Voice over IP (VoIP) on Android (Asterisk Edition)

*** Last 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.

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.

PART I - Select a SIP provider

The following SIP providers offer free account of SIP service for inbound and outbound. You can select one of them that suit you most. I prefer sip2sip.info. Make sure to register to the SIP provider and write down all the details that they give you for further setting.

sip.tpad.com
sip.12voip.com
sip.smartvoip.com
sip2sip.info
sip.actionvoip.com

For example, your login name (account name) of sip2sip.info is "Android".

PART II - Asterisk configuration

If you have an Asterisk server, you can set it yourself. The settings are similar to the below mentioned. If you do not have one, I suggest you to use PBXes.org (the same provider/developer of SIPDroid) which offers 2,000 minutes monthly free air time for 60 minutes per call. You will have 2 simultaneous calls, 5 trunks and 5 extensions per account.

The following is setting at the website of PBXes.org :

(A) Create a Trunk
"Trunks" -- "Add Trunk"

"Trunk Name" - any name you like, e.g. sip2sip
"username" - the username of sip2sip.info, e.g. 3344567890
"password" - the password of sip2sip.info
"SIP server" - "sip2sip.info"

"Outbound Caller ID" - any name you want to display on phone

(B) Create Outbound route
"Outbound Routing" -- "Add Route"

"Route Name" - any name you like, e.g. sip2sip
"Trunk Sequence" - select the above, such as SIP/sip2sip

Select "Valid for all numbers"

"Extension" - any number, e.g. 100

(C) Create Extension
"Extensions" -- "Add Extension"

"Display Name" - any name you like, e.g. Android

"username" - android-100
"password" - any password
"dial" - "SIP/android-100"

"Outbound CID" - any name you like, e.g. Android

(D) create Ring groups
"Ring Groups" -- "Add Ring Group"

"ring strategy" - ringall or hunt or memoryhunt
"ring time (max 60 sec)" - 60 or less

Select "Hangup"

(E) Create Inbound route
"Inbound Routing" -- "Add Incoming Route"

Regular Hours
Select "Extension" to "Android <100>"

After Hours
Select "Extension" to "Android <100>"

Select "No override (obey the above settings)"

PART III - SIP Client (Softphone) for Android

There are 2 great SIP clients for Android, they are SIPDroid and CSipSimple. You can download them in the Android Market.

The captioned clients are under development in beta and alpha stage respectively. The current version of SIPDroid is 1.5.5 while CSipSimple is 0.00-12-22. For the CSipSimple, I suggest you to download it at her official site.

You can download "Barcode scanner" from the Market to scan the QRCode on the site for installation. Make sure you have enabled the "Unknown sources" at "Applications" of "Settings" at your Android phone.

(1) CSipSimple configuration

(A) Account
"Add account" -- "Basic"

"Account name" - any name you like, e.g. pbxes.org
"User" - username-<extension>, e.g. android-100
"Server" - pbxes.org
"Password" - password

(B) Settings
(a) Easy Configuration
Nothing to set now.

(b) Network
Check all items.

(c) Media
Check "Echo cancellation"
Check "Voice audio detection"

(d) User interface
Check "Dialer integration"
Check "Text dialer"
Check "Integrate with Music application"
Check "Keep awake while on call"
Check "Use partial wake lock"

(2) SIPDroid configuration

The setting is similar to the CSipSimple. It also provides video streaming.

PART IV - Dial out

At the space provided at the CSipSimple, type the following to dial out :

For example, you dial to yourself from another softphone.

android@pbxes.org

or

android-100@pbxes.org

PART V - Linksys SPA IP Phone (SPA941) configuration

Open browser and go to the setup page of SPA941.

Ext 1

SIP Settings
SIP Proxy-Require - pbxes.org

Proxy and Registration
Proxy - pbxes.org
Outbound Proxy - no need to set
Use Outbound Proxy - no

Subscriber Information
Display Name - Office
User-ID - office-100
Password - your password
Use Auth ID - yes
Auth ID - office-100

e.g. you have create "office" with the extension "100" at PBXes.org

User

Speed Dial
Speed Dial 2 - android-100@pbxes.org
Speed Dial 3 - david-100@pbxes.org

Speed Dial Out

Pick up handset, press "2" (speed dial number) and then "#"

PART VI - Conclusion

Although SIPDroid is the first apps in the Market for VoIP and it also provides video streaming, the dial out procedure is not mature. The apps cannot running in the background for awaiting VoIP calls when you always dial out to PSTN (land lines). It is because it dial out VoIP calls only.

CSipSimple is still in alpha stage but it is quiet more stable as at 0.00-12-22. You can select if you want to dial out via SIP account or Mobile phone number. It is quiet mature. It will be prefect if it also provide video streaming and contact list for VoIP dial out.

CSipSimple and SIPDroid are working prefectly on Asterisk.

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.

This tutorial may also apply to other smartphones or desktops that have SIP Client. For Ubuntu or Linux, you can use Ekiga.

That's all! See you.