Configuration Flashing firmware, presets, radio settings, and advertisements. Flashing Repeater Firmware MeshCore-capable LoRa boards typically ship without MeshCore firmware (blank, vendor test firmware, or sometimes Meshtastic), so flashing MeshCore repeater firmware is required. This can be done entirely in a web browser - no software installation needed. Using the MeshCore Web Flasher Connect your device to your computer via USB Open the MeshCore Web Flasher (flasher.meshcore.io, as of June 2026) in Chrome or Edge (a Web Serial compatible browser is required; Firefox and Safari do not support it) Select your device type from the list Select the Repeater firmware variant Click Flash and wait for the process to complete The device will reboot automatically when done After flashing Once flashed, connect to the device using the MeshCore app (via Bluetooth) or the MeshCore serial console (via USB) to complete configuration. A newly flashed repeater is not inert - it boots on the firmware default frequency (869.525 MHz, the EU default) and will transmit on that default until changed. You MUST set the correct frequency/preset for your region before deploying, both for legal operation and so the repeater is visible to your network. For the USA and Canada, set the regional preset (910.525 MHz / SF7 / BW 62.5 kHz / CR 5). Keeping firmware updated MeshCore releases updates periodically with performance improvements and bug fixes. For a permanently deployed repeater, periodic firmware updates ensure you benefit from these improvements. The web flasher offers current official releases; select the latest stable build unless you have a reason to choose otherwise. Radio Settings and Presets Correct radio settings are essential for your repeater to interoperate with other nodes. The simplest and most reliable approach is to use the built-in preset. Use the USA/Canada preset In the MeshCore app, navigate to Choose Preset and select USA/Canada (Recommended). This preset automatically applies the correct frequency plan, bandwidth, spreading factor, and coding rate for the North American MeshCore network. Do not manually set individual radio parameters unless you understand their effects and have a specific reason to deviate. Incorrect settings will make your repeater invisible to the rest of the network. What the preset sets For reference, the USA/Canada preset resolves to settings within the 902 - 928 MHz band (commonly referred to as "915 MHz hardware"). As of the October 2025 "narrow" migration the US/Canada default preset is 910.525 MHz / SF7 / BW 62.5 kHz / CR 5. These values can change with firmware updates, so the authoritative step is to read the actual values from the app or via the serial CLI ( get radio) and match the network you intend to join. Selecting the correct US/Canada region preset is also a compliance control: it confines the radio to the 902 - 928 MHz ISM band authorized under 47 CFR 15.247. Running a non-US preset (for example the EU 868 MHz default) on US hardware can place transmissions outside the authorized band. Individual parameter reference Parameter Recommended Notes Frequency Set by preset 902 - 928 MHz (US ISM band). Do not use EU 868 MHz hardware on the US network. Bandwidth (BW) Preset default Narrower BW = longer range, slower speed. Leave at preset default for network compatibility. Spreading Factor (SF) Preset default Higher SF = better range, lower throughput. Keep at preset default. Coding Rate (CR) Preset default Higher CR = better error correction, more overhead. Keep at preset default. Flood hop maximum Default (64) MeshCore uses path-based routing, not a per-message hop-limit. The firmware flood hop maximum ( flood.max) defaults to 64; you can cap flood propagation lower with set flood.max <0-64>. In practice 3 - 5 hops spans substantial distances and delivery reliability falls off beyond that. The default is sufficient for most deployments. Public vs. private channel Configure your repeater on the Public channel so all network participants can read messages relayed through it. A repeater relays mesh traffic (flood adverts, public-channel messages, and routed direct messages) regardless of channel — it forwards packets without decrypting them. Private or custom channel keys only determine which nodes can decrypt those messages, not which repeaters forward them. Advertisements and Discovery MeshCore repeaters periodically broadcast advertisements - packets that announce the repeater's existence on the network. Other nodes use these advertisements to discover the repeater and include it in their routing decisions. What an advertisement contains The repeater's identity (name and node ID) Geographic position (if configured - optional but useful for network mapping) Public encryption credentials used for routing - specifically, a public key identifying the repeater, which other nodes use to verify and route through it. This key is generated automatically; you do not configure it, and it is safe to broadcast. Advertisement interval The advertisement interval is configurable. The firmware supports a range of roughly 3 to 168 hours, with a default of 12 hours; set it with set flood.advert.interval . In observed community practice, deployments commonly use 6 - 12 hours for fixed infrastructure nodes. Longer intervals reduce radio traffic; shorter intervals help newly arrived nodes discover the repeater faster. Increasing frequency increases power consumption and adds traffic to the network with minimal benefit in a stable deployment. Advertisement propagation: flood vs zero-hop MeshCore advertisements use a binary propagation model - not a numeric hop count. You send either a flood advert or a zero-hop advert: Zero-hop ( advert.zerohop): The advertisement is only visible to nodes within direct radio range. Useful for a local-only repeater. Flood ( advert): The advertisement is propagated by other repeaters across the network, making the repeater discoverable to distant nodes. Use flood mode if you want your repeater to be visible across the wider network. Setting a geographic position Configuring your repeater's latitude and longitude allows it to appear on network maps and helps other operators understand coverage. Use your deployment location coordinates, not your home address. The position is included in flood advertisements and becomes visible to the wider network. Terminal Chat CLI Commands Terminal Chat CLI Below are the commands you can enter into the Terminal Chat client (the companion/serial chat client). These are the Terminal Chat client commands, which differ from the repeater serial-console commands used elsewhere in this book. They are entered bare, with no host-tool prefix. Other pages that show meshcli ... are referring to a separate host-side tool with its own syntax - do not mix the two. For the on-device repeater serial CLI, see the canonical command reference at docs.meshcore.io/cli_commands. set freq {frequency} Set the LoRa frequency. Example: set freq 915.8 set tx {tx-power-dbm} Sets LoRa transmit power in dBm. set name {name} Sets your advertisement name. set lat {latitude} Sets your advertisement map latitude. (decimal degrees) set lon {longitude} Sets your advertisement map longitude. (decimal degrees) set dutycycle {percent} Sets the transmit duty cycle limit (1-100%). Example: set dutycycle 10 for 10%. Note: duty-cycle limiting is a regulatory requirement in the EU 868 MHz band (ETSI), not in the US 902-928 MHz band, where 47 CFR 15.247 uses frequency-hopping / digital-modulation rules instead. US operators are not subject to a duty-cycle cap, but courteous airtime limits still help network health. set af {air-time-factor} Sets the transmit air-time-factor. Deprecated - use set dutycycle instead. time {epoch-secs} Set the device clock using UNIX epoch seconds. Example: time 1738242833 advert Sends an advertisement packet clock Displays current time per device's clock. ver Shows the device version and firmware build date. card Displays your 'business card', for other to manually _import_ import {card} Imports the given card to your contacts. list {n} List all contacts by most recent. (optional {n}, is the last n by advertisement date) to Shows the name of current recipient contact. (for subsequent 'send' commands) to {name-prefix} Sets the recipient to the _first_ matching contact (in 'list') by the name prefix. (ie. you don't have to type whole name) send {text} Sends the text message (as DM) to current recipient. reset path Resets the path to current recipient, for new path discovery. public {text} Sends the text message to the built-in 'public' group channel