Introduction
Selecting hardware appropriate for a particular Asterisk installation has been a topic of discussion ever since the emergence of Asterisk. This typically centers around choosing hardware to handle n users or x concurrent calls. Often the focus is on how to scale up to the greatest number of users for a given server. However, there can be different but related considerations as we consider ever smaller applications.
In various circles I’ve lately witnessed a minor spike in interest in small form factor Asterisk systems. I have found it curious to survey the various hardware platforms that people are considering when creating their own DIY Asterisk Appliances. To establish some perspective on this I recently posted my own history of using Asterisk my own little Asterisk retrospective.
There are quite a range of small computing platforms available to the enthusiast seeking to tinker with Asterisk. It seemed to me that an overview of such hardware and related resources would be helpful.
Hardware that can be used for Asterisk Appliances
For my purposes I’ll only consider generic platforms suitable for a DIY project , not the commercially offered embedded Asterisk devices, of which there are many. These small host platforms tend to be in the $50-$300 range which makes them approachable for hobbyists, home users and some small businesses.
To begin, you should know that the VoIP Wiki has a good deal of info about selecting hardware on the basis of technical specs like CPU speed, memory, disk, etc. Some of the info there is quite dated, but there may be some value to know that in the technological dark ages people deployed Asterisk on a 133 MHz Pentium platform.
While my focus is on embedded Asterisk appliances these will have much in common with suitable hosts for Freeswitch, Kamailio, Yate or any other open source telephony software.
Choosing Processors
Before we dive into looking at the hardware, it might be helpful to understand a couple of things about the software. You may be installing Asterisk from source code. That implies that you will be compiling the binary executable on your target platform. In general this is a simple task, but there may be a couple of gotchas; like the CPU, the compiler and link libraries.
Asterisk itself can be compiled on a variety of target platforms. You’ll find ports of Asterisk on various processor architectures including; x86-32, x86-64, ARM, SPARC, Blackfin, Xscale, PowerPC, etc.
CPUs for DIY Asterisk boxes
However, there may be some related bits of code that you will not be able to compile into your installation. The most common are Digium’s G.729a codec and the Skype-For-Asterisk module. Both of these are proprietary, licensed code that is delivered as a binary executable supporting only x86 processors. The source code is not available, so you cannot compile them for your target platform.
So if you intend to use either of these modules, you should constrain your platform choice to something x86 based.
GCC vs uClibc
Even if you settle upon an x86 based platform, you may find yourself not able to use a module because of incompatibility with a link library or compiler. Some Asterisk distributions don’t use the common gcc compiler and libraries. In particular, the Astlinux project long ago made a decision to use uClibc. Theirs is an embedded distro and uClibc offers some specific advantages for such systems.
In moving to uClibc, the Astlinux folks found that they could no longer run Digium’s G.729a codec. To run the G.729a codec in Astlinux, the project requires that Digium compile a new release of the codec that is compatible with uClibc. While that has been discussed, it has not happened. So Astlinux users cannot run Digium’s G.729a codec, even on x86-based hardware.
With these few caveats out of the way, here’s a list of possible platforms that I’ve compiled for consideration, listed in order of scale from smallest to largest:
- Gumstix
- The Sheeva Plug (Pogo Plug)
- The Seagate Dockstar
- Consumer router platforms (Asus, Linksys, NETGEAR, etc)
- Thin clients
- Embedded PC systems (Soekris, ALIX, etc)
- Net-top systems
1. Gumstix
If you set the WABAC machine back a few year,s we can get to what is likely the smallest DIY Asterisk appliance ever undertaken, based upon the appropriately named little Gumstix family of boards. To my knowledge Kristian Kielhofner of Astlinux and Star2Star fame was the first to port Asterisk to these teeny little boards. He showed it at Astricon in 2005.
At the time featuring a 400 MHz Xscale processor, the wee Gumstix may not be the least powerful host ever selected for use with Asterisk. But measuring only 20 x 80 mm, it surely must be the smallest.
Gumstix Verdex 500
Despite its small size, the board was surprisingly powerful, especially if not pressed hard for floating point operations. Kristian’s port of Asterisk was very experimental. I don’t believe that it ever reached a release candidate.
Nonetheless, the concept of Asterisk on Gumstix ignited a lot of ideas about embedding Asterisk into other devices. For example, you could embed an Asterisk system into an existing SIP desk phone without requiring the complicity of the manufacturer. In so doing, you would have the ability to give the phone sophisticated internal dial plan capability with support for multiple accounts and protocols.
Even just embedding a SIP-to-IAX2 protocol translator would provide a definitive NAT traversal solution without resorting to using cheap Chinese IAX2 phones. The ability to run effectively run IAX2 on a premium SIP desk phone would certainly be handy for anyone with an Asterisk or Freeswitch based back-end and remote home office workers.
Over time, Gumstix have evolved to use ever faster processors, and offer a wide range of interface boards. They’ve become wildly popular with the amateur robotics crowd.
The one issue for this hardware is the lack of readily available cases.The various CPU and interface boards clip together in a fashion that, while not unattractive, isn’t physically robust. To be used beyond experimental applications, they should be securely mounted into another device or a some kind of case.
2. Pogo Plug
The Sheeva Pogo Plug is an embedded Linux based hardware device initially intended for use as an embedded file server. Attach a couple of USB hard drives and it becomes a file server with media handling functionality.
The user community soon realized that it’s also handy as a low-cost embedded Linux system for any application. With support from the manufacturer an open source community has grow up around the device, including an Asterisk distribution known as PlugPBX
Pogo Plug
You can purchase a developers kit for $99 that includes the basic Plug computer running a 1.2 GHz “Sheeva” CPU, which is based upon an ARM core. The system includes 512 MB of memory and 512 MB of on-board flash for persistent storage. External connectivity includes gigabit ethernet and some USB 2.0 ports.
A recent thread in the VoIP forum over at DSL Reports details one user’s weekend project getting PlugPBX running on the Sheeva Developers Kit. While this certainly seems like an interesting project, there are a couple of things to be considered when choosing a Sheeva Plug as your host platform.
As the plug is based upon something other than x86 processor architecture, there are some things that it will not be able to do. Largely this comes down to the inability to recompile some parts of the code that might be involved in an Asterisk installation.
For example, if you are bandwidth constrained ,you may wish to use Digium’s G.729a codec. You won’t be able to run that code using the Sheeva Plug. Typical of a proprietary piece of software the G.729a codec is delivered as a binary installation with no source code. Thus you cannot compile it for the ARM processor in the Plug. The same thing is true for Skype-For-Asterisk.
However, these two modules are by no means universally deployed. Many sites will not require those capabilities, which means that the Plug may be considered. Personally, I find the “wall wart” form factor a bit of a turn-off, but it no doubt appeals to some people.
The Sheeva Plug and its larger brother the Guru Plug are interesting ideas for hosting embedded Asterisk, but seem to me to be exclusively in the domain of the hobbyist or experimentalist. Fine for home use, but not something that I’d expect to see deployed in a small business setting.
3. Seagate Dockstar
Seagate have licensed the Pogo Plug technology and offer it in the form of a product that they call the Seagate Dockstar. True to the original launch of the Pogo Plug, the Seagate Dockstar is intended to be a server accessory for one or more portable hard drives. It effectively turns them into affordable Network Attached Storage.
Seagate Dockstar
Since Seagate’s target application for the Dockstar is very specific, it’s not unreasonable to expect that it’s hardware specs have been trimmed to keep costs in line. The device is supposed to list at $99 like the Plug, but it has been seen on BUY.COM for as little as $25.
No-one has yet confirmed that they have Asterisk successfully running on a Dockstar. However, even as I was working on this post, one of the regulars over at DSL Reports VoIP Forum posted a description of getting Open-WRT and Freeswitch running on the Dockstar. That could make the Dockstar the cheapest little experimental embedded PBX platform available at the moment.
4. Router Platforms
The Linksys WRT54GL is a consumer router offering that broke out from the crowd at least in part because it was running a Linux-based operating system. This meant that it was effectively a cheap hardware platform sufficiently open to allow software developers to enhance its capabilities through aftermarket firmware.
Linksys WRT54GL
There are a variety of such releases, including Open-WRT, DD-WRT and Tomato. Some, like DD-WRT, started out as open source projects but have evolved into commercial activities in their own right. They in turn have worked to support a variety of hardware platforms.
I am amazed at how often I find this type of software being used, even in small business establishments. I often find that IT staff from considerable companies run such wares in their homes. They seek the complexity of control that they have in their working lives, but on smaller and less costly hardware platforms more appropriate for the home.
This trend was so pronounced that in 2009, NETGEAR, a late comer to this party, introduced products specifically targeted at this open source, 3rd party firmware community. The WNR3500L wireless-N router is the current top-of-line offering.
While all of this is curious and possibly interesting, its application to Asterisk might be limited. However, these router platforms are on the $50-100 range and Asterisk has in fact been ported to this hardware. This makes such little routers a very cheap way to get started playing with Asterisk.
Asus WL-520gu
However, they are not without their issues. These devices were built to a task and so are inherently resource limited. That means limited memory, lack of persistent storage beyond on-board flash. They often lack the physical ports that other platforms, like the Sheeva Plug, provide to enhance storage and expansion capabilities. These factors tend to complicate the use of Asterisk if you’re not inclined to hack through some solutions on your own.
Yet, those people that I find making use of Asterisk on such hardware are often very committed to what they’re doing. They’ve accomplished something significant getting this little, limited hardware device to run something considerably beyond its original scope. They’ve added a lot of value along the way.
I would be remiss in leaving these little router platforms out of my overview, but I do feel that they are generally in the domain of the hobbyist / experimentalist. Not something that I’d recommend for a home-based small business.
5. Thin Clients
Now where getting into an area where I have direct, personal experience. Thin clients can make an excellent platform for running small Asterisk installations.
HP Thin Clients
In most respects, a thin client is simply a small, resource-constrained PC. Their intended purpose is to give an end user a low-cost platform from which to connect to hosted resources on larger server systems. As they are usually not running a major application, they don’t need massive amounts of memory or storage. They mostly provide the GUI layer for the end-user.
I was fortunate in that a few years ago someone gifted me a box of HP T5700 thin clients from a scheduling system that was being decommissioned. The T5700 are older models and no longer sold. But there are newer and more capable models available currently. Here are some sample specifications:
Model: | T5545 | T5735 | T5700 |
---|---|---|---|
OS: | HPThinPro | Debian Linux (2.6 kernel)) | Win XPe |
Processor | VIA Eden Processor 1.0 GHz | AMD Sempron 2100+, 1 GHz | Transmeta Crusoe TM5800 733 MHz ““ 1.0 GHz |
Memory: | 512 MB DDR2 | 1 GB DDR2 | 256 MB DDR266 |
Flash memory: | 512 MB | 1 GB | 256 MB |
Graphics: | VIA Chrome9 HC3 DX9 | ATI Radeon X1250 graphics | ATI Rage XC with 8 MB SDRAM |
Network: | 10/100/1000 | 10/100/1000 | 10/100 |
Ports: | 4 USB 2.0, 1 DVI-D, 1 headphone, 1 microphone in, 1 serial, 1 parallel, 1 RJ-45, 1 VGA, 2 PS/2 |
4 USB 2.0, 1 headphone, 1 microphone in, 1 serial, 1 parallel, 1 RJ-45, 1 VGA |
4 USB 1.1, 1 headphone, 1 microphone in, 1 serial, 1 parallel, 1 RJ-45, 1 VGA |
The thin clients that I have seen come with auto-sensing universal power supplies and typically draw about 10 watts under full load. They boot from internal flash memory that’s on an IDE interface. The operating memory is usually one common SODIMM module.
For the earlier T5700 models, HP offered an optional expansion package that’s intended to give the thin clients some expandability. The expansion package is a replacement for one side of the case and a PCI riser card. When installed it allows the thin client to accept one PCI expansion card.
I have used the expansion option in several ways;
- To add a second network interface allowing me to use a T5700 as a router
- To add a USB 2.0 card enabling the use of USB storage over faster USB 2.0 ports
- To add internal space allowing the addition of a 2.5" IDE hard drive.
Thin clients are a bit on the pricey side when purchased new. However they are usually available much cheaper on eBay. It’s not uncommon to see the T5700 series being offered in the $50-100 range.
If you want to buy them directly from HP, you can often get a bargain by purchasing through the HP SMB Outlet, where I routinely see newer models in the $140-200 range.
Since you will be replacing the OS with your favorite Linux variant, be mindful that you don’t need to pay extra for the models that include Windows CE or XP licenses. The SMB Outlet often has models on offer without an OS, which are usually a little cheaper.
There is one thing to bear in mind about older model thin clients; there may be some BIOS limitations. For example, my T5700s will only accept up to 512 MB of memory.
Because these thin client platforms are all based upon x86 processors, you can treat them like a small server. Within the limits of the available CPU and memory they will run Digium’s G.729 codec or the Skype-For-Asterisk modules. My own experience is that a T5700 with 1 GHz CPU and 512 MB memory will easily handle four simultaneous G.729 transcodes and was then limited by the number of G.729 licenses I owned at the time.
Given that a typical thin client doesn’t have a hard drive, I tend to use them with Asterisk distributions that are built for use in diskless devices, like Astlinux or Askozia PBX.
6. Embedded PC Boards
If you want to go about building a small embedded Asterisk appliance in a little more professional manner, you might consider any of a variety of industrial embedded PC platforms. These are sometimes called “single board computers” (aka “SBCs”). The two most common sources are Soekris Engineering and PC Engines.
PC Engines ALIX board in red box
I have had great success using both manufacturers’ hardware in a variety of different applications, including running Asterisk. In fact, there are a number of small commercial Asterisk appliances that are based upon this hardware and a bundle of software created by the reseller.
This type of hardware is surprisingly affordable. The board itself if often purchased standalone, a case being an optional extra. The CPU and memory are often fixed to the board. Some models allow for expansion through the use of mini-PCI cards.
PC Engines alix2d3 board
Boards that include multiple network interfaces are especially handy as they can act as edge routers, handling network QoS issues for SIP/IAX2 trunks as well as the VoIP activity.
This type of hardware often doesn’t include a VGA output, keyboard or mouse connections. They tend to rely instead upon a serial console connection for initial configuration.
Some models of SBC have internal IDE interfaces, but most have an internal CF or SD memory slot. My preference has been to set them up to boot to a CF card. then use the local IDE or USB interface to provide local storage for voice mail and configurations.
Soekris Engineering net5501 board
The ALIX series from PC Engines is less costly, but Soekris Engineering’s boards offer some hardware advantages. For example, the Soekris Net5501 includes a standard 3.3v PCI slot. They also offer cases to accommodate the Net 5501 board and a PCI card. That means that you could use it as the basis of an Asterisk system with analog FXO interfaces (perhaps a Digium TDM-400p) or even a T-1/E-1 interface.
If you were to use a TDM-400p card with a Net5501, you’d need to remember that the TDM card requires an extra power connection to provide ring voltage to FXS interfaces. Some kind of physical hack would be required to provide the extra power. Such is not required in the case of FXO interfaces connected to the analog telco lines.
The Net 5501 also has a pair of mini-PCI slots, IDE and SATA disk interfaces.
Soekris Engineering net4801 in box
One very interesting product that Soekris Engineering offers is a dedicated VPN cryptography accelerator in either PCi or mini-PCI form factor. This card can offload the burden of common encryption processes from the CPU, allowing for increased throughput when using the SBC as a router with VPN features.
Curiously, these SBC platforms tend to be built around slightly less capable CPUs. The current crop of ALIX and Soekris boards use the 500 Mhz AMD Geode LX processor. Superficially, these might seem like less capable processors. But, in fact, they are more than adequate to handle the kind of load presented by a SOHO Asterisk appliance.
As far as pricing is concerned, SBCs cover a lot of ground. A simple ALIX board with a case & power supply is usually around $200. The more flexible Soekris Net 5501 with a case is around $300.
Incidentally, while this post is specifically considering embedded Asterisk appliances, we should keep Freeswitch in mind as well. These embedded PC platforms are nicely suited to running pfsense, and there’s a Freeswitch installable module for pfsense.
7. Net-Tops
Net-tops are essentially a new kind of desktop system that leverage the kind of hardware that was developed for the netbook market. They are in effect, a new kind of very-small-form-factor desktop. The Acer Aspire Revo is typical of this class of hardware.
Pogo Plug
Such net-tops tend to be based on the Intel Atom processor, which runs in the 1.2 GHz to 1.8 GHz range. It’s most commonly a single core chip, but the higher end models are dual-core. It’s a startlingly capable processor for use in an Asterisk appliance.
Net-tops can often be stuffed with up to 4 GB or memory and include a small internal hard drive. By small I mean physically a 1.8" or 2.5" drive form factor, with storage capacity typically in the 80-160 GB range. That’s more than adequate for any Asterisk system.
Of course, using a hard drive in the system takes it out of the running of my personal definition of an “Asterisk Appliance.” I accept that your definition might not be a rigid as my own, or, budget be damned, you may elect to replace the hard drive with a solid state disk.
In truth, these little net-tops are likely the most capable of systems being considered in my little overview. With list prices in the $300-400 range, they are also at the top of the price range that I was considering. But that’s only if you look at list prices. Refurbished offers on the Acer AspireRevo AR1600 can often be found around $180.
The Acer Aspire Revo was actually brought to my attention by Ward Mundy of Nerd Vittles fame. On a recent VUC guest appearance, Ward indicated that the little Acer net-top was a very good platform for his PBX-In-A-Flash and Incredible PBX distributions. Both of these are “heavier” distributions than I might consider for an true appliance, but they do highlight the considerable capabilities of the hardware platform.
fit-PC2
My own experience with net-tops involves a slightly more expensive device called the fit-PC2. This little box is essentially an industrial version of a net-top. With a 1.6 GHz Atom, 1 GB of memory and a 160 GB SATA hard drive, the fit-PC2 runs cool and draws only 10 watts, even under full load when playing an HD movie trailer.
I have had a fit-PC2 loaded with various software packages, including Astlinux v0.70. It can easily handle all the calling needs of a small office.
fit-PC Slim
As you might surmise, the fit-PC2 is is the second generation of industrial net-top from CompuLab. For those who are more cost-conscious, their original fit-PC model has been renamed the fit-PC Slim and can be purchased for under $200. The fit-PC Slim shares the same 500 MHz AMD Geode LX CPU as the embedded PC systems considered previously, but comes in a nice compact little package.
Unlike most of the embedded PC boards the fit-PC Slim includes an IDE interface and a small hard disk, making it more like a small PC than a real embedded system.
Conclusion
This is by no means a complete survey of the possible platforms available for a DIY Asterisk Appliance. But it should serve to help you decide what might best suit your needs. Clearly some of the platforms described remain more appropriate for hobbyist and experimental applications than production use in a home, home office or small business. Even so, it’s easy to see how for a modest amount of money, say $150-250, you can assemble an Asterisk system that will serve your needs reliably over the long term, and even accommodate growth over time.
There is some merit in trying to determine where you’d draw the line between something that’s suitable as an inexpensive platform for experimentation vs. a production system. In my mind, this defines what would be considered an acceptable solution if recommended by a consultant or reseller for a small business or home office.
Pogo Plug
My sense is that the last three classes of hardware considered are completely acceptable solutions to real-world installations. I think that the thin clients, embedded PCs and net-tops are sufficiently polished and capable to be relied upon for everyday use. They don’t give the impression of being experimental or hack-ish.
In contrast, the other platforms may actually be better suited to experimental applications. The very fact that such inexpensive, even inconspicuous hardware can be used to host a PBX suggests that there are many opportunities to communication enable previously silent aspects of our daily lives, learning something and having some fun along the way.