For much of the 1990s I worked for a small company that built satellite based telephony gear that was intended for long distance trunks in areas of the world where it was not cost effective to put undersea cables. By the end of that I had a pretty good understanding of various analog and digital telephony systems in real world use.
When we started needing more than one phone line in the house to support a business the cost of land line service started be bothersome. At that time the local telephone company was required to have no tolls on local calls (less than about 10 miles) and was constrained by competition to have reasonable interstate long distance rates. But the in-state long distance calls, including “local long distance” calls in our local area code, were very expensive.
Voice Over IP
In the early 2000s I became aware of a software call handling system called Asterisk which can be used to create a “private branch exchange” (PBX) and found that low end Analog Telephone Adaptors (ATA) from companies like Sipura were available. It seemed like a fun thing to figure out how to use that technology, my interest in telephone systems developed through my previous real job could be put to use. And maybe we could save a little money.
The concept was simple: Hook the phone and the phone line into the Sipura ATA and run Asterisk on the home server. When you dialed a number the Sipura ATA would send the call to Asterisk and a dial plan there would look at the number and decide to place the call over the phone company’s wire or send it over the Internet via one or more cheap, “pay as you go” accounts with “Voice over IP” (VoIP) companies that had “bring your own device” (BYOD) plans.
Sipura was bought by Linksys and Linksys is owned by Cisco which makes some nice high end business phone equipment. But I always had issues with echo on the Sipura/Linksys ATAs, especially with my spouse’s favorite cordless handset. So I’ve been using Grandstream ATAs for years now.
Asterisk, at least the bare Asterisk I was using, is not for the faint of programming heart but it did allow for some fun exercises. Setting up voice mail and having it email you the sound files was cookbook. A bit harder was setting up white and black lists so that telemarketers don’t get through. Getting a secure, modular call plan that supported multiple locations and decent least cost call routing was also fun. At least for the programmer in me. I can see where it probably wouldn’t be for everyone.
We eventually dropped the land line service and transferred our numbers to a VoIP provider. But we only used them for connectivity leaving the voice mail and call routing logic in Asterisk.
Flat rate or pay per (fractional) minute?
Having run Asterisk for a while, I had collected representative ”call records” or ”call detail reports” (CDR) as the PBX world names them. Basically this is the metadata that lists all the calls made, the calling and called phone numbers, time of day, and how long each call lasted. Armed with this information it was easy to setup some analysis scripts to play that against the pricing lists for various services. In our case that exercise showed that it makes a lot of sense to pay per minute for each call in or out. Our current provider only charges on a 1/10th of a minute (6 seconds) interval so you don’t even have to pay for a full minute increment. We end up with about $5/mo per phone including charges for 911 service, etc. This is far cheaper than the old land line telephone company or the “unlimited calling” flat rate plans offered by many.
Reliability and Availability
In the old days the telephone company strived to achieve “five nines”, that is 99.999%, uptime. In one year that works out to having no dial tone for a total of about half a minute. Since one reboot on your server eats up your entire allotment of down time for the year residential VoIP does not and will not achieve five nines availability. Nonetheless there are things one can do to improve the situation.
I got a bit worried that all of our communications were going through one little Mac Mini and if it failed we would lose email and telephone services, so I moved the call handling to a Soekris box running Astlinux. The Soekris box, my router and the service provider modems all happened to run on 12 volt power so I put them on a deep cycle wet cell battery system to avoid issues with power failures and the hassle of multiple small UPS batteries. We’ve changed VoIP providers a few times, ISPs a couple of times, gone through a number of different routers but the basic system design was pretty constant.
In our case we had, and still have, a number of devices and services connected in series so that if one fails the whole service fails. In order we had:
- The VoIP provider
- Our Internet service provider (ISP)
- The line between our ISP and our house
- The modem to the ISP
- Our router
- The Astlinux box
I am not counting the individual ATA boxes because if one fails we can still use another. Until I rewired the modem, router and Astlinux box to run off of a large battery we had issues when the power failed and one or more UPSs were found to be inadequate. Stable power helped a lot.
But another thing became apparent when I started using a VoIP client on my smartphone: If anything at the house failed I lost phone service. Of course this always seemed to happen when I was out of town and could not fix the problem.
By then our current VoIP provider, Callcentric, had a pretty good “call treatment” setup. It can’t do all the magic I could do with Asterisk dial plans and custom written plug-ins. But it can do enough to not need the complexity of running my own PBX. And they started allowing more than one ATA to register with their servers for the same account with no extra charges. So the Astlinux box was decommissioned and all the ATAs and smartphone VoIP clients now register directly with Callcentric. Now, as long as I can get to a working WiFI hot spot with my smartphone (or if I am desperate enough to turn on cellular data on the phone), the only single point of failure for our home phone is our VoIP provider.
Mobile Phone Service
Since about version 2.3, Android has had a built support VoIP calling. With that and WiFi access, there is no incremental cost for me to call from the cellphone over what it costs to do the same call from home. In fact, I would not even need an account with a cell phone carrier to have a useful smartphone. But there are a number of times where actually having an account can be good. Like on the highway or in a hotel with no WiFi or expensive WiFi. For me, those times are limited so a “pay per day plan” works out great. I end up putting $100 on the account about once a year, so that averages out to about $8/month.
To do that, I need a phone with no contract. These are becoming more available but when I first looked into it there was only one smart phone you could buy in the United States that was unlocked: the Nexus One. So we went with Android rather than iPhone for that reason. And the follow on unlocked from the factory smart phone purchased more recently is also an Android (the devil you know. . .).
The ATA devices and the Android phones have a limited life. In the case of the ATAs, it seems that 5 or so years is a reasonable estimate. They cost between $40 and $60 so that is about $1/mo. For a high end Android phones assuming a useful life of three years, it is about $20/mo. VoIP service of about $5/mo and mobile service of $8/mo for a total of less than $35/mo.