I have terrible cell service at home. In fact, it’s my only complaint after switching from Verizon to AT&T. I could buy a MicroCell, but they’re only offered to contract accounts, and I’m using a prepaid account. However, I have great WiFi coverage at home thanks to my FiOS connection and my DD-WRT router. My solution: WiFi calling, also know as VoIP.
At this point, most people would download the Skype app, buy some credits, and be done with it. But do I think that Skype spies on Americans? You bet. Do I like to do things the hard way? You bet. Do I like to do things the right way? You bet.
My requirements were as follows:
- Voice calling over WiFi or data (3G/4G/LTE)
- Relatively inexpensive
- Multiple platforms (Android app, desktop app, etc…)
- Preferably open source
- Preferably able to encrypt conversations
VoIP in general
VoIP is to the POTS what email was to snail mail. VoIP is the natural evolution of the telephone system, and it’s implemented in more ways than you think. Chances are, most offices use a VoIP system, and in a way, all cell phone calls are VoIP calls. VoIP provides flexibility and access that the telephone system can’t.
In fact, VoIP and email are actually very similar. First, you need to find a provider and signup for an address. Then, you setup a client on your PC, phone, etc… This client then allows you to communicate with individuals anywhere in the world, on multiple devices.
A VoIP system is a collection of multiple, interchangeable hardware pieces, software programs, and codecs that allow this communication. In comparison to Skype (I shouldn’t hate on Skype), which is an end-to-end VoIP solution (hardware/software/codecs). In essence, we’re talking about building a house versus buying a house.
Fair warning, if you don’t know VoIP, it requires a lot of reading and learning. I recommend getting a general overview of VoIP and why you want it. This is a great place to start.
I had never used VoIP before, so naturally, I turned to reddit for advice. I was told to check out VoIP.MS. They’re a Canadian-based company that offers international VoIP service at cheap rates. Since I had nothing else to go on, and they seemed to be generally liked by the tech community, I decided to try them out.
Signup and fund an account
Ready to go? The first thing you have to do is signup for an account. This part should be pretty straight-forward. Make note of the SIP username in the welcome email you receive. Then, you’ll need to add funds to your account. Login, then head over to Finances–>Add Funds to pay with either a credit card or PayPal. The minimum amount you need to get started is $25. Don’t worry, at current rates, that’s 2500 minutes.
Order a DID number
I’m not going to be porting my number. Instead, I’m going to purchase a new number and have the option to choose which number I want to use (cell phone number or VoIP number). My inbound/outbound calls can come through the VoIP number if I choose to use it. VoIP.MS does offer the ability to port a number, and I believe there is a small, one-time fee for this. However, I don’t want to risk porting my number to a service I’ve never used before.
To signup for a DID number, go to DID Numbers–>Order DID(s), and select the type of number you want. I’ll be choosing a local number in the United States.
I’m near Pittsburgh, PA, so I’ll be looking for a number that starts with 724 or 412.
Select the number you want, and click Order. If you want to text (SMS), you’ll need to choose a number with the small phone icon next to it. More on that later.
On the next screen, you’ll need to make a few decisions. In section 1, confirm the number you ordered. In section 2, choose a rate plan. I chose to pay per minute since I didn’t plan on using 3500 minutes per month.
In section 3, there are a few more options to select, the first of which is CallerID. This option is for the CallerID lookup when other people call your number, but, VoIP.MS does not charge for any queries coming from a number that is already in your phone book (more on that later). Because I’m not using this number for business, and I only plan on giving it out to a few people, I will add them to my phone book and the CallerID lookup will be free.
The next option is selecting a server. For now, pick the server closest to your location, as it will provide the lowest latency. If you want to get technical, VoIP.MS offers a Linux shell script that will ping multiple addresses from an input file to let you check all the servers at once (more on that later).
The next option is for routing. This is basically asking you where you want the call to go when someone dials the number. We want it to go to the SIP account, which we’ll setup on our phone later. We’re going skip Additional Failover Options for now.
As a quick side-note, VoIP.MS offers a lot of interesting routing options.
- IVR, which is a menu-based answering system
- Calling Queue, which is an on-hold call system
- Time Conditions, which routes your call to different destinations depending on the time of day
- Call Forwarding, which immediately forwards the call to another number
- SIP URI, which forwards the call to a SIP URI (e.g., x@y:port/domain name/IP)
- Ring Group, which can ring multiple devices at once
- Play Recording, which plays a recording when the number is dialed
- Callback, which will call a specified number back when your VoIP number is dialed. When you pickup, you will receive a dialtone and you can then call out through your VoIP number. Useful when you don’t have VoIP setup on your device.
- DISA, which lets you call into your VoIP number, enter a pin, and dial out to another number using VoIP.MS termination rates
- Voicemail, which directs the caller to your mailbox
- System, which presents the caller with a system option, like hangup, echo test, busy, etc…
When you’re ready, click Order. Here, you can see how much you’ll be paying per month, and how much you’ll be paying today. Click Confirm Order to complete you order.
Congratulations my friend, you’re now the proud owner of a VoIP number!
Head over to DID Numbers–>Manage DID(s). Select your number and click Edit Selection.
Scroll down to the SMS section and check the box for Enable SMS. This will allow you to send SMS messages from your VoIP number. There is a cost of $.01 per message, however. Apply your changes when complete.
*Note – There is no option for MMS with a VoIP number
Setup Phone Book
As I mentioned earlier, numbers in your phone book that dial your VoIP number won’t be charged for a CallerID lookup. In addition, you can also program speed dials entries from your phone book. I would suggest adding another phone number (not your cell phone), so you can make test calls in and out.
Head over to DID Numbers–>Phone Book.
Select Add Phone Number, and fill in the fields. Click Save when you’re done.
You can also upload phone numbers in batches via a CSV file.
For example, the CSV file would be structured like this…
…and would import like this.
I definitely recommend going to Main Menu–>Account Settings and checking out all of the tabs there. In particular, there’s a few things you should check.
Go to the General tab. If you want to do CallerID, I recommend putting your VoIP number in the CallerID Number field.
Go to the Inbound Settings tab. Select the type of device you will be using with this account. I’m using a softphone, so I’m going to leave it as the default.
Finally, I recommend going to the Notifications tab and setting up a few notifications. In particular, I would setup a notification for Balance Threshold, My Customer Portal Password is Changed, and Main Account SIP Password is Changed.
This is optional, but it’s something you may want to consider setting up. When you dial 911 on a landline or cell phone, the 911 operator is provided with your physical location. However, since a VoIP call can initiate from almost anywhere, and may terminate in a different country, the 911 operator won’t be able to determine your location. In fact, if you don’t have e911 enabled, you’ll get a busy signal when you dial 911 from a VoIP number.
Head over to DID Numbers–>e911 to read about it. If you choose to enable it, you should go back to Main Menu–>Account Settings–>General and enable a e911 Default CallerID.
Picking a server
Save the script to your desktop as whateverthehellyouwant.sh and make it executable with chmod.
chmod 777 whateverthehellyouwant.sh
In the same directory, create a text file named voip_ping_hosts.txt containing just the server names, nothing else. A little Excel (or Libre Office!) magic with delimiters will remove the commas, spaces, and parenthesis. If you’re lazy, the list is below.
atlanta.voip.ms atlanta2.voip.ms chicago.voip.ms chicago2.voip.ms chicago3.voip.ms chicago4.voip.ms dallas.voip.ms denver.voip.ms denver2.voip.ms houston.voip.ms london.voip.ms losangeles.voip.ms losangeles2.voip.ms montreal.voip.ms montreal2.voip.ms montreal3.voip.ms montreal4.voip.ms newyork.voip.ms newyork2.voip.ms newyork3.voip.ms newyork4.voip.ms seattle.voip.ms seattle2.voip.ms seattle3.voip.ms tampa.voip.ms toronto.voip.ms toronto2.voip.ms toronto3.voip.ms toronto4.voip.ms vancouver.voip.ms vancouver2.voip.ms washington.voip.ms washington2.voip.ms
Run the script…
…and check the output for the closest server.
============================================ VoIP Server Latency Jitter Loss ============================================ atlanta.voip.ms 42.7 0.301 0% atlanta2.voip.ms 28.2 0.210 0% chicago.voip.ms 41.7 0.560 0% chicago2.voip.ms 52.5 0.193 0% chicago3.voip.ms 50.6 0.679 0% chicago4.voip.ms 44.4 0.418 0% dallas.voip.ms 77.3 1.988 0% denver.voip.ms 65.7 0.384 0% denver2.voip.ms 60.3 0.434 0% houston.voip.ms 62.1 0.738 0% london.voip.ms 103.4 3.867 0% losangeles.voip.ms 80.8 0.361 0% losangeles2.voip.ms 76.6 0.823 0% montreal.voip.ms 37.8 0.644 0% montreal2.voip.ms 40.4 0.321 0% montreal3.voip.ms 36.6 0.632 0% montreal4.voip.ms 41.6 0.713 0% newyork.voip.ms 20.3 1.225 0% newyork2.voip.ms 20.4 0.954 0% newyork3.voip.ms 21.1 0.822 0% newyork4.voip.ms 21.8 0.840 0% seattle.voip.ms 94.6 0.524 0% seattle2.voip.ms 91.6 0.988 0% seattle3.voip.ms 96.7 1.176 0% tampa.voip.ms 41.6 0.484 0% toronto.voip.ms 43.3 0.288 0% toronto2.voip.ms 51.7 0.426 0% toronto3.voip.ms 43.2 0.729 25% toronto4.voip.ms 55.6 0.236 0% vancouver.voip.ms 114.7 3.368 0% vancouver2.voip.ms 133.7 4.443 0% washington.voip.ms 37.4 0.704 0% washington2.voip.ms 38.5 0.967 0% ============================================
If you need to change the server selection for your DID, go to DID Numbers–>Manage DID(s) and edit the server for your number.
Let’s recap before we go on. You should have:
- an account number
- a DID number
- some balance leftover in your account for calling
- read through most of the general settings
- picked the server with the lowest latency
If you’ve done all that, check out Part 2 for how to setup a SIP client!