Configuring MeshCore companion clients and repeater infrastructure for the Florida Mesh.
Companion nodes are configured in the app. Repeaters and room servers are configured over the CLI. Radio values come from Regional Settings.
Flash from the MeshCore flasher over USB, using Chrome or Edge. Select the board, then the firmware role: companion, repeater, or room server.
Use meshcore.io
The project moved to meshcore.io. meshcore.co.uk is no longer affiliated with the official project.
If your node is paired to your phone, this section plus Channels is the whole setup. Nothing in the repeater section applies to you.
Select the USA/Canada preset, then change the coding rate to 8:
| Setting | Value |
|---|---|
| Frequency | 910.525 MHz |
| Bandwidth | 62.5 kHz |
| Spreading factor | 7 |
| Coding rate | 8 |
Frequency, bandwidth, and spreading factor must match the rest of the mesh exactly. Coding rate does not have to, since the receiver reads it from each packet, but set it to 8 anyway because it makes your own weak links more reliable.
Settings → Experimental → Hop Bytes: 2
Every hop a packet takes is recorded in its path as a short hash of the repeater that forwarded it. At 1 byte there are only 256 possible values, so in a mesh this size two repeaters routinely hash to the same byte, after which routing and telemetry cannot tell which one actually carried the packet. Two bytes gives 65,536 values and makes collisions rare.
The cost is path length: each hop consumes two bytes of a fixed-size path field instead of one, reducing the maximum number of hops a route can record. Florida accepts that trade.
The CLI equivalent is set path.hash.mode 1.
Florida uses:
| Channel | Key | Region Scope | Purpose |
|---|---|---|---|
Public | Built in | General traffic | |
FloridaMesh | e9a7128005b364ae010dd6330d693fa6 | Statewide chat | |
#emergency | Derived from name | Emergency and severe weather traffic | |
#weather | Derived from name | Weather scripts and alerting | |
#testing | Derived from name | Node, script, and bot testing | |
#weekly-mesh-net | Derived from name | Weekly Mesh Net |
Open this page in your phone’s browser and tap a channel name to hand it straight to the MeshCore app, which opens with the name and key already filled in. To add one by hand instead: Public is built in and needs nothing entered, the hashtag channels derive their key from their name, so Add Channel → Join a Hashtag Channel or a QR code is enough, and FloridaMesh is private, so enter its name and key exactly as listed. There is no CLI to add channels.
Region scopes decide which repeaters relay a flood beyond its own area. They are set on repeaters, and companion nodes receive everything regardless, so most operators have nothing to configure here yet.
Florida has not chosen its tags and the naming convention is still moving. See Region Scopes for how they work, the formats under discussion, and the CLI commands.
CLI configuration. Reboot to apply radio changes.
set radio 910.525,62.5,7,8
set flood.advert.interval 12
set path.hash.mode 1
radio sets frequency, bandwidth, spreading factor, and coding rate. The first three must match between two nodes or they cannot demodulate each other; coding rate does not. See Regional Settings.
flood.advert.interval is the number of hours between flood adverts, range 3–168, default 12. Shorter intervals put more advert traffic on the air for every repeater that relays them. advert.interval separately controls local zero-hop adverts, in minutes.
path.hash.mode selects the path hash size: 0 = 1-byte, 1 = 2-byte, 2 = 3-byte. Florida uses 2-byte; see Hop Bytes.
Fixed position, for boards without GPS:
set lat <decimal degrees>
set lon <decimal degrees>
Boards with a GPS module use gps on, gps sync, and gps setloc instead.
get radio
get tx
get path.hash.mode
get flood.advert.interval
ver
get radio returns 910.525,62.5,7,8ver reports the firmware version, so you can confirm the node is running the one you intended