Well I have just finished a fun and productive couple of months working with Elektra and Steve on Milestone 1 (M1) of the Mesh Potato project. The goal of M1 was to prototype the Mesh Potato firmware. In particular, I wasn’t sure if the low end CPUs we would like to use could handle the mesh routing and speech processing DSP work all at the same time. There were also some question marks over the MadWifi driver, which Elektra talks about in her post.
To minimise risk we decided to prototype the software on commercial hardware (the Ubiquity Nanostation 2), which uses the Atheros AR2315 System on a Chip (SoC). Using commercial hardware meant that any bugs would be limited to our new software, greatly simplifying development. In Milestone 2 (M2), we will take the opposite approach – freeze the high level software while developing the low level software (drivers) and the actual potato hardware. I have learnt this “divide and conquer” approach the hard way – having worked on too many projects where people (often under pressure from deadline driven managers) tried to debug unstable software and hardware at the same time!
The M1 work covered several areas. Elektra developed a build system based on OpenWRT, and worked on stabilising and testing the MadWifi driver. I worked on integrating and testing the VOIP side, plus some project planning and preliminary hardware design. We worked on testing together, and built up a CPU load test than run over mini-mesh networks we constructed especially for testing.
After a few months the major goals of the project were met – the development team proved that it was feasible to run all of the Mesh Potato software on low cost Atheros System on a Chip (SoC) hardware.
In particular the main CPU load test has passed – we can route 15 telephone calls through a Potato while running Asterisk/Speex/Oslec. This means that one Potato in the mesh network can run it’s own phone call, while at the same time relaying 15 other phone calls from other Potatoes. We have also demonstrated running the Asterisk/GSM/Oslec combination as a reduced-CPU backup.
The only caveat (for both Speex and GSM) was that 80ms VOIP packets were required to reduce the router CPU loading to acceptable levels. Larger packets make life much easier on the Wifi network subsystem, as there is less overhead such as interrupts and other per-packet processing.
It was fun working with Elektra. We are about half way around the world from each other – I am in South Australia, and she lives in Berlin. We only just overlapped in time, and only because Elektra likes staying up late at night! Our long conversations would often start talking about the Potato but end up talking about Electric Cars and Electric Bikes!
Milestone 2 (M2) is starting soon. We will be working on the hardware, plus development of low level software (boot loader and FXS port device drivers). At the end of M2 we hope to have a functional proto-potato running in the bench, minus the enclosure (box). A big challenge for me is interfacing the Atheros SoC to the FXS port chip sets, plus engineering the Potato to withstand environmental problems like lightning, heat, dust, and nasty power supplies. Atcom have stepped forward as the hardware manufacturer and I am looking forward to working with them on the prototype hardware.