WiFi calling is a feature touted by some carriers to be a big cost-saver. Going beyond the traditional carrier model, some prepaid MVNO providers are even offering pure WiFi-based calling and texting, only falling back to cellular while outside of WiFi coverage.
The idea here is that users are mostly blanketed by WiFi routers and hotspots almost anywhere, anyway. While at home, or while at work, there is likely to be a fast and reliable WiFi access point, which is likely to be faster (or at least with lower latency) than cellular connections.
This is the premise behind providers like Republic Wireless, Freedompop and Straight Talk, as well as Scratch Wireless. WiFi-only (or WiFi-first) providers promise mostly unlimited calls and text while connected to a WiFi hotspot. Cellular calls and text may come as a fall-back for free or for a nominal fee.
But you don’t necessarily have to be on these providers to get calls and texts through WiFi. Sure, there are IP-based chatting services and VoIP providers (Skype, Viber, Line, WhatsApp and others come to mind). But if you want to be able to receive calls and texts from other landlines or mobile phones, here’s the solution: Google Voice.
Enabling SIP-based calling on your Android device
When receiving calls or SMS, Google Voice rings your nominated number or numbers so you can essentially receive calls on just about any landline or mobile phone. However, you can also set-up your Android smartphone to make and receive Google Voice calls via either cellular data or WiFi. yes, that’s right — you can use this even without a voice or SMS plan. The great thing is that Android comes with a SIP client built into the Phone app.
1. Setup a Google Voice account. This should be simple and straightforward, especially if you’re in the US. If you live in a jurisdiction unsupported by Google Voice, you can use several ways to trick Google you are in the US (a combination of disposable US-based numbers, plus the use of a proxy server — more on this later).
2. Download and install Google Voice on your device. You’ll need this to set-up forwarding for calls and SMS. For our purposes, you’ll need to disable forwarding to your phone’s number, unless you want to get duplicate notifications and rings.
3. Download Sipdroid on your Android device. The purpose of this step is to automatically set-up an account with pbxes.org, which is essentially a SIP network that supports Google Voice trunking. Google Play link is here. Launch Sipdroid and click the “New PBX linked to my Google Voice” link at the bottom of the welcome screen. You will be then asked to create a new account.
Take note that your Google username and password will be stored on pbxes.org. If you use 2-step verification, then you will need to generate an application-specific password for Pbxes first, as the system will not accept your Google password otherwise.
4. Login to Pbxes.org. Once your account has been created, you can login to Pbxes.org using the credentials you set-up in step #3. Go to the “Extensions” part in the sidebar and look for the “Sipdroid” entry. Usually, this will have the extension 200, which means your username for this account would be firstname.lastname@example.org.
Now here’s the interesting part. We will need to set-up your phone app to make and receive calls via Google Voice without the help of Sipdroid.
5. Setup your Phone app. Tap the three-button menu (or your menu button) and tap “Settings”. Under “Internet call settings” open “SIP Accounts”. Add a new account, with these details:
Username: username-200 (or insert whichever account name was setup on Pbxes.org, including the extension)
Password: Your Pbxes password set-up for this particular extension
Set as my primary account: checked
Save the account. Your new account should now be listed under SIP Accounts, but should indicate “Not receiving calls”.
6. Turn on call receiving. Still under SIP Accounts, check the box that says “Receive incoming calls”. Android should now register with Pbxes.org with the account you just set-up. If successful, it the SIP account should read “Primary Account. Receiving calls.” Otherwise, you may have to revisit set-up again to make sure the username and password are correct.
7. Turn on Internet calling. Back under “Internet call settings” you can setup your devices to use Internet calls “For all calls when data network is available” if you want all your calls routed through Google Voice. Otherwise, use “Only for Interent calls” or “Ask for each call”.
8. Setup Google Voice app. Under settings in your Google Voice app, you will have to remove forwarding to your phone’s number. Otherwise, it will ring your device twice: once under the SIP client and another instance as a regular phone call. Under “Sync and notifications” you can set your device device to receive text messages in your regular messaging app (this may be version dependent).
You can already remove SIPdroid, because your default Phone client acts as your SIP client, too. If your Android release does not support SIP calling right from the Phone client, then you can keep SIPdroid. Try calling your number to check if your phone receives calls via the Phone client. You can also try making outbound calls. These will be routed through Google Voice if you have set it up properly (and if you’ve turned it on under #7).
Does this work for you? Feedback would be appreciated. Again, these settings might be dependent on your Android version or ROM. This should work on vanilla Android/AOSP-based releases, Google Play Edition, CyanogenMod and any release with SIP enabled in the Phone app.