ChatterBox vs Meshtastic: Mesh Capabilities
ChatterBox
All ChatterBox devices in a channel or private cluster participate in that group’s decentralized packet cache.
The ChatterBox decentralized packet cache is an encrypted, cluster-wide multi-device storage mechanism, which automatically stores and propagates packets toward their destination, using smart meshing.
All ChatterBox devices do this automatically
Private Clusters
Whenever possible, meshing is not used, and packets are simply transmitted directly between the sender & recipient instantly
Send encrypted message & data to devices in range, beyond range, and even powered off devices
Decentralized & evolving knowledge of connectivity throughout the cluster
Direct messages route packets on the most efficient path
Broadcast uses a message’s priority & expiry to quickly route to all devices in your cluster
DMs are allowed up to 24 hours to deliver, meaning each hop will cache that long if necessary, until full delivery is verified
Broadcasts are allowed up to 2 hours; the message will get as far as it can before it expires
Signed Delivery Confirmation
Automatic with every direct message
Upon receipt & validation of a DM, the recipient automatically generates a signed / un-fakeable delivery confirmation, routing it back to the sender.
The sender will see a check mark once this completes.
For broadcasts, delivery is shown as complete as soon as at least one other device has accepted the message
Packetization / Packet Striping
All messages are broken into packets
The source, order, and method in which packets arrive does not matter. Packets for a single message can arrive from multiple devices, multiple frequencies, or even multiple methods (LoRa / MQTT).
Regardless of how packets arrive, the end recipient is able to piece them back together, validate the signature, and decrypt the message
ChatterBox Channels
ChatterBox channels are encrypted and fully utilize frequency hopping and digital signatures
ChatterBox channels have less capabilities than private clusters and correspond more closely to Meshtastic
With ChatterBox channels, meshing is controlled mainly by the expiry you set on a message
Any other devices in the channel will validate the signature, and if it’s good, cache and help to push the message along until expiry
There is no path planning, simply an effort to push the message far and wide quickly
Channels still use a distributed packet cache, but the trickling of packets is not deterministic, and simply pushes away from the sender until expiry.
Devices powered off or out of range when a message is sent in a channel can still receive the message if they power on or come within range prior to the message expiry.
Meshtastic
Meshtastic corresponds more closely with the less functional ChatterBox channels than what is recommended: private clusters.
Meshtastic has no distributed packet cache mechanism or any knowledge of state / connectivity throughout a channel.
Connectivity Knowledge
Devices are only aware of other nodes in the same “channel” immediately within range.
Devices do not share connectivity knowledge of others beyond range.
Mesh Logic
For the most part, devices that receive a message blindly repeat the message without any verification it ends up where it needs to go.
In a newer version of Meshtastic, the mesh routing is slightly more deterministic, in that if a receiving device has built enough state to believe it can get the message to the end destination, it will use that for the next hop.
Delivery Confirmation
There is no reliable / signed delivery confirmation. When a message is sent, the sender may receive an unsigned / unverifiable “ack” that means either a node has received the message or possibly something else has received the message.
That “confirmation” means it might get where it’s going, or it might not.
For a message that was sent via LoRa / mesh, there is no way to know if the recipient actually received the message.
Delivery to Powered Off Devices
Generally, things in Meshtastic happen in “live time”, and if a device is not powered on or is out of range when a message is intended for it, the message is lost.