D.I.Y. Asterisk Appliances: A Question Of Scale

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.


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.

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 the list of possible platforms that I’ve compiled for consideration, listed in order of scale from smallest to largest:

  1. Gumstix
  2. The Sheeva Plug
  3. The Seagate Dockstar
  4. Consumer router platforms (Asus, Linksys, Netgear, etc)
  5. Thin clients
  6. Embedded PC systems (Soekris, ALIX, etc)
  7. Net-top systems
  • boerner

    Another group of devices you may wish to check out (if you haven’t already) are these:

    http://www.rowetel.com/ucasterisk/

    http://atcom.cn/products_ippbx.html

    The IP01, IP02, IP04 and IP08 offer a lot of inexpensive options for running Asterisk. Also have an open hardware design.

    The upcoming Mesh Potato hardware is very interesting as well:

    http://www.villagetelco.org/

    • boerner,

      I’m aware of these devices. However, at the start I made the conscious decision not include commercially available Asterisk appliances. There are many such devices available. I wanted to keep a decidedly D.I.Y. approach in mind. Further, I suspect that all of the commercial offerings are more costly than the platforms I wished to consider.

      I must admit that part of the appeal of the thin clients is that I was recycling hardware that was headed to the dumpster. It was at least a little green-ish.

      I do agree that David Rowe‘s work is awesome. We even had Steven Song from the Shuttleworth Foundation / Village Telco as a guest on a VUC call late last year.

  • andrewtd

    Another plug for the IP0X series, especially the very low cost IP01s & IP02s.
    They are so cheap that they are a good choice for the hobbyist / home enthusiast that wants to try out Asterisk.
    Here in New Zealand, we pay less than NZ$300 for an IP01.
    One nice thing about them is they include everything you need.

    On a related note, I once tried getting Asterisk working on a Linksys SLUG (the NSLU2) It was a royal pain. http://en.wikipedia.org/wiki/NSLU2

    I love the idea of an appliance to run Asterisk – no hard drive and no PC power supply to fail. And no noise and very low power consumption.

    My challenge is that I really like “HD Voice” (G.722) so want to run Asterisk 1.6 on an appliance – that has enough grunt to trasnscode G.722 to G.711 etc. Only need to support 3 or 4 concurrent calls at max though.

    • Andrew,

      Almost all of the platforms that I described will run Asterisk v1.6 and support the use of G.722. Certainly the last three types described (thin clients, SBCs and net-tops) all have more than enough power to handle such matters.

      I know that the latest release of Astlinux uses Asterisk v1.6 and runs happily on the Fit-PC or and older Soekris Net4801. I’ve done both myself.

  • Excellent read, I just passed this onto a colleague who was doing a little research on that. And he really bought me lunch simply because I discovered it for him smile So let me rephrase that: Thanks for lunch!

  • FiReSTaRT

    Hey Michael,
    Excellent writeup. As I said, your site’s almost as addictive as Wikipedia. A note on REVO 3610.. I am using it as a media center, running regular Ubuntu Lucid with XBMC, playing Hi-Def content with barely getting into 20% CPU usage (720p). It’s a very powerful platform, that runs very little juice. For a proper office setup, you can easily use the Sangoma USBfxo unit, which (according to a quick ebay check) runs for about $125. The manufacturer offers driver source code for download. I haven’t tried working with it yet, but it’s a very interesting option for a hybrid setup.