Skip to main content

Protocol Comparison Reference

Protocol Comparison Reference

This page provides a detailed technical comparison between MeshCore and Meshtastic — the two most widely deployed open-source LoRa mesh networking platforms. Both run on similar hardware and serve similar goals, but make very different design choices.

Feature Comparison Table

Feature MeshCore Meshtastic RoutingFlood-first Demand-drivento path-basedunknown destinations; subsequent unicast messages use direct path routing (RREQ/RREP)ROUTE_TYPE_DIRECT) after path discovery via PAYLOAD_TYPE_PATH packetsControlled Floodingflooding with hop limit and duplicate suppression (always floods) EncryptionAES-128 ECB + HMAC-SHA256 (2-byte truncated, encrypt-then-MAC) for message payloads; ECDH per-pair AES-256-CTRkey +agreement PSKvia for channelsX25519 AES-256-CTR with shared PSK per channel Key ExchangeECDH via X25519 (using Ed25519 identity keys); each node pair derives a unique shared secretStatic pre-shared key (PSK) distributed out-of-band; no per-pair key agreement for channels Direct messages End-to-end encrypted (nodeusing keyper-pair pairs)ECDH keys End-to-end encrypted via PKIX25519 ECDH + AES-CCM (available since firmware 2.3+)v2.5) Infrastructure role Explicit Companion/Repeater/ClientRoom Server separation Router/Repeater/ClientClient/Tracker roles; 13 device roles total Node discovery Advertisement packets (flood or zero-hop) NodeInfo broadcast flood Position sharing In advertisements (optional) Continuous broadcast to channel (configurable interval) Scalability Better at high node counts due to path-based unicast reducing channel utilization Best under ~100 nodesnodes; flooding overhead grows with network size Network mapping App shows routing topology meshmap.net aggregates public data Message storage Room servers (store-and-forward) Store and Forward module (node-based) App ecosystem MeshCore app (iOS/Android) Meshtastic app (iOS/Android/web) Web interface config.meshcore.dev, app.meshcore.nz client.meshtastic.org Firmware update Web flasher at flasher.meshcore.io (USB, no OTA) Web flasher + OTA via app Community size Smaller, more technical Larger, more mainstream Primary hardware T114, RAK4631, T-Beam v1.2+ (SX1262 required) All of the above + many more (supports SX1276, SX1262, and others) License Open source (github.com/meshcore-dev) Open source (github.com/meshtastic)

When to Choose MeshCore

MeshCore is the better choice when:

  • You are buildingBuilding dedicated network infrastructure — repeaters on towers, rooftops, or hilltops where the explicitpath-based routing architecturereduces payschannel dividends.congestion.
  • Your community already uses MeshCore and you need to integrate with an existing deployment.
  • You want stronger per-pair direct message encryption — ECDH per-pair keys provide better isolation than a shared channel PSK.
  • You are deployingDeploying a large-scale network (100+ nodes) where flooding would createcreates significant channel congestion.
  • You need predictable airtime — path-based routing makes channel utilization more deterministic and easier to plan for.

When to Choose Meshtastic

Meshtastic is the better choice when:

    You want the largest ecosystem of compatible hardware, apps, integrations, and community knowledge. You prioritize the easiest app experience — Meshtastic's app is more polished and feature-rich for end users. You need the broadestwidest hardware compatibility — Meshtastic supports aSX1276-based widerboards rangethat ofMeshCore devices.cannot use. You areneed joiningWiFi/MQTT anbridging existingfor localinternet-connected Meshtastic network — interoperability with your community is paramount.nodes. Your deploymentcommunity isor smallerregion inalready scalehas (underan ~100established nodes)Meshtastic wherenetwork. floodingYou overheadneed isTAK/ATAK manageable.integration or other Meshtastic-specific integrations. You prefer a larger community and more third-party tooling.

    Interoperability

    Sources:

    MeshCore andpacket format documentation (github.com/meshcore-dev/MeshCore), Meshtastic cannotdocumentation interoperate. They use different packet formats, different frequency defaults, and fundamentally different routing protocols. A MeshCore node cannot communicate with a(meshtastic.org), Meshtastic nodeprotobufs even when operating on the same frequency band — the packets are simply not understood by the other protocol's firmware.(github.com/meshtastic/protobufs)

    However, the two protocols can coexist: some operators run both, with separate nodes for each protocol, on different LoRa channels within the same frequency band. This allows a single operator to participate in both communities simultaneously.

    Community Overlap

    Despite the technical differences, there is significant community overlap between MeshCore and Meshtastic operators. Many people run both. Understanding one protocol's design choices makes it much easier to understand the other — the fundamental LoRa physics, antenna theory, channel planning, and deployment considerations are identical. This wiki covers both protocols, and knowledge is shared freely across both communities.