Hello List,
A simple test of the MP01 got me thinking about the challenges of making
the Village Telco easy to use.
I've set up a MP01 with a small mesh network as an every day phone
for my house. A rather obvious test - can the thing be used for phone
calls every day over an extended period? I'm using an IP04 as a gateway
to the PSTN, with this configuration:
PSTN - IP04 - LAN - Nanostation - mesh Wifi - MP01 - Analog phone
The IP04 also has a few analog phones hanging off it so we can use the
system to make calls between rooms in the house.
Here were the steps:
1/ The mesh network has the IP range of 10.130.1.x, the LAN 10.30.1.x.
So I needed to set up an IP04 Ethernet interface on the 10.30.1.x
network and a route to the mesh network via the Nanostation:
[ip04]$ ifconfig eth0 10.30.1.4 netmask 255.255.255.0;
[ip04]$ route add -net
10.130.1.0/24 gw 10.30.1.1;
Batman on the Nanostation 2 was configured to export the 10.30.1.x
network:
[nanostation2]$ batmand.3.2 -a
10.30.1.0/24 -g 5000 ath0
This automatically set up routing on the MP01. I checked routes in both
direction using ping.
2/ Set up a SIP trunk between the IP04 and MP
Here is the /etc/asterisk/sip.conf entry on the IP04:
[potato]
type=peer
username=potato
fromuser=potato
secret=password
context=default
disallow=all
qualify=500
dtmfmode=rfc2833
callerid=server
canreinvite=no
host=10.130.1.38
allow=ulaw
It's the same on the MP01 except for:
host=10.3.1.4
Then on both Asterisks check the SIP trunk:
ip04*CLI> sip reload
ip04*CLI> sip show peers
Name/username Host Dyn Nat ACL Port Status
potato/potato 10.130.1.38 5060 OK (6
ms)
3/ Some dialplan on the Mesh Potato, /etc/asterisk/extensions.conf:
[default]
exten => 4000,1,Dial(MP/1)
eexten => _3,1,Dial(SIP/potato/6003)
exten => _4,1,Dial(SIP/potato/6004)
exten => _0,1,DIal(SIP/potato/6001)
Dialling 0 on the MP will take IP04 extension 6001 (connected to the
PSTN line) off hook. The MP can then dial a PSTN number, or answer an
incoming PSTN call. Dialling 3 & 4 make IP04 FXS extensions connected
to analog phones ring.
Extension 4000 calls the MP01's FXS phone, used below by the IP04.
4/ Some dial plan on the IP04:
[default]
exten => 4000,1,Dial(SIP/potato/4000)
So dialling 4000 on an IP04 phone will place a call to the MP01.
To check the dialplan entries:
CLI> dialplan reload
CLI> show dialplan default
So here is the point of this post:
The simple example above took a lot of thought and involved an
understanding of IP routing, the Linux command line, vi, Asterisk
dialplan and SIP configuration. The challenge for us is to make this
really easy to do by people with the minimum possible skill level.
Diagnostics are important, we need easy ways to check that the IP links
are up, that SIP connectivity exists, and alarms if anything goes down.
Preferably without using the Linux command line, or vi, or the Asterisk
CLI.
The "guy in a village" may not have access to the Internet. How will he
support himself and diagnose a problem if something goes wrong?
Ease of use is a significant challenge, not to be underestimated. One
example that comes to mind is the enormous amount of work that has gone
into GUIs to make Asterisk easier to use. Another example: in the
developed world many small offices still pay "the phone guy" to maintain
their small phone systems, even though they might administer their IT
themselves.
We have made some steps in the right direction - Alberto and Louise are
doing some fine work on an easy to set up Asterisk/Billing server,
Afrimesh is looking good. Elektra's latest firmware images allow phone
calls between MPs with zero configuration - just apply power and dial
the IP of another MP.
BTW I have discovered an novel use for the Mesh Potato. When my wife
woke up today she used it to call me in my home-office. She wanted me
to make her some coffee!
Cheers,
David