NJ Mesh configuration

Match these settings so your device can talk to the rest of the network. Start with the USA/Canada preset in the MeshCore app, then adjust as shown below.

Radio configuration

Companion Device

PresetUSA/Canada (Recommended)
Frequency910.525 MHz
Bandwidth62.5 kHz
Spread Factor7
Coding Rate5 (or 8 for weak signals)

Repeater

PresetUSA/Canada (Recommended)
Frequency910.525 MHz
Bandwidth62.5 kHz
Spread Factor7
Coding Rate8
Tip: Select the USA/Canada preset first β€” it fills in the Frequency, Bandwidth, and Spread Factor automatically. You only need to touch the Coding Rate afterward. The preset name will change to "Custom" once you do, and that's expected.

These settings sit inside the license-free 902–928 MHz ISM band in the US β€” no amateur radio license is required to use a MeshCore companion or repeater, as long as your device stays within legal power limits for that band.

2-byte path hashes

This applies to repeaters and companions both β€” the size of the hash affects how reliably your messages get routed and identified across the mesh.

Every MeshCore device identifies itself using a path hash that other nodes and tools like MeshMapper use to tell devices apart. By default, everything uses a 1-byte hash β€” just 254 usable combinations (hex 01–FE). That's fine for a small mesh, but as NJ Mesh grows, different repeaters (and companions) inevitably end up sharing the same 1-byte ID, causing routing ambiguity and making it harder for mapping and diagnostic tools to tell devices apart.

Switching to a 2-byte hash expands that to 65,536 possible combinations β€” collisions become extremely unlikely.

Before you start: Your device needs firmware version 1.14 or newer β€” this feature isn't available on older versions. Pre-1.14 repeaters will silently drop 2-byte packets, so only switch your companion's message path hash once the vast majority of repeaters in your area have updated. Repeater adverts are lower-risk to switch early since they don't affect message delivery the same way. Ask on Discord if you're not sure where NJ Mesh currently stands.

On a Repeater

1

Connect to your repeater

Plug in via USB serial and open a terminal, or connect through Remote Admin in the MeshCore app if you're not on-site.

2

Set it to 2-byte

Type set path.hash.mode 1 and hit enter. (1 = 2-byte hash. 0 = default 1-byte. 2 = 3-byte, for very large regions.)

3

Reboot and advertise

Type reboot, then trigger a flood advert now instead of waiting for the next automatic cycle so it "upgrades" on MeshMapper right away.

On a Companion

1

Open the MeshCore app

Requires app version 1.41.0 or newer, and your device running firmware 1.14+.

2

Go to Experimental Settings

Tap the gear icon (Settings) β†’ scroll down to Experimental Settings.

3

Set your path hash size

Change "Default Path Hash Size" to 2-byte. This controls the hash size your outgoing channel and direct messages use β€” so unlike a repeater's advert setting, it does affect whether older repeaters can relay your messages.

If you're setting up a brand-new repeater, check the coverage map's repeater ID grid first to see which 1-byte IDs are already crowded nearby.

Add your repeater to the Internet Map

No CLI needed β€” this is a couple of taps right in the MeshCore app. Just know this only covers the official MeshCore map β€” our own coverage map runs on separate data (see below).

1

Open your repeater's contact card

In the MeshCore app, go to your contact list and tap on your repeater.

2

Tap Share

Look for the Share option on the repeater's page.

3

Tap "Add Repeater to Internet Map"

That's it β€” this uploads your repeater's public key and location straight to the official MeshCore map.

4

Check the map

Give it a few minutes, then look for your repeater on the official MeshCore Map.

Note: Your repeater needs a location set (latitude/longitude) for this to work β€” most repeaters have this configured during initial setup. If your repeater doesn't show a location on its contact card, ask on Discord for help setting it.
Different map, different data

This won't get you on our coverage map (MeshMapper)

The steps above only add your repeater to the official MeshCore Map β€” it does not automatically show up on our own NJ Mesh coverage map, which runs on MeshMapper. MeshMapper builds its coverage data from wardriving β€” one of our community observers needs to physically pick up your repeater's advert while driving, walking, or biking nearby before it appears there. There's nothing you need to do on your end besides making sure your repeater is broadcasting adverts (it does this automatically) β€” just give it time for an observer to pass through your area, or check out how to wardrive yourself and speed things up.

Updating firmware over the air (OTA)

Once a repeater is bolted to a roof or up a tower, you don't want to climb back up every time a new MeshCore version drops. OTA solves that β€” but it takes a little prep.

OTA (Over-The-Air) lets you push new firmware to a repeater remotely instead of physically plugging it in with a USB cable. On nRF52 boards (RAK4631, Heltec T114, Seeed XIAO, etc.) this happens over Bluetooth. On ESP32 boards like the Heltec V4, it happens over WiFi instead.

The bootloader is the tiny program that runs the instant your board powers on, before MeshCore itself loads β€” and it's also what accepts new firmware during an update.

Do this before you mount it: Stock nRF52 bootloaders handle OTA badly β€” a failed update can leave a repeater with no valid firmware and no easy way to recover it short of climbing up with a laptop. Flash the community OTAFIX bootloader over USB while the board is still on your bench, before it ever goes up on a roof or tower.
nRF52 boards

Flash OTAFIX first

Connect the board via USB, double-press the reset button to enter UF2 mode, and drag the OTAFIX .uf2 file onto the drive that appears. It's a one-time, two-minute job.

After that, OTA updates over Bluetooth become reliable β€” and if one ever fails mid-update, the board falls back into Bluetooth DFU mode automatically so you can just retry over the air instead of physically recovering it.

ESP32 boards (Heltec V4, etc.)

WiFi-based OTA

From the node's admin command line, run start ota. The Repeater Admin page in the app will then show a URL β€” connect to the node's WiFi hotspot, open that URL in a browser, select the new firmware, and press Start.

Heads up: OTA is slower than a USB flash and not supported on every device type. Grab the correct OTA firmware build for your board from the Web Flasher, and after any update, check ver and get bootloader.ver in the CLI to confirm it actually took.

Settings applied? Join the channels.

πŸ’¬ View Channels