In July 2012, The Serval Project commenced a third round of work for the New America Foundation's Open Technology Institute to integrate the Commotion Wireless Project's Ad Hoc Wi-Fi control into the Serval Mesh (app for Android). This was an essential step to allowing Commotion Wireless and Serval Mesh apps to co-exist on the same Android device, by preventing contention for control of the Wi-Fi radio.
This report was produced in fulfilment of R9.
Development commenced prior to the date of contract, and progressed until mid September 2013 until blocking technical issues were encountered (see below). The contract was deemed complete in October 2013.
Although the move towards CyanogenMod by the Commotion Wireless project may eventually render the Mesh Tether app irrelevant, the integration work realised in this contract will still remain useful for integration with other mesh network control components.
The commit 18dfb90 encapsulates all the changes made to the Serval Mesh (“Batphone”) source code:
net.commotionwireless.meshtether
app and that it possesses the permission net.commotionwireless.meshtether.CHANGE_STATE
(R2)MeshTether makes its enabled Ad Hoc mesh mode appear to Android as an active Wi-Fi network connection. Whilst enabled by the user, Batphone automatically starts Serval services (ie, starts the Serval DNA daemon) whenever any Wi-Fi connection is active. It was almost trivial to fulfil R5 and R6 by building on the recent re-design of the Batphone “Connect” menu and Wi-Fi control logic, funded by a grant from OpenITP earlier in 2013 which had the objective of removing Batphone's dependence on root (super-user) privilege. The decision to engage in extensive re-design work during that grant has borne fruit in this grant.
The Serval development team could not achieve correct operation of the Commotion MeshTether app (R1) on any of the available handsets:
All these handsets have super-user capability and are known to work with Serval Mesh in Wi-Fi Ad Hoc mode.
Two versions of MeshTether were tested, as described in the MeshTether integration roadmap page:
In fulfilment of R7, two manual test cases were added to the Serval Mesh release test plan, to be performed for all future releases:
The setback described above (MeshTether issues) prevented full testing from being carried out (R8) because the Commotion Mesh could not be activated on any devices.