Tuesday, August 31, 2010

In Pursuit of Free Phone Calls

In my attempts to get free international calling, I'm bringing a wi-fi-only calling configuration to my Google Nexus One platform. Unfortunately, Google Voice isn't a VoIP service like Skype; it requires use of the cell network to move packets around. I say "unfortunately" because the process of making and taking calls becomes a lot more complicated. This whole process took me two consecutive evenings to complete, but the ultimate payout is worth it.

Here's what I'm using for my configuration, which is successfully taking inbound calls and making outbound ones:
Google Voice + SipDroid + sip2sip + ipKall + PBXes + Google Voice Callback

My loose translation of what goes on when I accept a call on my Nexus One:
IPKall and PBXes are both associated with the same SIP number, so when a call comes into the Google Voice number, it forwards to the IPKall number, which is tied into a SIP number. The SipDroid app uses its PBXes call path settings to accept calls to this SIP number. Essentially, it creates the connection from my phone to the other destination by going through the path "Google Voice->IPKall->SIP number, taken by SipDroid app using PBXes".

When I make a call on my Nexus One:
Google Voice Callback intercepts my call; it calls my number on one end of a connection (which goes through incoming process mentioned above) and then calls my intended destination with my Google Voice number showing up on the caller ID. I didn't initially understand why this app was necessary, but really it's about bridging the VoIP-cell gap. Without it, my cell phone wouldn't understand how to make use of its SIP+physical number setup to traverse the cell network used by Google Voice.

*** Update (Nov. 26, 2010): I've been using this setup now for the past 2 months to make calls from Switzerland to the US. Call quality is pretty good, but sometimes with a slight lag (not a noticeable problem if you and your other party both talk and process slowly). The quality of your WiFi connection can dramatically impact the quality of your calls; initially the wireless network I was using was having some hiccups, and calling was essentially unusable. On the up-side, text messaging works great even with a bad WiFi connection.


Slightly more detail on the different pieces of the configuration, if you care:

Google Voice: app on the phone that calls numbers with Google Voice number; when verifying the phone with Google voice, I use the physical IPKall phone number

SipDroid: app on the phone, "softphone" that ultimately accepts calls. Connected to PBXes setup

sip2sip: sip phone DID number provider (sip:2233#####@sip2sip.info) [sip2sip.info]. Acts as sort of the transitioning point from cell network to VoIP.

IPKall: real phone number that's associated with SIP number; Google Voice thinks this is the phone number that my (non-existent) carrier has provided me with.

PBXes: creates routing paths that tie a SIP number to actions [pbxes.org]; SipDroid uses PBXes settings to take incoming calls for a given SIP number

Google Voice Callback: connects my phone and my callee's phone by first calling me and then the other end