🌐 Project Mesh

My university capstone project was to develop Project Mesh, an android app to create an ad-hoc mesh network in remote areas. My team worked with the Canadian organisation Grey-Box to develop this application.

We worked on this project from March-June 2024, the source code was published to GitHub under the MIT License.

💡 Features

Screenshots

Demo

Showcase

Some grads working at Motorola were quite interested! Unfortunately the rest of my team couldn’t come to present. Shoutout to my mate Steven for keeping me company in the booth next to me!

Testing

A lot of time was spent with these three old phones, but as you can see we have 3 devices connected (this is an older version) and during group meetings we had 5-6 connected at once.

The devices in the photo are a Samsung Galaxy A30 (top left), Samsung Galaxy S5 (bottom) and a Lenovo Tab (top right).

🔧 Behind the scenes

Meshrabiya

Diagram of how Meshrabiya works

We utilised the Meshrabiya library to manage networking, created by Mike Dawson. It uses WiFi Direct to create hotspots, and utilises the legacy connection mode of these hotspots to allow an Android device to simultaneously create and connect to another hotspot. The library then manages data transmission over multiple hops, as well as sharing the SSID and passphrases to all of the nodes in the network, allowing automatic reconnection.

Using it with Project Mesh

Each phone is assigned a random IP address in the 169.254.0.0/16 range when the app initialises. To get around this, I implemented a UUID system.

This UUID is stored on the device, and every 5 seconds it each device broadcasts their name and current IP address. This allows devices to infer the last time seen ‘online’ as well as which IP to send a message to.