Advanced Configuration

Path Hash Modes (MeshCore)

Path Hash Modes (MeshCore)

Path hash modes control how repeaters identify themselves in routing path headers within MeshCore packets. This feature is available in recent MeshCore firmware versions. Check your firmware release notes for version-specific availability.

Mode Comparison

ModeBytes per HopMax HopsUnique IDsCLI Setting
1-byte164256set path.hash.mode 0
2-byte23265,536set path.hash.mode 1
3-byte32116,777,216set path.hash.mode 2

Mode 0 (1-byte) is the default.

Recommendation

Use 2-byte mode (set path.hash.mode 1) for most North American community meshes (a common community recommendation, e.g. NodakMesh).

Mixing path hash modes within a single mesh requires all in-path repeaters to be running firmware ≥ 1.14. On networks where some repeaters run older firmware, keep every device on the same (default) mode.

Configuration Steps

  1. Connect to the repeater via USB serial (115200 baud) or Bluetooth
  2. Set the desired mode:
    set path.hash.mode 1
  3. Broadcast updated hash to the network:
    advert

App Access

In recent companion-app versions (around v1.41.0+; check current release notes, as the menu location may change between versions), path hash mode can also be adjusted under:

Settings → Experimental Settings

Note that "Experimental Settings" must be enabled in the app before this option appears.

Network-Wide Consistency

All repeaters and nodes on the same network segment do not need to use the same path hash mode - mode is a per-device setting affecting how that device encodes its own ID in path headers. However, for consistent diagnostics and network analysis, aligning all devices to the same mode simplifies troubleshooting, and mixing modes requires all in-path repeaters to be on firmware ≥ 1.14 (see above).

Regional Scoping with ISO Codes (MeshCore)

Regional Scoping (MeshCore Region Filtering)

MeshCore region scoping (region filtering) lets repeater operators tag flood traffic with a region so that repeaters only forward scoped packets within their configured region, reducing cross-country network congestion. A region is not an ISO 3166-2 code and there is no built-in standard, code table, or official registry inside the firmware. A region is simply an arbitrary, operator-chosen plain name that the firmware SHA-256 hashes into a 2-byte transport code carried in the packet header; repeaters match on that hash.

Communities often adopt ISO-3166-2-style strings such as us or us-co purely as a naming convention. These work only because they are valid arbitrary names - the firmware never interprets them as ISO codes, validates them against any standard, or enforces a country/state hierarchy. Any agreed string works equally well.

How It Works

This lets a local community (for example, a Colorado group) agree on a region name and keep its scoped traffic within that region instead of flooding the wider mesh.

Configuration Notes

CLI Configuration Example (Colorado)

The names below (us, us-co) are arbitrary example strings, not standardized codes. Defining a region is not enough on its own - you also issue region allowf (allow flood) for each region to actually permit scoped flood forwarding, then region save:

region put us
region put us-co us
region allowf us
region allowf us-co
region save

This configures the repeater with two arbitrary regions (us and us-co) and enables flood forwarding for both. The names carry no inherent geographic meaning to the firmware - they match only because every participating operator uses the exact same strings.

Example Region Names (Convention Only)

The strings below are examples of arbitrary names a community might agree to adopt. They are not ISO 3166-2 codes recognized by MeshCore and are not validated by the firmware - they work only among networks that all agree to use them. Pick any short, agreed name for your local mesh; everyone in scope must use the identical string.

Example NameCould Represent
usUnited States (broad)
us-coColorado
us-ndNorth Dakota
us-orOregon
us-waWashington
caCanada (broad)
us-dfwDallas/Fort Worth metro
us-baySan Francisco Bay Area metro
us-atlGreater Atlanta metro

Agreeing on Region Names

There is no central registry built into MeshCore. Choosing region names is a coordination exercise: operators discuss in whatever forums they use (or even over the mesh itself) and come to a consensus on how to divide up their geography. Whatever string you settle on, every repeater that should share that region must be configured with the exact same name.

