Settings

Everything that changes what a run does, grouped by what it affects.

The Configuration window's overview: scope, links, randomness, and the run profile

Radio presets#

A preset is an agreed set of LoRa parameters for a territory, taken from the MeshCore community's own list. It is baked in rather than fetched, so the workbench works offline and a saved scenario keeps the table it was built with.

presetMHzkHzSFCR
Australia915.8250104/5
Australia (Narrow)916.57562.574/8
Australia (Mid)915.07512594/5
Australia: SA, WA923.12562.584/8
Australia: QLD923.12562.584/5
Brazil923.12562.584/8
EU/UK (Narrow)869.61862.584/8
EU/UK (Deprecated)869.525250114/5
Czech Republic (Narrow)869.43262.574/5
EU 433MHz (Long Range)433.65250114/5
EU 433MHz (Narrow)433.6562.584/8
Netherlands869.61862.574/5
New Zealand917.375250114/5
New Zealand (Narrow)917.37562.574/5
Portugal 433433.37562.594/6
Portugal 868869.61862.574/6
Switzerland869.61862.584/8
USA/Canada (Recommended)910.52562.574/5
Vietnam (Narrow)920.2562.584/5
Vietnam (Deprecated)920.25250114/5

EU/UK (Narrow) is the default. Set one with radio.preset, or per node in the Inspector.

Spreading factor is the dominant setting: each step up roughly doubles airtime and buys about 2.5 dB of link budget. A network on SF11 is slower and reaches further than the same network on SF8, and the two are not interoperable.

Provisioning#

What each node is told when its firmware starts. These are workbench settings rather than firmware settings: they decide which CLI lines are issued at boot.

settingwhat it issuesdefault
set name to the node's name on the mapset name <name>on
set the node's positionset lat / set lonon
set the clock, the same on every nodetime <epoch>on
define a transport region from the study arearegion put / allowf / saveoff
and make it this node's default scoperegion default <name>off
cap advert hopsset flood.max.advert <n>on, 32
stagger node start timesspreads boot across a windowon

The clock comes from the scenario, not the host. MeshCore timestamps messages and judges freshness by them, so a mesh whose nodes disagree about the time behaves differently. Taking it from the scenario keeps runs reproducible.

Regions are off by default because they change which packets a node relays, and therefore change results. A node that already carries observed regions is always configured with them regardless of this switch.

Per node#

fieldnotes
kindrepeater, advanced repeater, companion, room server, SDR observer, emitter
positionlatitude and longitude; uncertainty is carried from an import
height above groundmatters more than power on most links
transmit powercapped by the board profile; a scenario asking for more is reported
boardsets antenna gain, feedline loss, noise figure, battery and panel
radiofrequency, bandwidth, spreading factor, coding rate
firmware role and versionwhich application, and which build
regions and default scopewhat it relays, and what it scopes its own traffic to
forward flood traffic for any regionregion allowf *; a fresh node already allows unscoped floods and the wildcard never matches a scoped one, so this changes nothing unless a node was told region denyf *
emitter dutyfor interferers only: what share of the time it is keyed

Simulation#

settingeffect
seedthe run's randomness. Same seed, same scenario, same result
speedhow fast simulated time advances relative to the wall clock
stepthe engine's tick, 10 ms by default
real firmwarewhether nodes run MeshCore or inject traffic directly
excess path lossa flat dB penalty, for calibrating against a known-bad reality

Experiments#

settingeffect
armswhat varies: firmware version, loop detection, path hash size, CAD mode
seedshow many times each arm runs
senderswho originates; spread picks separated nodes rather than neighbours
scopethe transport scope the burst is sent on, written #sco
run forsimulated milliseconds per run
message sizepayload bytes; 0 means a short label

Energy#

Off by default, and not fully implemented yet: when on, a battery and panel are sketched from the board profile, but the numbers have not been validated against anything real. Do not use them for siting decisions.

Automation#

settingeffect
let agents drive this workbenchopens the control socket at $XDG_RUNTIME_DIR/meshbench.sock
compute the link matrix in the backgroundkeeps reachability current while editing
MESHBENCH_CARTO_KEY in the environmentunlocks the CARTO basemaps and makes the dark map the first-run default; without it they answer every tile with an API-key watermark

The control socket is how every scripted run, the test runner and the MCP server drive the application. See the control socket reference.

MeshBench documentation. Built from the running application, not from mock-ups. Screenshots are window-only captures; see CLAUDE.md for the rule that keeps them current. Edit this page.