Where there’s will….there’s a way

a.k.a. The logic behind the third Asterisk in my home office

I work from a home office. I have for over 10 years. About three years ago I gave up my last land line and went 100% voip. Since then I’ve had an Asterisk server in my office.

At first I ran Asterisk on Fedora Core 2 using an old P3-800 Dell desktop. But I quickly found that I wanted more of an embedded approach, not unlike the Asterisk appliances that have become popular of late. I soon arrived at Astlinux as the preferred approach for my needs, most recently running on a recycled HP T5700 thin client. Low power. Low heat. Silent. Reliable. Great!!

A couple of months ago I read about Askozia, a project that combines FreeBSD, the m0n0wall GUI framework and Asterisk. As a long time fan of m0n0wall I thought that this could finally be something to rival Astlinux. Astlinux has only the most basic GUI. Since my configuration is not complex a GUI might be useful. To test Askozia I used another HP T5700 thin client device…that’s two servers running. To this point it looks interesting but I’m not yet certain that I want to put it into production use. I need more time to become familiar with its operation and administration.

Of course I also added a number of phones and a couple of ATAs over time. In picking my favorite phone I find myself torn between the Polycom IP600 and and Aastra 480i CT. There is no question, the Polycom is a GREAT phone. But the Aastra is just about as good…and the cordless capability is simply wonderful! It lets me wander around while on long calls, tend equipment, get coffee, etc. The backlit display is really handy as well.

Well, my employer in evolving their US operation decided that a hosted virtual PBX approach would be most ideal. It would tie together our two formal offices with a handful of home offices in a cohesive manner. We selected Junction Networks OnSIP service as the provider and I was given the task of setup and administration.

Junction Networks has been very good to work with. The service has been reliable and they provide good support for common voip devices, including Polycom phones. However, they don’t directly support Aastra phones. They did offer to help me investigate making the Aastra work with their servers, which are a combination of SER and Asterisk.

For a couple of weeks I tried various settings but I couldn’t quite achieve voip nirvana. The best I could do was make the phone use their proxy and register for a few minutes. But eventually the registration would drop and I would stop receiving incoming calls. So for a few months I went back to the Polycom device as my primary phone. It’s ok, but being tethered all the time is becoming a real drag.

So I decided to look for an out-of-the-box solution. I bought a GN9350 DECT cordless headset. It connects to a Polycom phone inline with the handset RJ connector, or to a PC via a USB connection. For some reason the GN headset was really noisy and induced a lot of echo into conference calls. It was simply unacceptable so it’ll be set free through the magic of Ebay some day real soon.

Which brings me to my current solution…I’ve built yet another Asterisk server with a minimal configuration that just bridges the Aastra phone to Junction Networks. Junction Networks supports Asterisk directly, even providing me solid config examples. I just got this working but it looks good so far. So my Aastra phone is about to make it’s way back onto my desk. I’ll be unwired again, which will be great.

The one issue I’ve yet to figure out is voicemail. When the Astlinux server access an incoming call from Junction Networks they figure that the call has been completed, even though I may not answer my phone. So I suspect that VM will have to be handled locally.

My primary server still handles our home line and variety of supplemental services like FWD, SIPPhone, etc. Several phones deal with Junction Networks directly. And the Astra 480 has its own Asterisk instance just to allow it to deal with Junction Networks. Then there’s an Askozia testbed.

I suppose I could merge many of these functions onto one server…but there’s no real reason to do this. It may be better to keep personal traffic separate from business calls.

Who might have thought that I would be using three Asterisk instances in a one man office? Certainly not I. Luckily each runs on minimal hardware with essentially no hard cost. Oh, the joys of Asterisk.


Followup On My QoS / Traffic Shaping Question

Following up on the question I asked last week (Nov 9) about QoS/traffic shaping, specifically comparing a vlan vs IP range based strategy. My issue stems from the fact that I’ve added a number of new voip devices to my lan over recent months. Some of them run through one of the now three(!) Asterisk servers I presently have running, while others connect to external hosts directly.

Previously it was easy to dedicate highest priority to traffic to/from the one Asterisk server, since all voip traffic passed through it. But that presents problems when there are other phones need equal access to bandwidth, and those devices use several different external hosted PBX services. Of course, I’m on a humble 1.5M / 786k ADSL connection.

With some guidance from the m0n0wall users list I am trying a simple traffic shaping arrangement based upon IP address ranges. This required that I come to know a bit more about CIDR notation for specifying subnets.

Within the routers traffic shaping mechanism there are a number of pipes fed by queues. Each pipe has as weighted traffic priority. There are separate paths for inbound vs outbound traffic. Traffic can can be directed into a specific queue or even to a pipe directly. Which queue or pipe it goes into determines its priority traversing the router. By going directly into a pipe, bypassing the associated queue, you can also minimize latency for specific types of traffic.

