Download an up-to-date PDF version of this page.
From Wikipedia:
MeshCore is an open-source mesh networking protocol and software platform designed for off-grid, low-power text communication using LoRa (Long Range) radio technology. The system enables decentralized, multi-hop wireless messaging without reliance on cellular networks or internet infrastructure.
Use cases include emergency and disaster communications, outdoor and remote activities, [...] and experimental and educational deployments of low-power mesh networking.
[It] is designed to [...] operate in unlicensed ISM frequency bands such as 868 MHz and 915 MHz, depending on regional regulations.
The idea is that each person has a small companion device C paired to their cellphone via Bluetooth, and via that device, they can text each other or post public messages using the 915 MHz band, all without a special license. The signal can travel directly between companion devices if they are close enough, or via a series of repeaters R to extend coverage.
You should also use a Chromium based web browser like Brave.
On Linux, you may have to add the “dialout” group to your user. To do that, type the following in the terminal replacing “USER” with your username and reboot your computer:
sudo usermod -a -G dialout USER
If you already have Meshcore installed, download your current settings:
Flash the Meshcore Firmware:
To re-load your previous config file:
See Scott Baker's article for more information.
If you’re having trouble pairing with Bluetooth, try rebooting your phone.
You should now rename your MeshCore node. The name you choose will be seen by other users on the MeshCore network.
The device name in Bluetooth results will not update until you reboot your node.
MeshCore can be used all over the world. Different countries have different regulations on which radio frequencies can be used for public, license free communication. To ensure your node is operating legally, please make sure to select radio settings that are compliant in your country.
The MeshCore app provides a list of radio presets that have been suggested by the community for use in specific countries/regions.
To configure the radio settings for your MeshCore node:
In the South West BC area, edit the settings to the following:
| Until Sept 30, 2026 | From Oct 1, 2026 | |
| Frequency | 910.425 | 909.000 |
| Bandwidth | 62.5 kHz | 62.5 kHz |
| Spreading Factor | 7 | 7 |
| Coding Rate | 5 | 5 |
See here for more details.
Messages sent to the Public channel can be seen by anyone on the MeshCore network. They are repeated across the mesh by all repeaters that hear them. Other mesh nodes in range of you or a repeater that rebroadcast the message, should receive it.
The public channel can be used as a large group chat for general conversation amongst all users on the mesh. It could also be used to send emergency alerts.
It’s not recommended to send confidential information on the public channel as anyone can read these messages.
To send a message:
Outgoing messages will show “Heard 1 repeat” if your node heard a nearby repeater passing on your message. If there are no nearby repeaters, it will show “Sent”. It’s not possible to know who received a channel message.
Before you can send private, encrypted, direct messages to someone, you and the person you send the message to must both add each other as contacts. If the other person doesn’t also add you as a contact, your messages to them will fail to deliver.
Contacts can be added in multiple ways:
To share your contact details privately via QR Code:
The QR Code contains your Node Name, Node Type and Public Identity Key. Your contact details will not be transmitted over the mesh. Only the person who scans your QR Code will receive your contact details.
You may need to accept a permissions request for the MeshCore app to access your camera. This permission must be granted to be able to scan the QR Code.
If you are unable to privately share your contact details in person via a QR Code, you may alternatively share them publicly to everyone on the mesh by sending an “Advert”.
An advert is an unencrypted packet transmitted by your MeshCore node. It includes your node name, node type, public identity key and a cryptographic signature to prevent anyone from tampering with the information as it’s sent across the mesh.
You can send two types of adverts:
| Zero Hop | Flood Routed |
|---|---|
| The advert won’t be retransmitted by any repeaters. | The advert will be rebroadcast by all repeaters that hear it. |
| Your contact details will only be received by nearby nodes. | Your contact details could be received by everyone on the mesh. |
To share your contact details publicly via the mesh:
Adverts are not encrypted. Sending an advert will share your contact details with everyone in range.
Once you’ve added a contact, and that contact has added you back, you can send private messages to each other across the mesh. These messages are encrypted and only the intended recipient can read the message contents.
To send a private message:
A message may get marked as failed even though it was successfully delivered to the recipient. This happens if we did not receive the acknowledgement reply from the recipient node. In this case, it’s recommended to send the message again. Once you see the delivered check mark, you know for sure it was received.
When you send a direct message to someone, it’s possible that it may not go through after several automatic attempts. This can happen for many different reasons, such as:
To try sending the failed message again:
When sending direct messages, you must both add each other as contacts first. The recipient's companion radio must be turned on to receive the message and to provide a delivery report. You must also be in radio range of each other, or have a working path of repeaters between each other.
To check the signal strength to and from a nearby repeater, you can run a ping test.
Ping tests do not hop through multiple repeaters. You must be in range of the specific repeater you are ping testing. For a ping test to be successful, the repeater must hear your companion signal directly, and your companion must hear the repeater signal directly. If you’re not in range of the repeater, the ping test will fail with a timeout error.
If you already have Meshcore installed (but not the bootloader), download your current settings:
Connect
Export
Disconnect
.json file (probably in your Downloads folder).
Download the bootloader:
Repeater (or Room Server)
Download
*bootloader-x.x.x-OTAFIXx.x.uf2 file
.uf2 file (probably in your Downloads folder).
Copy the bootloader over to your device:
.uf2 file to the drive.
Flash the Meshcore Firmware:
Repeater (or Room Server)
Enter DFU Mode
Erase Flash
Flash
Re-upload your settings:
Configure via USB from the previous page, or navigate to https://config.meshcore.io/
Connect
Import
.json file
Access section and retype your New Admin password (it doesn't remember it)
Save settings
Disconnect
Setup the Over the Air (OTA) update app (first time only):
DFU app
Packet receipt notification
Perform an OTA update:
Repeater (or Room Server)
Download
zip file (not the bootloader file)
Remote Management
Command Line
start ota, you should get a message that says: OK - mac: xx:xx:xx:xx:xx:xx
DFU app
File click Select to chose the firmware .zip file
Device click Select and chose the device that has DFU in the name. If there are no device with DFU in the name select the device with OTA in the name.
Progress click Start
OTA, the process will fail at DFU initialization. Not to worry, go back to the previous step and now you should be able to select a device with DFU in the name.
See Scott Baker's article for more information.