Tools / MeshCore USA: settings, FCC rules and getting on air

MeshCore USA: settings, FCC rules and getting on air

How to put a MeshCore LoRa radio on a US mesh: the settings US meshes use, what the FCC's Part 15 rules mean for power on 902 to 928 MHz, and a checker for your radio, cable and antenna.

Radiated power

Use what your device's FCC grant covers
From the antenna's data sheet
0 for an antenna fitted straight to the radio
EIRP––
Field strength at 3 m––
Setting for 50 mV/m––

The field strength is a free-space estimate, √(30 × EIRP) ÷ 3 m, compared with the §15.249 limit of 50 mV/m at 3 m (about 0.75 mW EIRP). It's a guide only: compliance comes from the device's FCC grant and test report, not from this sum.

Time on air

Sent in front of every channel message
For a repeater, include what it forwards
0 as you send it. One more per repeater
Scope
Packet size––
Time on air––
Share of the hour––
Packets that fit in 6 minutes–10% of an hour

Time on air uses Semtech's LoRa formula with MeshCore's framing from its firmware: explicit header, CRC, and a 32-symbol preamble at SF8 and below (16 above). The packet is a channel text message: header, optional 4-byte scope code, path, channel hash, 2-byte MAC and the text encrypted in 16-byte blocks.

US settings at a glance

Preset in the appUSA/Canada (Recommended)
Frequency910.525 MHz
Bandwidth62.5 kHz
Spreading factorSF7
Coding rateCR5, shown as 4/5 in some apps
Band902 to 928 MHz (unlicensed, FCC Part 15)
Licence neededNo, but the radio's FCC authorization sets what's legal

These are the values in the MeshCore FAQ. All four have to match your local mesh, and a few regional meshes use different settings, so check with your local group. After flashing, check the frequency, as a fresh install may start on another region's default.

What the FCC rules mean

MeshCore in the US runs unlicensed under FCC Part 15, in the 902 to 928 MHz band. Part 15 has more than one set of rules for this band, and which one applies decides how much power is legal. Narrow-band MeshCore doesn't fit the one most people assume.

RulePower allowedDoes narrow MeshCore fit?
§15.247 digital modulation1 W conducted, with up to 6 dBi antenna gainNo: needs a 6 dB bandwidth of at least 500 kHz, and MeshCore uses 62.5 kHz
§15.247 frequency hopping1 W with at least 50 hopping channelsNo: MeshCore stays on one frequency
§15.24950 mV/m at 3 m, about 0.75 mW EIRPYes, but the limit is very low

So the "1 watt in the 915 MHz band" you'll often read about applies to wideband or hopping systems, not to a fixed 62.5 kHz signal. A radio's FCC ID covers the modes and power it was tested in, which may not include MeshCore's narrow mode at full power. Ask the manufacturer what its FCC grant covers for the firmware, mode, antenna and power you plan to use. Some publish it: NoDak Mesh, for example, lists one 1 W booster as FCC-certified to 290 mW.

Whatever the power, Part 15 devices mustn't cause harmful interference and have to accept any they receive (§15.5). There's no US duty cycle limit for this mode, but everyone shares the channel, so keep adverts and test traffic light. The firmware's default airtime budget is 50% of each hour, and set dutycycle 10 on a repeater cuts it to 10% (set af 9 before firmware 1.15).

Licensed hams: 902 to 928 MHz is also the 33 cm amateur band, where Part 97 allows more power. But Part 97 bans messages encoded to hide their meaning (§97.113), and MeshCore encrypts channel and direct messages, so ordinary MeshCore use belongs under Part 15.

Working out your EIRP

Radio20 dBm Cable− 1 dB Antenna+ 5 dBi EIRP24.0 dBm about 250 mWEIRP = output − loss + gain (dBi)
Example: a 20 dBm radio, 1 dB of coax and a 5 dBi antenna.

EIRP is the radio's output in dBm, minus cable and connector loss, plus the antenna gain in dBi. The checker at the top of the page also converts it to field strength at 3 m, the figure §15.249 uses. Treat that as a guide: whether a device complies comes from its FCC test report, not from this sum.

What you need

  • A MeshCore-supported LoRa radio for the 915 MHz band. Look up your board, including its version number, in the MeshCore web flasher. 868 MHz and 433 MHz versions of the same board won't work in the US.
  • An antenna made for 915 MHz, of a type and gain the radio's FCC grant allows. Never power a radio up without its antenna.
  • A phone with the MeshCore app by Liam Cottle (links on meshcore.io), or a browser for the web app.
  • A USB data cable and a computer with Chrome or Edge, if you need to flash the firmware yourself.

Look at the MeshCore map and look for a local group before you buy. Two radios always work between themselves, so a pair is a good start if your area is quiet.

Getting on air

  1. Flash the companion firmware. In the flasher, pick your exact board, a stable release and Companion Radio (BLE). Use a data cable, not a charge-only one. Some boards need a button held while plugging in.
  2. Pair the app. Turn on Bluetooth, allow the app's nearby-device permission, and pick your radio. Radios with a screen show a PIN; screenless ones use 123456 by default.
  3. Choose the preset. Select USA/Canada (Recommended), then check 910.525 MHz, 62.5 kHz, SF7 and CR5 have stuck. Set the transmit power to what your device's authorization covers.
  4. Name your node. Short and recognizable, but not your address. Decide whether to include your position in adverts.
  5. Set your local scope and path hash size. Ask your local mesh. Larger meshes, such as in the Pacific Northwest, have moved to bigger path hashes.
  6. Send an advert, then a short message on the Public channel or your local channel, and wait for a reply. Try outdoors first.

