For those who’ve not yet explored the world of Asterisk, I urge you to do so. Asterisk is open-source PBX software that more and more large companies are using to replace their old, expensive, and often horribly antiquated PBX systems. Why spend $50,000 on a Lucent system when you could buy a nice server for $5000, and get the same or better performance with far more customisation options? You don’t, though, have to be a huge business to take advantage of what Asterisk has to offer. Many run it at home to use it for voicemail, home businesses, or give themselves for free some of the features for which the phone companies charge.
I was playing around a bit this past weekend with embedded Asterisk — Asterisk running on a small, hackable router capable of running one of the third-party firmwares like OpenWRT or DD-WRT. I’d noticed the Buffalo WHR-54GS was on sale, so I picked one up with the intention of building an Asterisk box for the home that would be small, quiet, and use very little power.
Storage space on the little routers is always a concern, and the WHR-54GS has very limited space (4MB Flash, 16MB RAM). Some of the newer models of these little routers have additional built-in memory, but some manufacturers, such as Linksys, actually use less memory on the newer models than the older ones, making it difficult to find just the right router for the job. Another concern, of course, is speed. Little home routers are relatively simple machines, and therefore don’t need much in the way of processing power. Few homes have enough computers to really slow these routers down, so they generally perform quite well for their assigned tasks.
The problem, however, comes when you install a third-party firmware on it and load the router up with additional software packages. Some of the packages available run brilliantly. Some of them do not, as the computing power inside the router simply isn’t enough to handle it.
I’d heard differing stories about running Asterisk on one of these little boxes, with some saying it’s the perfect way to create a miniature PBX server, and some saying that there’s simply no way that Asterisk can run effectively because there’s not enough processing speed.
Undaunted by the naysayers, I set about the task of replacing my router’s firmware (I chose OpenWRT for the task, but there are others available) . This proved to be the most difficult part of the undertaking, as Buffalo makes it difficult to replace the firmware on their routers. One can’t simply use the ‘Firmware Update’ portion of their routers because their firmware update program requires the firmware to be encrypted in a special way that’s either illegal or too difficult to duplicate. Replacing the firmware consisted of sending the new firmware via TFTP at just the right moment of a maintenance boot cycle. Hold the recessed reset button down. Pull out the power cord. Plug the cord back in. Initiate the transfer of the firmware. Release the reset button. The whole process takes more arms than I have, so it required significant juggling.
Once the firmware was updated, however, installing Asterisk was easy. There’s a web server built into the router to manage the features, and one page included an option to add additional software. Asterisk was one of the options, along with modules to handle voicemail, additional sounds, additional features, etc. I ran into a problem briefly in which I ran out of space to install one of the modules I’d wanted to install, but other than that, the rest of it was pretty easy.
Configuring Asterisk is a daunting experience for those who are unfamiliar with its idiosyncrasies, however, there are numerous help files available on the web, and since I was connecting to IdeaSIP, I just started off with the IdeaSIP instructions from the faq and worked from there to customise things.
In minutes, I had a functioning Asterisk server running.
Unfortunately, in testing the server’s ability to handle incoming, outgoing, and internally-transferred calls, I noticed that the performance of the little router simply wasn’t enough to handle the traffic. I could easily forward calls in to the phones and bounce calls out through IdeaSIP, but the signal was choppy, and there were numerous errors from its inability to keep up.
While there are slightly more powerful home routers out there on the market from which I could choose, none of them really seem to meet the minimum specs for Asterisk to be able to actually handle calls effectively.
Coming soon: My experiences wrangling TrixBox (a Linux/Asterisk install with all the gizmos and easy-to-use web-based management tools built-in)