continued
β π§ β‘ The Rain β π¦ β‘ π¦
Remember last year's rain? It's that time of year again... and again the first weeks were quite challenging to maintain the community network infrastructure.
While I was chatting with @mixmix on a #ahau meeting a tremendous lightning storm started. It burned many appliances around the village, I'm off-grid, but the infrastructure suffered.
The Libre Router is plugged into a surge protector, but for some reason it's charger burned, at least it was a cheap one, and it can handle an array of voltages, so getting another charger was easy.
We lost a TP Link 3500 router and charger, and something's weird with the network cables that were connected to it, still trying to debug that.
Two of our brand new CPE 510's started acting weird, and it seems they lost networking with Ethernet, which is quite crucial as it only has one 5Ghz radio, for meshing, and is usually connected thru cable to some low-end router. Also their POE chargers burned.
Not related to the lightning strikes, but also lost two CPE 510's version 1, which was acquired by the neighbors to connect a new part of the village... can't ssh
into them anymore after installing LibreMesh firmware. There's probably a fix to them though.
Kinda funny, in one post I got a bunch of equipment, and the next a lose a bunch. That's life.
Lime-Updater
Spent last week working on this side-project on my spare time. lime-updater is a CLI tool built in NodeJS with oclif, easy install with npm i -g lime-updater
.
Last year I wrote this post while still in Quitana learning the basics. Me, @markitos and @nicoechaniz spent from 1am until 6am updating their huge mesh. Libre Mesh development is an ongoing process, so it shouldn't have to be that hard to update the firmware in the mesh. So I gave myself a week to give a try at solving this problem.

It starts by checking the latest LibreMesh revision, which I found out to be based on the latest lime-packages commit. It ssh's into each node and gets some basic information about them, such as how many hops it is from the node you're running the program from, the ip, and model of the node and it's Libre Mesh revision.
Surprised me that starting ssh sessions in parallel didn't work, had to do some hacky for..of
loops to get synchronous ssh one node at a time.

It then backs up the configs to your computer, selects the right firmware and upload's it to the node. After all that is done it starts updating from the most distant nodes.

This is the most tricky part... after installing the new version it ssh's into each node, scp
's the backup tar.gz
file and restores the old settings.
I was able to update my whole network using this software, but not in a single run as it's intended to work. Found out that there are many edge cases to this whole process depending how the mesh has been configured. Different channels, and virtual interfaces that not always enables the mesh to recover itself after installing the new firmware with no configuration.
But it was a great experiment, definitely learned a lot, and got some great feedback from Marcos and San. If it proves to be useful it'll start being polished thru the magic of #open-source collaboration. It also gave me many ideas for visualization tools for mesh, which are very useful.
Also started collaborating with @brunovianna on a project to run this on mobile and use some kind of gossiping protocol to share firmware among devices, for an offline-first approach.