Yesterday we made the first phone call using the Mesh Potato (MP) Architecture – a very important moment in the life of any telephony project! The Prototype Mesh Potato hardware isn’t available yet, so we connected a DIR-300 router to a FXS Interface PCB. The DIR-300 router is based on the same chip set as the MP (Atheros AR2317) so it’s as close a a real MP as we can get.
This gives us a development environment almost identical to the MP which allows us to work on the firmware prior to having the actual MP hardware. This allow for faster development compared to waiting for the prototype MP hardware. When the prototype MP hardware arrives we will have tested firmware to use on the untested prototype MP hardware – greatly reducing the scope for bugs.
The firmware consists of several device drivers (8250mp.ko, mp.ko) and an Asterisk Channel Driver (chan_mp). To test we connected a SIP phone to Asterisk running on the DIR-300. Asterisk then routes the call to chan_mp, and via the device drivers to the FXS interface hardware. The audio samples actually flow through the AR2317 RS-232 UART, before being converted to TDM bus samples by a CPLD and Atmega microcontroller. Control and signaling is handled by a SPI port constructed from the AR2317 GPIO lines.
After a bit of tweaking the full duplex audio quality sounded just fine, CPU load was less than 1%. This was really just a basic Channel Driver designed to test the most important feature (full duplex audio) first. The next step is to add a bunch of other functionality like dial tone, echo cancellation, ringing and on/off hook detection.
We are very happy with this step – it’s a big chunk of firmware written and electronics tested.