A new lightweight, hybrid routing mesh protocol for packet radios
Find a file
Ryan Gregg 61ba79966b Address PR review feedback from liamcottle (second round)
- Rename eth command to eth.status for consistency with other commands
- Rename generateDeviceMac to generateEthernetMac for clarity
- Refactor ethernet_handle_command to return false by default
- Allow new TCP clients to replace existing connections (repeater, room server, SerialEthernetInterface)
- Boot companion radio without Ethernet on init failure (LoRa-only recovery mode)
- Remove > prompt from ethernet CLI for consistency with serial interface
- Fix variable redeclaration compile error in SerialEthernetInterface when ETHERNET_STATIC_IP is defined
- Fix TCP socket leak when duplicate client detection fires
- Remove dead recv_queue and adv_restart_time members from SerialEthernetInterface
- Fix port numbers in docs (port 23 for repeater/room server CLI, port 5000 for companion radio)
- Clarify eth.status command is only available in repeater and room server firmware

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 12:43:08 -07:00
.devcontainer devcontainer: add bun feature and update postCreateCommand 2026-03-07 12:49:25 +00:00
.github Updates based on PR review feedback from liamcottle 2026-03-10 22:35:31 -07:00
.vscode Initial commit 2025-01-13 14:07:48 +11:00
arch Fix BLE semaphore leak in Bluefruit library 2025-12-04 11:47:41 +01:00
bin/uf2conv setup automated firmware builds with github actions 2025-03-03 17:58:15 +13:00
boards update PR #765 2026-03-04 03:38:35 +01:00
docs Address PR review feedback from liamcottle (second round) 2026-03-11 12:43:08 -07:00
examples Address PR review feedback from liamcottle (second round) 2026-03-11 12:43:08 -07:00
include Initial commit 2025-01-13 14:07:48 +11:00
lib moved nrf sdk headers to ./lib/ and added Repeater envs for t114 & t-echo 2025-03-07 00:16:22 +01:00
logo add logo files 2025-06-05 20:35:40 +12:00
src Address PR review feedback from liamcottle (second round) 2026-03-11 12:43:08 -07:00
variants Updates based on PR review feedback from liamcottle 2026-03-10 22:35:31 -07:00
.clang-format Re-applying 73a7a96, formatting, MyMesh reformat 2025-06-01 20:31:29 -07:00
.envrc add default.nix/.envrc for automagic platformio dev environment on NixOS 2025-04-16 12:18:49 -04:00
.gitignore Add venv dirs to .gitignore 2025-12-31 13:01:56 +01:00
build.sh update build.sh to support RP2040 and STM32 2026-02-13 12:43:04 +11:00
build_as_lib.py lib_build: add UI_FLAVOR and some cleanup 2025-08-26 13:28:42 +02:00
CNAME Create CNAME 2026-02-03 13:47:43 +13:00
create-uf2.py added custom pio task "Create UF2 file" 2025-10-17 16:25:58 +02:00
default.nix default.nix: add python3 to the shell 2025-08-14 15:52:04 -07:00
library.json Update library.json to latest libs and version 2025-11-13 10:39:20 +01:00
license.txt * tidy ups 2025-01-20 10:20:42 +11:00
merge-bin.py * merge-bin.py script 2025-01-25 23:09:09 +11:00
mkdocs.yml separate table of contents 2026-01-28 21:48:39 +13:00
platformio.ini Update default preset to EU/UK (Narrow) 2026-02-24 11:28:23 +01:00
README.md Merge branch 'dev' 2026-02-15 17:25:07 +11:00
RELEASE.md add release docs 2025-03-03 18:08:00 +13:00

About MeshCore

MeshCore is a lightweight, portable C++ library that enables multi-hop packet routing for embedded projects using LoRa and other packet radios. It is designed for developers who want to create resilient, decentralized communication networks that work without the internet.

🔍 What is MeshCore?

MeshCore now supports a range of LoRa devices, allowing for easy flashing without the need to compile firmware manually. Users can flash a pre-built binary using tools like Adafruit ESPTool and interact with the network through a serial console. MeshCore provides the ability to create wireless mesh networks, similar to Meshtastic and Reticulum but with a focus on lightweight multi-hop packet routing for embedded projects. Unlike Meshtastic, which is tailored for casual LoRa communication, or Reticulum, which offers advanced networking, MeshCore balances simplicity with scalability, making it ideal for custom embedded solutions., where devices (nodes) can communicate over long distances by relaying messages through intermediate nodes. This is especially useful in off-grid, emergency, or tactical situations where traditional communication infrastructure is unavailable.

