My dad lives in Africa. Botswana, to be precise. He is mostly retired, but still dedicates himself to helping others via drug & alcohol outreach and counseling. He and his wife have started or been instrumental in building several AA groups within the region, and they run a small non-profit called Safe Haven Counseling.
Enough with the backstory. When I went to Africa with my dad, I spent a week at his home and decided to overhaul his home network. One of the items on my list was to get a reliable Asterisk installation running there, so that he could easily (and cheaply) talk to folks back in the States.
I had a few options with regard to how I should do things, and ultimately what I wound up with was an Asterisk installation on his Linksys WRT54G (running openwrt). The tricky part was that Asterisk 1.4 is too big to completely fit in the WAP’s root filesystem. Rather than fooling around with paring the installation down, I decided to create a share on his Buffalo LinkStation and did the install to the share. Then I created symlinks from the WAP’s rootfs to the stuff on the LinkStation share, and voila, a full Asterisk installation on the WAP.
It’s not as clean as I’d like, because of the dependency on the LinkStation. At some point, I may try to reduce the Asterisk footprint by removing unnecessary modules (many don’t work or are useless on the wimpy CPU). It works, though, and I’m still pretty proud of it.
He’s got a Grandstream BudgeTone 101 for his VoIP phone, and I’ve got his * server configured to register directly with my * at home. This way we can dial directly via 3-digit extension between sites. I also got him set up with a VoicePulse Connect! account so that he can do cheap calls to/from the States. Even though I’ve been messing with * for almost 4 years now, it still amazes/tickles me that I can dial a Philadelphia number and ring a phone in Botswana.
One annoyance about the solution is that VPC only supports ulaw/alaw/gsm. Because of the high latency of Dad’s Internet connection, the *law codecs are completely unusable. GSM sounds OK, but it still tends to drop packets. While I was there, I played around with G.723.1 between his BudgeTone and my home system (my * server transcoded from G.723.1 to ulaw for the cisco ATA). It sounded really great… Much better than even GSM. Unfortunately, it’s hard to find any good VoIP termination providers who support G.723.1. I guess it’s that whole licensing issue.
What I can’t work out is if there is some way to make the BudgeTone do codec negotiation. I’d love to be able to specify that it use G.723.1 when certain extensions are dialed, and GSM for anything else. I don’t think the phone has that capability, though. I’m not even sure I could do it within *, even if that were an option (it’s not; the WRT54G has barely enough oomph to handle a single SIP call, much less transcode).