How messages get through

Your phone only talks to your own radio, over Bluetooth. The radio does the long-distance part on 910.525 MHz, and repeaters pass messages on. Your own radio, called a companion, never repeats anyone else's traffic.

First message: flood After that: direct path YouFriend YouFriend Every repeater that hears it repeats it Only the learned route repeats it
Messages flood the first time. Once a route is known, direct messages use it.

The first message to someone floods: every repeater that hears it sends it on once. Their radio sends the route back with its acknowledgement, and later direct messages travel only along that path. If a repeater on the route goes off air or someone moves, the stored path stops working; resetting the path in the app makes the next message flood again.

  • Heard repeats on a channel message counts repeaters your radio heard passing it on. It shows the message got out, not that anyone read it.
  • Delivered on a direct message means the other radio acknowledged it. A missing acknowledgement doesn't always mean the message was lost.
  • Each repeater adds its path hash (1, 2 or 3 bytes). 1 byte is the firmware default; bigger meshes use 2 or 3 bytes to stop two repeaters sharing an ID, which needs firmware 1.14 or later.

Channels, direct messages and rooms

TypeWho can read itGood for
Public channelAnyone with a MeshCore radioSaying hello and first tests
Hashtag channelAnyone who knows the name, because the key is made from itLocal and topic chat
Private channelAnyone you give its random key or QR code toA family or club group
Direct messageOnly the contact it's sent toOne-to-one messages
Room serverMembers of that roomMessages kept for people to read later

They all share the one radio channel. Messages are encrypted, but your node name, any position you advertise, and when you transmit are visible. Channel messages hold up to 160 bytes including your name, and aren't stored for people who are offline unless you use a room server. For direct messages, both radios need each other as a contact, swapped by advert, QR code or public key. Keep your private key and backups to yourself.

Scopes

A scope is a region name added to flood messages so repeaters know how far to carry them. US meshes each choose their own names, and some block messages with no scope. Since firmware 1.15 you can set a default scope for your companion (in the app's Experimental settings, app 1.43 or later). Ask your local mesh for the exact name, or use the app's Discover Regions tool to see what nearby repeaters report.

Antennas, height and range

Repeater on a hill CoveredCovered Radio shadow Coverage follows the terrain, not a circle
Hills and buildings shape coverage far more than power does.

Height and a clear view make more difference than anything else. Hold or mount the antenna vertically, clear of your body and any metal. At 915 MHz, thin coax loses a lot, around 2.5 dB in 5 m (16 ft) of RG58, so keep cable short or use low-loss coax. Stick to antennas your device's FCC grant lists, and recheck your EIRP if you change it.

Putting up a repeater

  • Talk to your local mesh first. A repeater in the wrong place adds traffic without adding coverage.
  • Flash the Repeater firmware for your board, set the US preset, and change the admin password before it goes up.
  • Use a power setting and antenna your device's authorization covers. Set the scopes and path hash size the local mesh uses, and consider set dutycycle 10 to keep a busy site's airtime down.
  • For solar, size the panel and battery for your worst winter month, and allow for snow, heat and shade.

When it doesn't work

ProblemThings to check
App can't find the radioBluetooth and nearby-device permissions, that it's the BLE companion firmware, and that no other phone is connected. Restart both before resetting anything.
Computer won't see the radio to flash itA different USB cable, another port, the bootloader button, and that nothing else has the serial port open.
Nothing heard at allThe four radio settings, especially the frequency after flashing, the antenna, and your position. Check the map for nearby repeaters.
You hear others but get no repliesYour scope, power setting and antenna. A distant repeater you can hear may not hear you.
Channel messages go nowhereThe exact hashtag spelling or the private key, and the local scope.
Direct messages don't deliverThat you've both saved each other as contacts. Then reset the path so the next one floods.

MeshCore isn't an emergency service and nobody is guaranteed to be listening. In an emergency, call 911.

Sources

Checked November 2026. This is general information, not legal advice. For the UK, see the MeshCore UK guide.

Questions

What frequency does MeshCore use in the USA?

910.525 MHz, with the USA/Canada (Recommended) preset: 62.5 kHz bandwidth, spreading factor 7 and coding rate 5.

Do I need a licence for MeshCore in the USA?

No. It runs unlicensed under FCC Part 15 in the 902 to 928 MHz band, within whatever the radio's FCC authorization covers.

Can I run MeshCore at 1 watt in the USA?

Not just because the band allows 1 W. That limit in §15.247 is for systems at least 500 kHz wide or that hop across 50 channels. Narrow 62.5 kHz MeshCore meets neither, so check what your device's FCC grant covers.

Can hams use MeshCore under Part 97 for more power?

Not for normal use. Part 97 bans messages encoded to hide their meaning, and MeshCore encrypts channel and direct messages.

Will an 868 MHz radio work on US MeshCore?

No. US meshes use 910.525 MHz, so you need a radio built for the 915 MHz band.