
Recently, I heard the term ‘MeshCore‘ a few times from people who were quite enthusiastic about this rising star in the mesh radio networking domain. After listening to a talk about it (in German), I decided that I wanted to try it out as well. A device costs around 50 euros, so I ordered a few. Just out of interest, without a particular use case in mind (yet). So what is this ‘MeshCore’ then?
Walkie-talkie for Text Messaging and Channels
The question is both easy and difficult to answer, so let’s start with the easy part: MeshCore is based on the LoRa radio technology and implements a Walkie-Talkie text message system for many to many and device communication. Text messages with a length of up to 150 characters can be sent in channels, and all devices listening to the channel can receive the message. That’s the basic functionality that is then extended with quite a number of other features.
Devices

Before I continue with the other features, let’s have a look at devices first: MeshCore is implemented on inexpensive ARM Cortex M based boards with a LoRA radio such as the credit card sized SenseCap T1000 or the Wio Tracker L1 boards that can be put into Walkie-Talkie like cases. That’s just two examples, the range of boards and casings is quite large, including messenger like devices with a tiny QWERTY keyboard. Most devices do not have a keyboard and display, however, and are hence connected over Bluetooth Low Energy to a smartphone and a MeshCore app running there. At first glance, it looks like a messenger app, but MeshCore works fundamentally different from what you and I are used to from messenger apps.
Forwarding
Let’s come back to the Walkie-Talkie style text messaging exchange. What that means in practice is that you only see a message in the app connected to your MeshCore Companion device if it was within range of a device that has sent the message. Messages are not stored in the network, a device either receives it when it is sent or it never shows up on the device. Like voice Walkie-Talkies, you either hear the transmission or you don’t.
To make this useful over larger distances, a MeshCore device can also be flashed to be a Repeater device. These device are mostly at fixed locations and forward messages they receive. This way, messages in a Channel can travel large distances. We are talking 100 km and more if enough Repeaters are receiving the retransmissions of other Repeaters and rebroadcast the messages themselves again. The hop count was initially limited to 64 hops, but in the meantime, 32 hops is the limit. In practice, this is further reduced by ‘Regional Scopes’, so local channels such as ‘Koeln’ or ‘Bonn’ or whatever city name do no propagate too far and consume air time. Each channel can have its own Regional Scope, so smaller and larger distribution areas are possible.
No Infrastructure
It’s important to understand that also repeaters do not store messages. If your Companion device hears the message, you see it, if it doesn’t not, you don’t. Think Walkie-Talkie. Also, a sender has no idea who has received the message and who hasn’t. This significantly limits the usefulness of Channels if you are used to the group concept of other Internet based messengers.
MeshCore is not Internet based, there is no infrastructure other than the small devices themselves, which can be flashed to fulfill different purposes, i.e. Companion, Repeater or Room, a concept that I will describe a bit further below. Repeaters can be solar powered and take very little energy, so communication can continue even during a power outage.
But still, living in the moment and location when it comes to receiving a message is limiting, so MeshCore has extended the concept a bit to bring a bit of certainty into the equation.
Direct Messages
For communication between two endpoints, MeshCore offers Direct messages. Like in channels, direct messages are encrypted and both sides have to know the pubic key of the other side. Otherwise, communication between two parties is not possible. In other words, the keys need to be exchanged first, either in person by scanning a barcode, or by sending the barcode over another system like Email, an Internet based messenger, etc.
Unlike channels, a Direct Message is acknowledged by the receiver. This means the sender knows if a message was received on a destination device. From my point of view, this is an important feature and works well in practice, even over several repeater hops. By using repeaters, distances well over 100 km between two devices can be reached. The only condition: There must be repeaters between the two devices that can see each other. If there is a gap, the message will be lost. But at least you know as a sender, because you won’t see an ACK.
Rooms
And last but not least, a device can be flashed to act as a Room Server. A single device can host one room, and a password protects the room. I was a bit perplexed at first why such a limit is in place. But the hardware used for MeshCore has just 256 KB of RAM, for code and data.
Companion devices can subscribe to a room by knowing its name and key, and by supplying the room’s password in the app. Up to 32 messages can be stored in a rolling cache in the room. Whenever a message is received, the room device tries to push the message to all room subscribers. If one of the Companion devices is offline or out of coverage, it can poll for new messages later. The room server will then push all messages to the device it has not received so far. This concept is similar to the Internet messenger groups we know. However, and that’s important, each room is running on one dedicated MeshCore device, there is no central instance. Also, messages can only be sent and received to and from the room if you are close to it, or if there is a repeater chain between a far away Companion device and the Room server. If you are too far away with your Companion, the hop count will be the limit, or the Local Scope, or gaps in the mesh.
So what is this all good for?
Well, from what I can tell, MeshCore’s original idea is to serve as infrastructure-less network during a disaster when power and the Internet fails. The devices themselves require very little power and router devices can be solar powered.
Personally, I also find the idea appealing to communicate with other people without infrastructure over a larger area and to communicate with sensors through several buildings without requiring any infrastructure.
But to be honest, the main motivation why I had a look at this was to get a feeling for mesh and infrastructure independent technology. And it seems I’m not the only one, there are so many repeaters around me already that I have no problem to communicate with devices 100 km away from a small device with a tiny built-in antenna.
In a follow-up post, I will have a look at the range, but let me tell you already now that MeshCore devices have no problems to go through 7 reinforced concrete floors and through many blocks of city buildings without a Repeater device! But that was just a teaser, more about range in the next post on the topic.