How To: Building an Embedded Asterisk PBXmjgraves | January 11, 2008
January 13, 2006
The Asterisk open source Voice over IP (VoIP) PBX is usually set up on a standalone PC. But Michael Graves shows how the combination of a special Asterisk distribution and a single board computer can provide a compact, quiet and low-power alternative.
Astlinux is a bundled distribution of the Asterisk open source iPBX private branch exchange (PBX) software and a Linux operating system. Originally developed by Mark Spencer at Digium, Asterisk is the leading open source software in the telephony/VoIP space. Asterisk excels at combining traditional TDM telephony capability – provided through hardware from Digium and others – with VOIPservices. These include call routing, media gateway, media server and SIP signaling capabilities.
The Asterisk user community has been growing tremendously over the past two years, especially since the v1.0 release in the fall of 2004. With that growth has come the development of new distributions that bundle suites of software tools, to ease the setup and administration of a new Asterisk system. Asterisk@Home and Xorcom Rapid are both fine examples of this sort of activity.
Astlinux was developed by Kristian Kielhofner, and intended to go in a fundamentally different direction. Astlinux provides an Asterisk installation on a Linux distribution that has been built from scratch and optimized for small format hardware platforms – it takes what is essentially an embedded systems approach to Linux and Asterisk. In this article, I’ll show you how to build an VoIP PBX using Astlinux and a Soekris Net4801 single board computer (SBC).
Working largely on his own, Kristian has gone to great lengths to get the combination of the OS and Asterisk down to a mere 26 MB boot image. This opens up many possibilities in the design of the hardware, such as booting from small compact flash cards or USB memory keys. While keeping the size of the system to a minimum, Astlinux includes the following features:
- Linux kernel 220.127.116.11
- Watchdog (busybox)
- cron (busybox)
- busybox (and everything with it…)
- TFTP server
- vsftpd server
- mini_httpd (with SSL)
- PHP in CGI mode (patched for above)
- NTP (ntpdate, ntpq, ntpd)
- syslog (busybox with remote log support)
- vi (from busybox)
- tc (kernel traffic shaping)
- phpconfig-like Asterisk GUI
- AstShape, a QoS/traffic shaping script
- nfs-utils (kernel modules and userspace tools for NFS support)
- Sangoma WanPIPE driver use with Sangoma T-1 hardware
- Zaptel drivers for Digium TDM hardware
- working ztdummy (zaptel timing source without zaptel hardware)
- Asterisk Manager Proxy
Don’t be too worried if some of these don’t mean anything to you. Astlinux is focused on providing only those things in the OS that are necessary to support the normal operation and administration of Asterisk. For example, email support is provided so that voicemail messages can be forwarded via email like any normal Asterisk installation. The inclusion of ztdummy allows for both MeetMe conferencing and music-on-hold, without requiring a Digium card for a hardware timebase reference. While the list of required supporting services may appear long, the idea is very simple – create a very small Linux and Asterisk installation that supports common telephony hardware, and once configured, behaves like an appliance.