Skip to content

Commit

Permalink
ffh-obedient-meshing: add readme
Browse files Browse the repository at this point in the history
  • Loading branch information
AiyionPrime committed Feb 24, 2023
1 parent 0ef983d commit 899b1c9
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions ffh-obedient-meshing/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# ffh-obedient-meshing

This package allows the router to scan for available mesh-networks in order to join the most prominent one in radio distance.

## Dependencies

This package relies on `gluon-state-online` to tell whether it has mesh partners.
It relies on `micron.d` to do this every minute.
In case it doesn't, it relies on `iw` and `iwinfo` to scan for wireless networks nearby and join one.
Lastly this only makes sense to be deployed in a multi-domain-setup.

##what it does

### when there are mesh neighbors

The device stays in that domain, where it and its neighbors currently are.

### when there aren't

The file `/var/guon/state/has_neighbours` is missing.
It scans for mesh networks, and checks for a network with a `mesh_id` matching one of the known domains meshes.
It does this on all available radios hence all available bands.

In case it finds none, the device will try again a minute later, until it eventually does.

In case it finds more than one, it determines the locally most popular (whichever it encounters most often) and changes its domain in order to match it.

It reconfigures without reboot using `gluon-switch-domain` and should have mesh neighbors a minute later.

### on boot

Domains are configured and stored across (unrelated) reboots.
As the device comes up it is part of the last domain configured, like a regular device.
And only if it does not have mesh neighbors, it does its job.

## drawbacks

Mesh networks to only provide a `mesh_id` which is shared across multiple domain related to one primary.
This package does not know about which pretty domains are near.
It therefore joins the primary one; which leads to devices in e.g. `dom14` instead of `Nordstadt` in Hanover.

Devices do not mark that they're meshing obediently; this could lead to unexpected behavior for mesh-clouds without Internet-access. As they technically have neighbors and therefore do not need to switch domains. This is for now intended behavior and matter to discuss, but not part of this first implementation.

0 comments on commit 899b1c9

Please sign in to comment.