// guide · meshcore

MeshCore IDs & avoiding collisions

Guide · updated June 2026

Every MeshCore repeater is known on-air by the first byte(s) of its Public ID. What 1-, 2-, and 3-byte IDs mean, what talks to what, why IDs collide, and how to pick a clean one.

Will it still talk? Byte settings & compatibility

First, the question everyone asks: does your byte setting have to match the other node’s? Almost never — byte size is about ID detail, not whether a link exists. The real gate is firmware version. Two knobs people mix up:

  • Companion (the sender) sets the hash size stamped on every message it originates (app → Settings → Experimental Settings, v1.41.0+).
  • Repeaterset path.hash.mode only sizes its own adverts, not what it forwards.

Every repeater on firmware v1.14.0+ forwards all three sizes. Older ones forward only 1-byte and silently drop 2- and 3-byte packets — so a multi-byte message needs every repeater in its path on v1.14.0+.

Message size (set by sender)Path all v1.14.0+Any pre-1.14 in path
1-byte (default)✓ Delivered✓ Delivered
2-byte✓ Delivered✗ Dropped
3-byte✓ Delivered✗ Dropped

Two companions on different settings? Each message rides at the sender’s size — the receiver’s setting is irrelevant — so a 1-byte and a 3-byte companion can be one-sided where older repeaters remain:

SenderRides asGets through?
1-byte companion1-byte✓ Always — reaches everyone
3-byte companion3-byteOnly if every repeater in the path is v1.14.0+ — otherwise ✗ dropped

Why not 3-byte everywhere? Bigger hash = fewer hops: ~64 at 1-byte, ~32 at 2-byte, ~21 at 3-byte.

RF Lab convention: companions on 1-byte (reaches every repeater, most hops); repeaters on 3-byte (set path.hash.mode 2) for clean, collision-free map IDs. A repeater’s mode only touches its adverts, so it never blocks 1-byte traffic.

Public IDs, hops & byte modes

Every repeater has a unique Public ID (from its public key). To keep packets small, a repeater stamps only the prefix of that ID as it relays — that stamp is a hop, and the chain of hops is the packet’s path. How many bytes of prefix (1, 2, or 3) is the hop hash mode — the whole story behind collisions. A byte is two hex digits:

ModePrefixUnique IDsSet withBest for
1-byte (default)2 hex — e.g. A1254 (01FE)defaultsmall, stable regions
2-byte4 hex — e.g. A1B265,536set path.hash.mode 1growing regions
3-byte6 hex — e.g. A1B2C316.7 millionset path.hash.mode 2large / dense regions

More bytes = a sliver more airtime, far fewer clashes. Needs firmware v1.14.1+.

Collisions — and why they fix themselves

A collision is two different repeaters landing on the same hop ID. With only 254 one-byte IDs, a growing region will hit it — and then the network can’t tell which repeater actually carried a packet. That’s a data-integrity problem, not just cosmetic.

It mostly fixes itself: once both colliding repeaters go multi-byte, AB vs AB becomes AB12 vs AB9F — distinct again. MeshMapper re-evaluates as hop bytes update and restores the repeaters automatically. The one requirement: both must upgrade.

Pick a clean ID with MeshMapper

MeshMapper shows which IDs are taken: MeshMapper → Region Info → Repeater List → Repeater ID Usage — a grid of every first byte (00FF), color-coded:

  • Available — no repeater uses this ID
  • Deployed — one or more non-conflicting repeaters
  • Conflict — a 1-byte repeater clashes with multi-byte ones
  • Reserved — firmware-reserved (00 and FF)
MeshMapper Repeater ID Usage grid — the first byte of every Public ID, color-coded green/blue/red/gray
The Repeater ID Usage grid in MeshMapper (Region Info → Repeater List). Open it live →

Click a cell to see who holds that ID and their byte modes; a 1-Byte / Multibyte tab switches address spaces.

  1. Small, stable region? Grab a green cell

    Pick an available (green) first byte that isn’t deployed — a 1-byte ID is fine.

  2. Growing, or seeing red? Go multi-byte

    Update to v1.14.1+, then on the repeater run set path.hash.mode 1 (2-byte) or set path.hash.mode 2 (3-byte) and reboot.

  3. Re-check the grid

    You should show as a clean, conflict-free entry; red collisions clear as the others upgrade too.

Running a repeater here?

Check your ID on MeshMapper, then compare notes with the operators in #meshcore.