The traffic shaper allows a subnet, as specified using CIDR notation, to be passed through a specific high/medium/low priority path. By assigning my voip devices ( to IP addresses conveniently separate from non-voip devices ( I give priority to traffic from a specific range of devices.

For the CIDR challenged (like me) : = all addresses to = all addresses to

I am in the habit of letting all my devices DHCP and using MAC based IP assignments in the DHCP service, so changing the IP addresses of the voip devices was really easy and took only a few minutes to implement. It took less than five minutes to make all the changes in the router and it seems to be working perfectly for now.

If there are any problems I’ll try the vlan method.


Why Asterisk Has Merit In The Home

This is arising from the VOIP Users Conference call of Nov 9 where someone commented to the effect that “Asterisk may not have much use in a typical home environment.”

I can’t completely agree or disagree. It’s not that simple. There are atypical people who will always undertake cutting edge things. They are few. But the uptake of Asterisk in general points to a broader group of people who are willing & able to do, or have done, interesting technological things in their home.

I’m not saying that I’ve done all these things. They are things I’ve read about, done or considered implementing around le maison du Graves.

  • Separate, private VM for each of the kids*
  • After hours filtering of calls from “friends” with known sleep disorders**
  • IVR based home automation
  • CRM-like caller-id pop-up on TV screen when the phone rings (a Tivo plugin)
  • Automatically duck the stereo volume when the phone rings (a Squeezebox plug-in)
  • Track your kids calling patterns through CDRs
  • Block calls to certain numbers
  • Provide for multiple simultaneous calls, without resorting to multiple analog lines
  • Conferencing beyond the three way calls found on most small two or four line phones (ala Panasonic KX-TG 4500)
  • Call recording
  • Hold & music on hold, using music from your private stash (presuming your have the rights)
  • Video phone, I’ve wanted to try this ever since we bought a new HD LCD TV last year

This is by no means a comprehensive list. But if that’s what I can recall of the top of my head then you know there are some really great ideas out there. We just have to sit and brainstorm a while.

Why expose your home network to another possible attack vector when you can access your home automation via IVR & DTMF? If you still use a land line (I don’t) you could keep it completely off network if you wanted. Not everything needs to be web-based.

*I once joked to my wife that, not having children, we should setup extensions and voice mail for each of our cats (2) & dogs (2).

**I once had a customer who fought with insomnia constantly. Each day I’d get to my desk and find a dozen emails from him overnight. It was impossible to keep up with his productivity. At least I was able to send his overnight calls to a custom voice message box with greeting that eased his frustration about not actually reaching me after 11pm.

And none of the above gives any consideration to the needs presented by my home office, which is why I switched to voip/Asterisk in the first place.


How To: Building an Embedded Asterisk PBX

Back in January of 2006 I wrote an article about my experience building an embedded Asterisk server based on the Astlinux embedded distribution and a Soekris Net4801 single board computer. Here’s the link.


What with all the recent enthusiasm for “Asterisk Appliances” this article seems more useful then ever. It’s a little bit dated as it references Astlinux 0.28 and 0.29 whereas Astlinux is presently around 0.45.

Even so the article is written from the point of view of a Linux novice and includes a glimpse into manually editing the configs using SSH from a Windows PC. There’s minimal emphasis on GUI, which should make some people happy.


How I Got Started With Asterisk: My First Asterisk Server

Back in Dec 2003 I had decided to finally take the plunge and build an Asterisk system to replace my home office phone system. I’d been tinkering with voip in various forms for many years, since using Vocaltech software over dialup in 1996, but this was to be my first production system. For the hardware I repurposed a P3-800 as the server hardware, bought some X101p cards, an ATA and one hard SIP phone.

The installation of the OS (Fedora Core 2) was simple enough given the availability of online guidance. It was my very first Linux experience so I made a few mistakes but eventually achieved what I needed. However I found the initial setup of Asterisk daunting. So, I decided to offer to pay someone to help with the initial config setup.

To get up to speed I’d been reading the Asterisk Users mailing list. So I just watched to find someone who seemed both knowledgeable and approachable. That someone ended up being Leif Madsen who was at the time a student at the Waterloo University in Canada. As a Canadian myself (although living in Texas) this seemed appropriate.

Leif and I discussed what I wanted to setup and he coded the requisite conf files for the vast sum of $100 CDN. Of course since then he’s gone on to be one of the authors of “Asterisk: The Future of telephony.” In later correspondence it came out that I was probably his very first paid Asterisk consulting gig.

Small world, isn’t it?

Phones That I Have Known

OK, maybe more than just phones voip-related devices….inspired by Randy’s question about our collective experience with hardware:

* denotes things that I continue to use

  • Polycom IP500*, 501*, 600*, 430*
  • Polycom CS100* (speakerphone gadget for use with soft phone)
  • Aastra 480i CT*, with 1 cordless handset
  • Pingtel Expressa (the single most worthless device I’ve ever bought…but pretty)
  • Zultys 4×5
  • Snom 200
  • Hitachi Cable WIP5000 Wifi cordless SIP handset
  • X-Lite* soft phone
  • X-Pro soft phone (sadly, there’s no migration path from X-Pro to EyeBeam)
  • Firefly IAX soft phone
  • Grandstream BT100
  • Phoenix Audio Duet USB speakerphone device
  • Mvox MV900 USB speakerphone gadget with bluetooth
  • Mvox MV100* USB speakerphone gadget
  • Sipura SPA-2000, SPA-2002*, SPA-3000
  • Digium X100p FXO (3)
  • Digium TDM400p with 2 FXOs
  • GN Netcom GN9350 DECT Cordless Headset
  • T-100* generic headset (a Plantronics clone I think, only $16 on E-bay!)

My operative principle is very simple…if something looks interesting I buy one. Then use it for 30-60 days and decide if it has merit. If it’s a good device put it into heavier service. If it’s not a good device then list it on Ebay and accept a small loss as the cost of aquiring the knowledge about the device.