Key Features

  • Multi-Hop Packet Routing
    • Devices can forward messages across multiple nodes, extending range beyond a single radio's reach.
    • Supports up to a configurable number of hops to balance network efficiency and prevent excessive traffic.
    • Nodes use fixed roles where "Companion" nodes are not repeating messages at all to prevent adverse routing paths from being used.
  • Supports LoRa Radios Works with Heltec, RAK Wireless, and other LoRa-based hardware.
  • Decentralized & Resilient No central server or internet required; the network is self-healing.
  • Low Power Consumption Ideal for battery-powered or solar-powered devices.
  • Simple to Deploy Pre-built example applications make it easy to get started.

🎯 What Can You Use MeshCore For?

  • Off-Grid Communication: Stay connected even in remote areas.
  • Emergency Response & Disaster Recovery: Set up instant networks where infrastructure is down.
  • Outdoor Activities: Hiking, camping, and adventure racing communication.
  • Tactical & Security Applications: Military, law enforcement, and private security use cases.
  • IoT & Sensor Networks: Collect data from remote sensors and relay it back to a central location.

🚀 How to Get Started

For developers;

The Simple Secure Chat example can be interacted with through the Serial Monitor in Visual Studio Code, or with a Serial USB Terminal on Android.

MeshCore Flasher

We have prebuilt firmware ready to flash on supported devices.

  • Launch https://flasher.meshcore.co.uk
  • Select a supported device
  • Flash one of the firmware types:
    • Companion, Repeater or Room Server
  • Once flashing is complete, you can connect with one of the MeshCore clients below.

📱 MeshCore Clients

Companion Firmware

The companion firmware can be connected to via BLE, USB or WiFi depending on the firmware type you flashed.

Repeater and Room Server Firmware

The repeater and room server firmwares can be setup via USB in the web config tool.

They can also be managed via LoRa in the mobile app by using the Remote Management feature.

🛠 Hardware Compatibility

MeshCore is designed for devices listed in the MeshCore Flasher

📜 License

MeshCore is open-source software released under the MIT License. You are free to use, modify, and distribute it for personal and commercial projects.

Contributing

Please submit PR's using 'dev' as the base branch! For minor changes just submit your PR and I'll try to review it, but for anything more 'impactful' please open an Issue first and start a discussion. Is better to sound out what it is you want to achieve first, and try to come to a consensus on what the best approach is, especially when it impacts the structure or architecture of this codebase.

Here are some general principals you should try to adhere to:

  • Keep it simple. Please, don't think like a high-level lang programmer. Think embedded, and keep code concise, without any unnecessary layers.
  • No dynamic memory allocation, except during setup/begin functions.
  • Use the same brace and indenting style that's in the core source modules. (A .clang-format is prob going to be added soon, but please do NOT retroactively re-format existing code. This just creates unnecessary diffs that make finding problems harder)

Road-Map / To-Do

There are a number of fairly major features in the pipeline, with no particular time-frames attached yet. In very rough chronological order:

  • Companion radio: UI redesign
  • Repeater + Room Server: add ACL's (like Sensor Node has)
  • Standardise Bridge mode for repeaters
  • Repeater/Bridge: Standardise the Transport Codes for zoning/filtering
  • Core + Repeater: enhanced zero-hop neighbour discovery
  • Core: round-trip manual path support
  • Companion + Apps: support for multiple sub-meshes (and 'off-grid' client repeat mode)
  • Core + Apps: support for LZW message compression
  • Core: dynamic CR (Coding Rate) for weak vs strong hops
  • Core: new framework for hosting multiple virtual nodes on one physical device
  • V2 protocol spec: discussion and consensus around V2 packet protocol, including path hashes, new encryption specs, etc

📞 Get Support

  • Report bugs and request features on the GitHub Issues page.
  • Find additional guides and components on my site.
  • Join MeshCore Discord to chat with the developers and get help from the community.