The IP04 is a 4 port IP-PBX that runs Asterisk and uClinux on a powerful embedded Blackfin processor. To build an Asterisk IP-PBX you normally need a x86 PC plus a PCI card for the analog ports. With the IP04 you get all of that functionality in a tiny, low cost, low power, silent box. Between 2007 and 2015 I sold IP04s, however my sales have dwindled and I have moved on to other projects. The IP01, IP02, and IP08 are similar products but support a different number of analog ports.
Unlike many other embedded processors, the Blackfin has enough DSP horsepower to handle multiple channels of echo cancellation and speech compression. This means that the IP04 is a complete IP-PBX with 4 analog ports. No PC required!
The 4 analog ports can be configured any way you like, using single port FXS/FXO modules. The IP04 auto-detects the module type when it powers up and helpful LEDs indicate what flavour (FXS or FXO) each port is.
Using the IP04 is similar to any other Asterisk box. You can telnet in, modify config files, or even use the Asterisk-Now GUI. The IP04 comes pre-loaded with Asterisk and uClinux.
The IP04 is an open hardware design. This means the design is available for anyone to modify, improve, or hack. As it runs uClinux and Asterisk, the software is also free. The IP04 has been developed by a community of telephony professionals for community reasons. You can read all about the development of the IP04 on the Building an Embedded Asterisk PBX series of blog posts. Part 3 and Part 4 deal with the IP04. Part 1 and Part 2 discuss the development of FXS/FXO hardware. Due to the wonders of open hardware the IP04 also has an ever growing number of children.
Buying an IP0X and Distribution
IP08s and IP02s continue to be manufactured and sold by the good people at Atcom, who have developed their own (closed source) firmware.
How easy is an IP0X to configure?
Getting started with the IP0X range of products is now very easy using the Mini Asterisk GUI. No Asterisk experience or Linux knowledge is required. If you can configure a Wifi router and know what an IP address is then you will be making calls on your IP0X phone system in a few minutes.
However if you require the full power of Asterisk it is recommended that you have (or be willing the learn) the following skills:
- Linux command line.
- Asterisk configuration using conf files.
Getting Started with your IP0X
Here is an IP0X How To.
See also the Resources section below.
- BF532 400MHz.
- 64M SD-RAM running at 133MHz.
- 256M NAND Flash for Asterisk Application, prompt and voicemail storage.
- 0-4 FXS/FXO modules.
- High Performance echo cancellation using Oslec (Open source line echo canceller).
- Current consumption (2 FXS 2 FXO configuration) around 300mA @ 15VDC (4.5W).
- Several versions of Astfin and BAPs firmware available.
- The production IP04 was released in Mid 2007. Since then thousands of IP04s have been built and are in use all around the world. The hardware is very stable. The IP08, IP02, and IP01 are similar designs with different numbers of ports.
- The basic software load (uClinux, Asterisk & Zaptel) has proven to be very stable.
- The IP04 has been carefully tested. A series of automated stability and load tests have been performed, for example (i) 4 analog and 2 IAX calls for 4 days, about 32,000 calls and (ii) maximum anticipated load of 4 analog ports, 8 simultaneous calls (4 SIP-analog plus four SIP-IAX2 VOIP, running 8 GSM codecs). For more information please see the IP04 Test Plan.
- The production IP04 has been tested to meet the following standards: FCC Part 68, FCC Part 15-B (USA); TBR-21, EN55022, EN60950 (Europe); S002, S003, CISPR 22, AS/NZS 60950.1:2003 (Australia).
- Here is a list of known IP0X bugs and their work arounds.
These tests are repeated with every new production batch to ensure ongoing quality.
Many people have asked “how many calls can the IP04 handle and what codecs does it support?”. The answer is “it depends” – for example the type of call (VOIP/analog), codec etc. Analog calls use the most MIPs due to the CPU load of echo canceller. IAX calls tend to use more CPU than SIP as there is more packing and unpacking of data. A-law and mulaw calls use less MIPs that GSM/g729.
Calls that use the IP04 to terminate or transcode RTP media (like playing an IVR or IAX2) use more MIPs than calls that just use the IP04 to handling call switching (e.g. a SIP extension to SIP extension call where RTP passes directly between the phones).
- The IP04 comes with ulaw/alaw/gsm/Speex codecs. All the usual Asterisk codecs are supported with the exception of iLibc which requires floating point (the Blackfin has no FPU). An optimised g729 library is available free from Analog Devices SVN, however there is at present no licensing scheme.
- The standard IP04 load test is 4 analog calls and 8 SIP calls (running GSM codecs). This simulates full load of the IP04 in a typical office environment of 4 outside FXO lines and 8 SIP phones.
- Kelvin Chua has tested up to 72 ulaw calls with an IP04 using SIPp. The IP04 was terminating RTP with an IVR prompt.
- With Asterisk running SIP calls (and no analog hardware), 34 ulaw, 16 g729, and 8 Speex (16 kbit/s mode) calls were possible at a 2.0 loadav. Care was taken to ensure that all calls were full duplex (when terminating a call with an IVR prompt the RTP traffic is usually one way).
- For IP0X configuration tips see the IP0X How To.
- The /usr/doc directory of your IP0X contains text files with notes on each BAPS package installed.
- If you have any questions, bug reports, or suggested improvements, please post to the Blackfin Asterisk forum or the Free Telephony Project Mailing List.
- IP04 and Asterisk training course, which covers basic dialplan configuration using command line and conf files on the IP04. The course was first delivered to classes during a visit to East Timor.
- BAPS is the build system for the IP0X based on the package paradigm (like apt-get or rpms). BAPS allows users to easily upgrade software from the command line, avoiding the need to compile an entire uImage.
- Some bugs and common traps are described on the IP0X bugs page.
- A good on-line book for Asterisk is Asterisk – The Future of Telephony.
- The IP04 is an open hardware design. See IP04 SVN for schematics, PCB design, BOM spreadsheet, test plan, errata and more.
- The history of the IP0X is described in the Free Telephony Family Tree blog post.
- The previous build system was Astfin. Here are the instructions used to get a bootable uImage containing uClinux and Asterisk for the Blackfin using Astfin.
- NAND Flash and u-boot on the Blackfin platform. NAND Flash and uClinux on the Blackfin platform.
- For low level boot loader and firmware set up see the IP04 Wiki. Please note that the Linux uImage discussed on the wiki is a very early version – pls use later BAPS or Astfin Linux uImage. The low level u-boot instructions are still relevant.
- There are now quite a few Asterisk “Appliance” type products that have been announced. Here is a survey of Asterisk Appliance products.
I stand on the shoulders of giants. Thanks to all the people who have contributed and whose work I have built on. In no particular order: the Astfin & BlackfinOne teams, uClinux, Analog Devices Blackfin team, the Asterisk community, and the guys at Atcom. Sorry if I forgot anybody.
As the IP0X products are completely open, several versions of firmware have evolved. It is possible to swap between firmware versions, so feel free to experiment. Here is a summary:
- Rowetel IP0Xes ship with the BAPs firmware, a package based system similar to apt-get.
- Astfin is another popular IP0X distribution. Atcom and Voiptel have their own versions of Astfin, which they ship with their IP0Xes.
- Switchfin is a new fork of Astfin that is under active development.
For more information and a little history please see Free Telephony Family Tree blog post.
There are several GUIs available for the IP0X.
Disclaimer: In general the IP0X GUIs are not as mature as the FreePBX based GUIs available for x86 Asterisk. As discussed in the Skills section above for IP0X configuration it is recommended that you have Asterisk conf file and Linux command line skills.
Here is a summary of the GUIs available:
The Astfin firmware (also forks distributed by Voiptel, Atcom, Switchfin) includes a version of the Asterisk Now GUI.
The BAPS firmware used by Rowetel also supports several GUIs including:
- The Asterisk Now GUI.
- A new, very easy to use GUI called Mini Asterisk design for simple IP-PBX applications. Mini Asterisk has a learning curve of a few minutes.
- An alpha port of FreePBX. This is not a working GUI – it is provided for developers only. The consensus seems to be that LAMP applications are a bit heavy for the IP0X. No one has worked on the IP0X port of FreePBX since 2008. There is a blog post explaining this port here.
- An old version of the Voiptel GUI, which is deprecated. Use the Voiptel version of the Astfin firmware instead.
IP0Xes shipped from Rowetel come with Mini Asterisk installed.