Table of Contents

How the MESHdesk firmware works


A typical Request and Reply

What the node requests from the server

192.168.99.125 - - [06/Feb/2014:09:59:13 +0200] "GET /cake2/rd_cake/nodes/get_config_for_node.json?mac=AC-86-74-10-03-08&gateway=true HTTP/1.1" 200 2247 "-" "Wget"
192.168.99.125 - - [06/Feb/2014:10:05:59 +0200] "GET /cake2/rd_cake/nodes/get_config_for_node.json?mac=AC-86-74-10-03-10&gateway=false HTTP/1.1" 200 2049 "-" "Wget"

What the server replies

{"config_settings":
   {"wireless":[
      {"wifi-device":"radio0","options":{"channel":"11","disabled":0}},
      {"wifi-iface":"zero","options":    
      {"device":"radio0","network":"mesh","mode":"adhoc","ssid":"02_CA_FE_CA_00_01","bssid":"02:CA:FE:CA:00:01"}},
      {"wifi-iface":"one","options":{"device":"radio0","mode":"ap","encryption":"psk-mixed","network":"one","ssid":"meshdesk_config","key":"radiusdesk","hidden":"0"}},{"wifi-iface":"two","options":
      {"device":"radio0","mode":"ap","network":"ex_five","encryption":"none","ssid":"Paul","key":"verysecure","hidden":false,"isolate":false,"auth_server":"","auth_secret":""}},{"wifi-iface":"three","options":
      {"device":"radio0","mode":"ap","network":"ex_two","encryption":"none","ssid":"Simon","key":"","hidden":false,"isolate":false,"auth_server":"","auth_secret":""}}],
"network":[{"interface":"loopback","options":
      {"ifname":"lo","type":"bridge","proto":"static","ipaddr":"127.0.0.1","netmask":"255.0.0.0"}},
      {"interface":"lan","options":{"ifname":"eth0 eth1","type":"bridge","proto":"dhcp"}},
      {"interface":"mesh","options":{"ifname":"wlan0","mtu":"1544","proto":"batadv","mesh":"bat0"}},
      {"interface":"one","options":
      {"ifname":"bat0.1","proto":"static","ipaddr":"10.5.5.3","netmask":"255.255.255.0","type":"bridge"}},
      {"interface":"ex_two","options":{"ifname":"bat0.2 eth0.100 eth1.100","type":"bridge"}},
      {"interface":"ex_two","options":{"ifname":"bat0.2 eth0.100 eth1.100","type":"bridge"}},
      {"interface":"ex_three","options":{"ifname":"bat0.3 eth0.101 eth1.101","type":"bridge"}},
      {"interface":"ex_three","options":{"ifname":"bat0.3 eth0.101 eth1.101","type":"bridge"}},
      {"interface":"ex_four","options":{"ifname":"bat0.4 eth0.103 eth1.103","type":"bridge"}},
      {"interface":"ex_four","options":{"ifname":"bat0.4 eth0.103 eth1.103","type":"bridge"}},
      {"interface":"ex_five","options":
      {"ifname":"bat0.5","type":"bridge","ipaddr":"10.200.105.1","netmask":"255.255.255.0","proto":"static"}},
      {"interface":"ex_five","options":{"ifname":"bat0.5","type":"bridge"}}],"gateways":
      ["ex_five"]},"success":true,"timestamp":1}
 
{"config_settings":
{"wireless":[{"wifi-device":"radio0","options":{"channel":"11","disabled":0}},{"wifi-iface":"zero","options":{"device":"radio0","network":"mesh","mode":"adhoc","ssid":"02_CA_FE_CA_00_01","bssid":"02:CA:FE:CA:00:01"}},{"wifi-iface":"one","options":{"device":"radio0","mode":"ap","encryption":"psk-mixed","network":"one","ssid":"meshdesk_config","key":"radiusdesk","hidden":"0"}},{"wifi-iface":"two","options":{"device":"radio0","mode":"ap","network":"ex_five","encryption":"none","ssid":"Paul","key":"verysecure","hidden":false,"isolate":false,"auth_server":"","auth_secret":""}},{"wifi-iface":"three","options":{"device":"radio0","mode":"ap","network":"ex_two","encryption":"none","ssid":"Simon","key":"","hidden":false,"isolate":false,"auth_server":"","auth_secret":""}}],
"network":[{"interface":"loopback","options":
{"ifname":"lo","type":"bridge","proto":"static","ipaddr":"127.0.0.1","netmask":"255.0.0.0"}},
{"interface":"lan","options":{"ifname":"eth0 eth1","type":"bridge","proto":"dhcp"}},
{"interface":"mesh","options":{"ifname":"wlan0","mtu":"1544","proto":"batadv","mesh":"bat0"}},
{"interface":"one","options":
{"ifname":"bat0.1","proto":"static","ipaddr":"10.5.5.3","netmask":"255.255.255.0","type":"bridge"}},
{"interface":"ex_two","options":{"ifname":"bat0.2","type":"bridge"}},{"interface":"ex_two","options":
{"ifname":"bat0.2","type":"bridge"}},{"interface":"ex_three","options":{"ifname":"bat0.3","type":"bridge"}},
{"interface":"ex_three","options":{"ifname":"bat0.3","type":"bridge"}},{"interface":"ex_four","options":
{"ifname":"bat0.4","type":"bridge"}},{"interface":"ex_four","options":{"ifname":"bat0.4","type":"bridge"}},
{"interface":"ex_five","options":{"ifname":"bat0.5","type":"bridge"}},{"interface":"ex_five","options":
{"ifname":"bat0.5","type":"bridge"}}]},
"success":true,
"timestamp":1}

Flashing LEDs

A well designed interface is done in such a way that it is easy for you to interact with and easy to read. We use these principles with the nodes on which the MESHdesk firmware are running.

Where possible we use three LEDs to allow a mesh node to report visually about its status at a glance:

Text Morse code Meaning
A . _ Starting up - waiting for LAN
B _ . . . LAN is up - Trying for the Config server
C _ . _ . Conf server not available through LAN - Bring up WiFi
D _ . . Conf server reached - Applying latest config
E . Conf server down - Applying previous config
I . . Running the pre-configure code
SOS . . . _ _ _ . . . Conf server down No previous config to use
Text Morse code Meaning
1 . _ _ _ _ One
2 . . _ _ _ Two
3 . . . _ _ Three
4 . . . . _ Four
5 . . . . . Five
6 _ . . . . Six
7 _ _ . . . Seven
8 _ _ _ . . Eight
9 _ _ _ _ . Nine
0 _ _ _ _ _ Ten or more

The Internet LED is actually an indication that the Alfred daemon could report the mesh status fine back to the MESHdesk server. So this light might actually be on without Internet connection if the MESHdesk server runs local.


Fetching settings through mesh

MESHdesk nodes which are not directly connected to a LAN will be able to reach the configuration server in the following way.

Advantages


Reporting the status of the mesh