Mesh Direction
There's a whole lot of rambling here, but the TL; DR is that Reticulum is cool, I'm going to be spinning up nodes and playing with that, I'll be scaling back but still keeping Meshtastic, and I'm going to stop playing with MeshCore but I'll still keep an eye on it in case something fun comes up.
Meshtastic
The bad:
• reboot loops
• uncomfortable UI
• only works for tiny meshes
• annoying rebuilds and upgrades to extend data-driven features
• settings aren't setting
Meshtastic devices just can't handle more than a handful of nodes. Less than 10 is fine. And then things start to get more unstable when you approach and then exceed 25. The names of nodes start to fall off and many messages show up from Unknown. And that's when it's able to keep running and doesn't just cause the device to go into a reboot loop that you can't stop without forcing the device into flashing mode. I observed this behavior on multiple nrf and esp32 devices. My T-deck Pro recently went into a reboot loop for an unknown amount of time (the screen seldom has a chance to actualy catch up with an update when it happens) and completely wiped its node list. But then it became much more stable after that, data loss aside.
While Meshtastic kind of supports arbitrary sensors for a handful of environmental things, if you wanted to have arbitrary data in packets and then make software to parse them, then the protobufs have to be modified, rebuilt, and radio firmware has to be rebuilt, too. And that rebuilt firmware has to be installed. And so it's easier to just jam everything into chat or text messages. I have bots that reply with text messages, which is handy for debugging, but when it came time to share that with other users I learned funny things -- like the message order is reversed on some devices, putting recent messages at the top. Some devices lose all the old messages when a new message comes in from the same place. So for some devices I have to calculate how many messages are needed to send a reply, then reverse the order so that it still looks contiguous when it arrives. And for some devices a reply requires caching the response and letting the user indicate that they want the next page. (This latter thing is a hack and my coding skills apparently aren't good enough to have a solid implementation so it's not in anything I'm sharing currently.)
There are also issues in the initial configuration, setting various items from either software on a connected computer or phone or directly through the UI of a device (provided that the setting is actually exposed by the device UI) is very much hit or miss. Doing a single setting at a time may reboot the device and lose the setting. Or require a reboot as a result of changing the setting. Or the device may just not get that setting made. The most effective way to set up any radio was to export all of the settings, modify the yaml, and then load that yaml config in one shot. But channel configurations aren't straightforward because they're a base64 encoded representation of the protobuf message that holds the channel information. So good luck with creating channels at the CLI or in a UI. Once they're set, export the config because it's still the easiest way to do successive setups on that or other devices.
The good:
• supports a lot of hardware
• fun to bridge and build chat bots for
• works great for tiny meshes
I'll continue using Meshtastic on some of my nodes because it's fun to tinker with and build bots and such to bridge it with stuff it doesn't bridge with on its own. And the software is kind of getting better. Aside from UI choices and trying to support an identical experience on different devices and not adequately debouncing signal and -- okay, look, it's got issues, but the devices work well on family camping trips. I use a few specific radios that have been proven to be reliable, I reflash them and the meshes stay small enough that most of the problems don't happen. Since they're niche enough, I dont encounter other nodes while camping, so it actually works out really well. I put one node at the camp site, pass out some credit-card sized radios on lanyards, stick a few heltec pagers on belts, and it's pretty good. They're not as bulky as radios, the younger users like that they can sync them to mobile phones and tablets, so it's not socially as weird, and other than a few gps hiccups it's pretty smooth.
The occasional GPS hiccup puts a node a few kilometers away, but the hiccups are short-lived and historice position (when using a connected device) makes it easier to guess the actual position.
MeshCore
MeshCore claims to have "solved meshtastic problems" with scaling and adding nodes by not actually being a mesh. MeshCore claims to be a mesh, but I thought the purpose of a mesh was that you could extend your network by adding more nodes, whereas with MeshCore you have to explicitly add more routers. That is, the only nodes that route are repeaters and rooms that are also acting as repeaters. I've also had problems with discovery actually working without having two nodes both blast adverts at the same time. In large cities where there are nodes according to the online map, I've never seen any traffic except my own nodes. It's also not clear to me what would be the best way to bridge MeshCore over the internet. With Meshtastic there's built-in MQTT support. For meshcore there might be community projects that can do it, but I haven't looked in a while.
Another issue I had with MeshCore wasn't the software or hardware itself, but the human running the show puts some features behind a paywall. The price is low, and I like the idea of supporting the work being done by buying an unlock code for more features, but this introduces a few problems. One: the GUI software is all proprietary. Two: the guy running the show is very slow to actually send codes or respond to email. Even after reaching out multiple times it was still over a month before I received a key and now I'm not even going to use it because I'll be reflashing that device to Meshtastic.
Reticulum
Reticulum is more like what I thought Meshtastic would be when I started toying with Meshtastic. Reticulum has been around for a while, so I shouldn't count Meshtastic's lack of maturity against it, or weight Reticulum's robustness against Meshtastic, but I've kind of ended up in a Goldilocks situation: after tinkering with Meshtastic and MeshCore, Reticulum might be just right. One's not stable enough to mesh, the other doesn't really mesh, and then along comes Reticulum; meshes, scales, and has APIs for everything. I dont have to rewrite any of the existing internal logic to make use of it, and there's no need to hack on or pidgeonhole anything.
What Reticulum doesn't have is a lot of standalone devices. So it doesn't really solve the UI problems that meshtastic has because there are only a few devices with a UI. The main use case for radios and Reticulum seems to be in attaching the radio as an interface to be able to send traffic over LoRa. There is a recent new project (ratspeak?) that has some promise, but doesn't support my standalone devices (yet?). The Android app, Sideband, attempts to expose everything that's possible so in that case Reticulum does have a terrible UI.
Another issues with Reticulum is the baked in page-serving logic has an atrocious markup language. Many find it to be just fine, but I find it to be hard to read and I'm going to have to come up with an abstraction layer that converts my markdown documents into micron or I'm going to have to make a Neovim plugin that levergaes concealing characters so I can hide it. The weird escapes are too much noise to keep straight, and I can't remember what the different punctuation does. And colors are just as bad as embedding raw ansi. Which also wont work for Reticulum pages, so I'm going to have to convert or drop those.
But that aside, I'll probably be writing about Reticulum, what I'm trying, and how it's gone in the days to come. Fair warning though, I've gone back and updated some very short notes that were made before this note, so the timeline is going to look all sorts of funny on the all notes page if anyone pays close enough attention.
Tags: mesh, reticulum
Tags
Navigation