ChatterBox Technical Overview

ChatterBox is the combination of a secure / mesh-capable protocol, licensed firmware, and compatible hardware devices. The ChatterBox protocol and mesh implementation are designed to require very little configuration on the user’s part. Rather, ChatterBox devices automatically become aware of other on-cluster devices that come and go, leveraging any and all available devices to propagate messages, locations, and other relevant data in a secure way.

Communication
Messages (whether pings or user-created) are packetized and prepared for transmission/meshing. Hardware and firmware for the v1.0 release target only LoRa transmissions.

However, ChatterBox has been successfully tested with transmissions via LoRa, WiFi, CAN (wired), and UART (wired)…as well as various combinations of those. Regardless of the transmission medium(s), the payload remains encrypted, signed, and the message can be pieced back together by the recipient no matter which mediums are used and no matter what order the packets arrive in.
Security
There are multiple layers to the security built into ChatterBox protocol, firmware, and devices. ChatterBox utilizes a combination of encryption, digital signatures, and unpredictable frequency hopping to enable a reasonable level of security.
Message Delivery
ChatterBox sends messages directly and directly from sender to recipient instantly whenever possible. This depends, obviously, on whether the two devices are currently within range. Assuming the two devices are not in range, the next option is sending a message via the cluster’s distributed mesh cache.

Message delivery can be synchonous or asynchronous. Provided the recipient is within range, the message delivery becomes synchronous. If the recipient is out of range (or powered off), the sent message drops into the device’s mesh cache. From there, it is moved, packet-by-packet, toward the recipient as opportunities present themselves. At any time, if the recipient does become within range, the delivery method switches back to direct immediately.
Decentralized Mesh Cache
The mesh cache is both a packet cache that exists on each device and a cluster-wide distributed cache. At any given time, packets in motion may exist on multiple devices’ mesh caches, and will propagate toward the recipient as fast as possible. The mesh cache grows and shrinks automatically as necessary. The mesh cache exists both on node devices and on communicator devices.

A given device’s mesh cache represents packets it has been asked to assist with delivery of. The payload portions of mesh packets have been asymmetrically encrypted, so the assisting device cannot decrypt any payload, even though it is assisting in delivery.

Packets can sit in the mesh cache for up to 24 hours, so any given message effectively has 24 hours to get where it’s going before it is considered expired.
Mesh Graph
The mesh graph is a decentralized view of the cluster’s connectivity and location state at any given time. Each device in a cluster has its own view of the current state, and it it is highly likely that view is different from one device to another, although they should be fairly similar. The mesh graph is what enables devices to plan routes for packets and be aware of location/connectivity information, often even for devices that are far out range, provided the devices in question are within (or recently have been) the range of some device in the cluster.

The mesh graph is kept as fresh as possible by using a variety of techniques. This is an area of active research, and you can watch a demo of how earlier iterations of ChatterBox mesh graph propagation were tuned using a combination of simulation and techniques borrowed from AI.
Supported Hardware
The v1.0 release of ChatterBox targets the ESP32 platform, and specifically a few product offerings from LilyGo. The protocol and firmware are designed to be portable to a variety of other platforms, and have been tested successfully on several (including SAMD51, Arduino MKR Zero, Tehttps://www.pjrc.com/teensy/ensy, and more), but we are not offering products based on those platforms just yet.