Third-party community sites such as regionmesh.com publish suggested naming conventions to help operators coordinate, but these are independent community resources, not official MeshCore registries - the firmware neither knows about nor enforces them.

After Changing Region Configuration

After saving region changes, run advert to broadcast the updated configuration to the network immediately rather than waiting for the next scheduled advertisement.

Frequency Coordination and Channel Planning

When multiple independent mesh networks coexist in the same geographic area, frequency and channel coordination prevents interference and allows for intentional interconnection where desired. Note: this is voluntary self-coordination among unlicensed Part 15 operators, not formal frequency coordination. You cannot reserve a frequency, and channel choices are limited to the fixed slots your preset bandwidth defines within 902-928 MHz.

The 902-928 MHz Band Structure

In the United States, the 902-928 MHz ISM band is 26 MHz wide. LoRa channel bandwidth in Meshtastic ranges from 125 kHz (SF12 Long-Slow) to 500 kHz (ShortTurbo); the common LongFast/MediumFast presets use 250 kHz. Because each transmission occupies only part of the band, many slots can coexist. Note: FCC 15.247(a)(2) digital modulation requires a minimum 6 dB bandwidth of 500 kHz, so compliance for the narrower LoRa bandwidths depends on the device's specific FCC type acceptance. Dense networks in the same area can still cause packet collisions if they share the same frequency slot.

Meshtastic Channel Numbers

Meshtastic derives its center frequency from a frequency-slot number and the preset bandwidth. Slot spacing equals the preset bandwidth — 250 kHz for LongFast (104 US slots), and 125 kHz only for the 125 kHz presets — so 250 kHz is the default spacing, not 125 kHz. Slots span the whole regional band (0-103 for US LongFast); when the slot is left at default it is chosen by hashing the channel name, not by a simple channel index. Note that these frequency slots are distinct from the up-to-8 logical channels (name/PSK), which all share the same frequency.

# US LongFast (250 kHz BW) default frequency:
# 906.875 MHz, which is slot 20 — selected by hashing
# the default channel name "LongFast" (not "channel 0").
#
# Raw formula for an explicit slot n (1-indexed):
# freq = 902.0 + 0.125 + (n-1)*0.25 MHz

# Set the frequency slot explicitly via CLI:
meshtastic --set lora.channel_num 3

MeshCore Frequency Selection

MeshCore uses fixed frequency presets. One commonly used US/Canada preset is 910.525 MHz (as of 2026-06-08; verify against current MeshCore release/docs, as there are multiple US presets at different SF/BW and frequencies — there is no single fixed USA/Canada frequency). Networks in the same area using MeshCore should coordinate to avoid using the same frequency if they don't want to interoperate.

Avoiding Interference with Other Users

The 902-928 MHz band is shared with ISM devices, FHSS systems, baby monitors, cordless phones, and other LoRa networks. If you observe high packet error rates that don't correspond to weak signal strength, interference from another source may be the cause. Use an SDR (Software Defined Radio) to scan the band and identify active signals.

Multi-Network Coordination

When two community networks exist in overlapping geographic areas, coordinate:

  1. Different channel keys with same frequency - Networks stay logically separate even if they occupy the same frequency. Because they share the same frequency slot, they share airtime and can still collide; acceptable for low-traffic networks.
  2. Different frequencies + different keys - Minimizes collisions between your two networks. Note: 902-928 MHz is unlicensed shared ISM spectrum (FCC Part 15); no operator owns a frequency and you have no legal protection from interference by other ISM/FHSS devices. Different center frequencies reduce, but do not guarantee elimination of, collisions. Also note that nodes on different frequency slots cannot hear each other.
  3. Intentional bridging - A dual-radio or dual-channel node that bridges the two networks. Both networks benefit from the other's coverage.

Documentation for Multi-Network Areas

Maintain a local frequency coordination document shared between network operators:

NetworkFrequencyPresetCoverage AreaContact
Portland Mesh906.875 MHzLongFastMetro PDXops@pdxmesh.net
Columbia Gorge Mesh907.125 MHzLongFastHood River/The Dallesk7xyz@arrl.net