Open Hardware


This page describes open hardware telephony projects groups and individuals around the world.

Several hardware development projects under way, covering the entire range of line interface hardware. The best part is that all of the designs are open – you are free to use them for your hardware project!

  • Four Analog Port Embedded IP-PBX: The IP04 is a complete Asterisk powered IP-PBX with four FXS/FXO modules, 256 MByte of NAND flash, and a MMC-card to provide removable flash storage. Assembled and tested units are available from the Store for around $450.
  • The Mesh Potato: The Mesh Potato is a 802.11bg mesh router with a single FXS port. Adjacent mesh potatoes automatically form a peer-peer network, relaying telephone calls through a community without land lines or cell phone towers. The Mesh Potato is designed using open hardware and software and is part of the Village Telco project. Lots of blog posts and progress updates on the Village Telco blog.
  • Four Port modular FXO/FXS: A four port daughter card for the STAMP with pluggable FXS/FXO modules and MMC-card to provide extra flash storage. This project was a stepping-stone to the IP04. The design is easily expandable to 8 or 12 ports. I have blogged on the bring up of this design in a multi-part blog post. Note that starter kits for this hardware are no longer available, as they have been superseded by the IP04.

    4fx with 2 FXO and 2 FXS modules

  • BlackfinOne: A BF532 Blackfin mother board designed by a community of developers. The Blackfin V2.0 has dual Ethernet ports and USB and supports telephony daughter boards such as the 4fx boards described above. More information on the BlackfinOne Project site. I have blogged on my experiences of building a BlackfinOne.

    BlackfinOne BF532 mother board

  • E1/T1 Primary Rate: The Astfin team are developing an PRI Appliance based on the Blackfin. Please visit their site or contact mailto:mark_at_astfin_dot_org[Mark] for more information.
  • Four Port Basic Rate ISDN: The Fourfin project is a 4 port (8 channel) BRI card for the STAMP. A schematic and PCB has been designed by the fourfin team. Another developer (Diego Serafin) has developed a Blackfin port of the mISDN driver. The code is alpha, but is running on proprietary Blackfin hardware using a port of uCasterisk and the CologneChip XHFC chipset. Both kernel mode and user mode mISDN software is available. The Astfin team are working on BRI-Appliance hardware, see this post on the Astfin Blog for more details.
  • Open USB FXS Project: An open hardware, inexpensive FXS board that connects to a PC via USB. Angelos is making great progress in developing an open hardware USB based ATA, building on the ideas of the $10 ATA and blogging as he goes.

Researching Open Hardware

Are you researching the topic of Open Hardware (Open Source Hardware)? Open Hardware is becoming a popular research topic, and I often get approached for interviews or to fill out surveys. Below is a list of links that will answer many of your questions. Please read these posts and interviews first. Then, if you still have any questions, feel free to contact me.

Open Telephony Hardware

In December 2005 I expressed an interest in building a range of line interface hardware cards for the Blackfin. A key point was to make the designs GPL, like the Blackfin STAMP hardware. This means anyone is free to copy and build on the hardware designs.

Since then the project has advanced rapidly with several contributors from around the world developing a range of line interface an DSP hardware.

Why GPL hardware? Well Robin Getz from the STAMP team explains it better than I can.

I have also blogged on Open Source Hardware. A follow up blog post discusses Open Hardware 3 Year On.

Why port Asterisk to uClinux/Blackfin?

I have a history of developing Computer Telephony hardware and have always wanted to build a small embedded box that combines a host processor, DSP, line interface hardware, and software. It’s an itch I need to scratch!

From a technical perspective there are some very cool things about this chip:

  • The problem with most embedded processors is that they are not very powerful. The Blackfin is a powerful host processor AND a DSP, i.e. it can run uClinux, Asterisk and G729 on the same processor at the same time. A standard 500MHz Blackfin runs at around 1000 DSP-MIPs, which is plenty for codecs, echo cancellation etc.
  • A lot of effort and hardware cost is usually required to interface telephony hardware to the host processor (typically a PC), e.g. PCI bridge chips. The Blackfin makes it easy as it has a lot of nice interfaces built in, like serial ports, SPI, DMA controllers, which are all tightly integrated with the core processor.
  • The Blackfin chips are good value for money, ranging from $4.95 each (BF531 in 10k volume) which makes low cost embedded telephony hardware a real possibility. This makes it possible to develop an IP PBX including analog or E1/T1 line interfaces for very low cost.
  • Best of all there is an open source community that has developed around GPL hardware (the family of STAMP boards). What is needed is an application (Asterisk) and some line interface hardware (which is under development). For more information on the Blackfin uClinux community look here.

