In June 2008 I attended the Village Telco workshop in Cape Town, South Africa. Cape Town in June was rainy and cold, however the South African people were really friendly. While in South Africa I also attended the Wireless Africa workshop, however that’s another story for another post!
The Village Telco (and I quote) is an easy-to-use, scalable, standards-based, wireless, local, do-it-yourself, telephone company toolkit. We were in Cape Town to work out how to build this puppy.
Steve Song of the Shuttleworth Foundation pulled together a fascinating team of people from the development, VOIP, mesh networking, and business communities. The team was small (about 10 people) and very “hands on” in their outlook and skill sets. The breakfast and dinner conversations were fascinating, for example funny stories about broken down hotels in some developing countries, and sad stories about the poverty of others.
You can click here to put a face to all the names (thanks Steve).
I had never experienced a workshop quite like this before. Not sure if it was the team of people, the small size, or Steve’s leadership, but we really “fired”. I am generally allergic to meetings – in my previous day job I was infamous for avoiding, hating, and general bad behavior where meetings are concerned. However I managed to stay awake and even attentive through most of the 5 days the Village Telco workshop.
One of the outcomes was the decision to build a little box called the Mesh Potato.
The Mesh Potato in a nutshell
The Mesh Potato is a 802.11bg mesh router with a single FXS port. It is designed to provide telephony via VOIP while simultaneously facilitating a mesh cloud. It is an open hardware and open software design. It will run off a nominal 12VDC, from either a mains supply or solar PV system, and be priced in the range of currently available Wifi routers (sub US$100).
- Runs B.A.T.M.A.N. mesh routing software, Asterisk, the Speex voice codec, and Oslec echo cancellation.
- The target application is mesh routed VOIP networks, in particular (but not limited to) developing communities. An analog phone connects to the potato via the FXS port. When you make a call you potato talks to the potato down the street which talks to the next potato, and eventually to the destination. The mesh network can be augmented via backbone links and connected to the rest of the world via VOIP gateways.
- No cell phone towers, no land lines, no big Telcos required. A local entrepreneur can roll out his own Village Telco system using a modest server and a bunch of Mesh Potatoes. Community owned telephony.
- The mesh network is self organising and healing, if a node goes down B.A.T.M.A.N automatically re-routes the calls.
- We are building custom hardware specifically for developing communities using open hardware and software principles. I would like to push the meme that we can develop custom open hardware devices – no need to accept whatever is available off the shelf. You see most of the work in any appliance is software, so the idea of relying on closed, proprietary, not quite right hardware is obsolete.
- The Mesh Potato is open. Really Open. Key goals are to minimise binary blobs, proprietary software and make the hardware open. This means the potato will probably be Atheros based, as we can use the madwifi open source WLAN driver. It also means Speex instead of g.729, and Oslec instead of a proprietary echo canceller. The hardware schematics (at least) will be available. The potato will be a mass produced in very high numbers, therefore the open community now has a chance to set standards, rather than have to play along with “standards” based on closed hardware and software.
For the curious, Steve describes the origins of the Mesh Potato name in this post.
The Shuttleworth Foundation has generously decided to fund the initial phases of the Mesh Potato Development. The Shuttleworth Foundation is involved in many worthwhile projects, such as the Freedom Toaster and kicking off Ubuntu. Potato development will be my main activity for the rest of 2008!
We have divided the project into 5 milestones, M0-M4. We start at 0 because we are geeks, just be thankful we didn’t used binary. We have largely completed the planning stage and have kicked off development. We hope to have prototype potato hardware in early 2009.
Currently, we are working on M1 – Proof of Concept. The idea is to use Commercial Off The Shelf (COTS) hardware like a Ubiquity Nanostation 2 to develop a prototype that demonstrates all of the software components working together. We will develop many of the custom software components early in the project, using a mature hardware platform. Major software components will therefore be relatively mature when integrated into the prototype hardware, saving time and lowering overall risk.
Over the past few weeks I have been experimenting with OpenWRT on the Nanostation 2 – running test programs for Speex and Oslec and characterising the CPU load.
Here is a mud-map of the hardware design:
One challenge is how to connect the FXS chipset to the Atheros SoC (glue logic in the figure above). The FXS chipsets require a TDM serial plus SPI bus. The TDM bus is typically a 2.048MHz serial bus that supplies one 8-bit speech sample every 125us (8kHz). The SPI bus is used for control and configuration of the FXS chip set (for example sensing off hook, switching the ringer on).
This glue logic was straight forward for the IP04 as the Blackfin CPU has a rich set of interfaces with good DMA support. The Atheros SoC is not quite as feature rich. It does have a SPI bus for talking to the SPI flash. This only has one chip select line however I figure some of the GPIOs could be used to gate access to other SPI devices.
So we need to build a TDM interface somehow. To reduce interrupt overhead and I-cache thrashing it would be nice if we can buffer 1-20ms of samples (8 to 160 8-bit samples) before we interrupt the Atheros SoC. This interface could be some logic or perhaps even a small micro-controller like a PIC. One other possibility is interfacing the TDM bus to the RS232 UART. The Atheros SoC does have a 16550 compatible UART with some sort of hardware FIFO, however we would need some tests to determine if the CPU overhead of using the UART is acceptable.
The Mesh Potato promises to be something very special – an open hardware/software, community designed WiFi mesh router with Asterisk and a FXS port. Boy, I’m out of breath after saying that. No wonder we just call it the Mesh Potato. The Village Telco concept that it supports could bring telephony to millions. Please feel free to join our community – by subscribing to the Village Telco Google Group.