VOIP with Asterisk
From Payne.org Wiki
Contents |
Voice-over-IP (VOIP) solutions have been around for a while, but open source software and low-cost VOIP hardware have made things a lot more interesting.
I run a VIOP phone system at my house. Why?
- Extensions anywhere. It all runs over the Internet -- I have extensions in four states. You can direct dial (3 digits in my system) within in the house or from location to location.
- Arbitrarily complex ring rules. Son's girlfriend calling? No problem, use Caller ID to ring straight to his room phone. Distinctive rings can be used to identify certain callers. Calls can ring multiple locations simultaneously, and first one to pick up "wins" the call. And of course, locations can be remote!
- Integrated applications. An app to announce the outside temperature is less than 10 lines of Python. Wakeup calls? Ring the kids rooms automatically at 6:50 on school days until they wake up.
- Conference bridges.
PBX Software
The leading free VOIP switch (PBX) software, by far, is Asterisk from Digium [1].
If you want a complete, tested, supported system, I highly recommend Switchvox. Switchvox is built on Asterisk, and has an excellent Web UI for configuration and administration that doesn't assume any knowledge of Asterisk technical details.
If you want a free, unsupported distribution, try Trixbox which includes Asterisk bundled with other open source components.
What I like about Asterisk:
- The price (free)
- The critical mass and community
What I don't like about Asterisk:
- The configuration system. Line numbers + a crappy configuration language {sorry Mark!} that's slowly evolving to be a complete programming language. Why not use an existing language?
- Legacy ties to Digium hardware. For example, if you want to run conferencing you need Zaptel hardware (for a clock source), or a dummy driver.
Resources
- Asterisk Wiki at voip-info (the best documentation resource) [2]
- VS-1 Asterisk Server. A pre-packaged Asterisk server, with a Web interface, in small form-factor PC. Recommended by a friend. [3]
"Soft" Phones
You don't need any hardware to start playing. "Soft" phone software that runs on PCs and other devices is widely available. I used to use:
I need a decent soft phone for the Mac. Some recommendations I've gotten:
- "Zoiper". (From Sam T.) A simple, straight forward VOIP client for the Mac. I got it running in 5 minutes. In my testing, I wasn't able to get echo cancellation to work (absolutely key), and I couldn't get it to send DTMF digits during calls that were recognizable on the other end. [6]
(My rant on soft phones: why does every vendor seem to insist on making the app look like a "phone", skinning the app so it doesn't look like an app, and providing mostly useless eye candy and animations? I really want a soft phone app that looks and works like a normal app, doesn't take up a bunch of screen real estate with useless telephone keypad graphics and icons, and sits quietly in the background until I need it or someone calls me. I really want something that looks more like the early versions of Skype -- simple, clean and functional.)
"Hard" Phones
The hardware falls into two broad categories: IP (Ethernet) phones and analog telephone adapters (ATA).
IP Phones
IP phones are exactly what you expect: telephones with Ethernet jacks. Prices range $80 and up, with a nice sweet spot around $150. Prices are coming down as new models and competitors enter the market.
Models I own:
- Linksys (Cisco) SPA-942. My current favorite, by far. Very solid, with a lot of nice features (including an integrated headset jack). Street price: $190 (The '941 model lacks a backlit display and power over Ethernet: street price $120).
- Grandstream BT-102. A very low-end phone. This model has dual RJ-45 jacks, so you can loop through a PC or other device without needing a 2nd network drop. Complaints: cheap handset, some handset echo, and a digit-only display (no caller ID text). Street price: less than $40.
- Grandstream GXP-2000. Grandstream's step up from the '102. Multi lines, text display. When I first got it, the firmware was very buggy. Upgrades have fixed some problems, but I'm still struggling with flaky audio problems. I'd spend the extra $40 and get the SPA-941 (above).
Asterisk hackers I highly trust and respect recommend Polycom phones.
Analog Telephone Adapters
Analog telephone adapters (ATAs) provide "phone line" jacks that you can plug plain old telephones into, and provision as extensions on your system. ATAs are useful if you have existing phones and/or wiring that you want to use on your VOIP system. They're also the most cost effective way to get a cordless VOIP setup, as Wifi/VOIP phones are relatively expensive.
ATAs may also have FXO ports, which are the inverse of the phone line. If you have an existing analog phone line, you can plug them into FXO ports and have inbound calls routed into Asterisk. Think of an FXO + Asterisk as a very fancy answering machine.
ATA models I own:
- Cisco/Sipura SPA-2002. This unit provides 2 analog line ports (FXS) and is highly configurable.
- Cisco/Sipura SPA-3000. Not currently recommended. The 3.0 firmware has a widely reported echo problem on the FXO port (which I'm experiencing).
- GrandStream HT-286. One analog port, this is the first VOIP hardware unit I bought. It is not as configurable as the SPA-2002, but has worked very well.
Supplier
I buy my VOIP hardware from VOIP Supply [7]. They have a great selection, good prices, and fast ship times to my East Coast location.
Termination
If you want to make and receive calls from the outside world, you'll need a termination provider. Inbound providers will give you telephone numbers (Direct Inward Dialing, or DID) that are routed to your Asterisk system. Outbound providers will let you place calls from your system to outside phone numbers.
Providers I use:
- Broadvoice. $20/month for unlimited phone calls to most of North America. Reliability was better in 2005, and has gotten worse through 2006. The biggest problem is losing registrations. Customer service is really bad.
- Vitelity. Originally Sixtel, a fly-by night wholesale provider, charging about 1.3cents/minute for North America. They provide local inbound numbers (DID) as well as 800 numbers, for $1-2/month each plus usage. Customer service was a total disaster. Vitelity seems much better.
- VoipJet. A slightly less fly-by-night wholesale provider, OUTBOUND only. No DIDs. They charge about 1.3 cents/minute.
Most have heard of Vonage [8]. The problem with Vonage and Asterisk is that their standard service is locked to an ATA they provide you. They do sell an add-on service called Vonage Softphone with a second phone number that supposedly can be pointed to Asterisk. For more info, see [9]