Digium X100M Hack

As a starting point back in late 2005 I connected a Digium X100M module to a BF533 STAMP card. This module is a single port FXO card (i.e. it connects to telephone lines) that usually sits on a 4 port Digium PCI card.

The X100M card uses the Silicon Labs 3050 chip. The chip reasonably priced at around US$5 each. Data is available from the Silicon Labs site.

I ported the GPL `wcfxs.c` driver (part of the Asterisk zaptel package) to the Blackfin, and can make phone calls over the FXO interface (e.g. FXO to SIP). This driver talks to the 3050 chip (and it’s FXS equivalent).

Block diagram of X100M FXO Test

Some screen shots of the X100M connected to a Blackfin STAMP are here and here .

I soldered the cards together to avoid any high speed digital problems – the Blackfin edge rates are very fast and there are very few grounds on the SPORT and PF connectors so I wanted to keep lines as short as possible.

Here is a screen shot showing the modules loading on a BF533 STAMP board:

 _   _| |  | | _ ____  _   _ \ \/ /
| | | | |  | || |  _ \| | | | \  /
| |_| | |__| || | | | | |_| | /  \
|  ___\____|_||_|_| |_|\____|/_/\_\

For further information see:

BusyBox v1.0e (2005.10.03-00:27+0000) Built-in shell (msh)
Enter 'help' for a list of built-in commands.

th0: link down
root:~> eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
cd /var/tmp
root:/var/tmp> insmod zaptel.ko
Zapata Telephony Interface Registered on major 196
root:/var/tmp> insmod wcfxs.ko
Module 0: Installed -- AUTO FXO (FCC mode)
Found a Wildcard TDM: Blackfin STAMP (1 modules)

gEDA Tools

The schematics for the Free Telephony Project have been drawn using the `gschem` program from the gEDA project. I must say the `gschem` is a really nice piece of software. Easy to use and works well. Well done gEDA team.

Printed Circuit Boards are designed using the PCB program, also part of the gEDA suite. I also use Perl and even Makefiles to help with the hardware designs.

gEDA is an open source EDA suite that also includes simulation and PCB design tools. Seeing that we are developing GPL hardware it is nice to be able to use open source tools.

TIP: I downloaded the gEDA ISO and installed from CD. Install as a normal user (rather than root) as otherwise the installer breaks. You will be prompted for the root password several times as the installer proceeds. I found the tutorial a great way to learn `gschem`.

gEDA Hints

  • Buried in the gEDA install (`/usr/local/bin/geda-install/share/pcb` on my machine) is a user guide for the PCB design package called `pcb.pdf` which is worth reading.
  • Don’t put a “-” in any of the footprint names when using `gschem` or `pcb`, as this freaks out the m4 macros used when `gsch2pcb` to PCB is run. This actually managed to lock up my PC, not sure how but it was impressive!
  • Command line `gsch2pcb -v -d pkg/newlib/ project` to forward annotate sch to pcb.
  • + `perl -p -i.bak -e ‘s/orginal/replacement/’ *.sym` is very useful for changing text inside the schematic or symbol files automatically.

  • Many of our designs use two layers PCBs to make them easy to fabricate. The solder side of the PCB is used for the VCC and GND nets. Make sure you type ‘j’ over any VCC tracks – this stops the polygon used for the GND net from overlapping the VCC track.

Open FXS & SLIC Designs

Manoj Desai runs a SOHO PBX company in Mubai, India. He read about the work of the Free Telephony Project and has kindly contributed a low cost SLIC design. Here is the SLIC schematic and the expired US patent 4281219 that explains it. He reports that the SLIC design works well in practice. Thanks Manoj!

I have also been in contact with other companies (who wish to remain anonymous) re low cost SLIC design. It is posible to build a SLIC for around USD$1.50 using discretes, excluding A/D and D/A converters. Such a design could be very useful for developing world telephony, e.g. reducing the BOM cost of the Mesh Potato.