Firmware Updates on Deployed Repeaters
Firmware Updates on Deployed Repeaters
Meshtastic does not support over-the-air firmware updates pushed from another mesh node. Every firmware update requires a physical USB connection to the device. For a repeater deployed on a rooftop, tower, or remote site, this means a site visit. Planning these maintenance windows carefully - and documenting configuration before you go - prevents accidental service outages and preserves network continuity for the community.
Over-the-Air Firmware Update: Not Supported
It is worth stating clearly: there is no mechanism in Meshtastic firmware to push a firmware binary from one mesh node to another. The "OTA" term that occasionally appears in Meshtastic documentation refers to Bluetooth OTA - updating the device firmware via BLE from a smartphone app, not over the LoRa mesh. Even BLE OTA has limited platform support.
The only reliable update path for all supported platforms is USB flashing. Plan accordingly when choosing repeater sites - a location that requires climbing a locked tower or a two-hour drive is a location you will want to update infrequently, so prioritise stability over bleeding-edge firmware on remote infrastructure nodes.
Planning a Maintenance Window
- Notify the community before updating a widely-used repeater. Post in your community channel or MQTT-linked group chat at least 24 hours in advance. Include the expected downtime window and the node name/ID.
- Schedule during low-usage periods - typically overnight or early morning on a weekday.
- Check release notes at
github.com/meshtastic/firmware/releasesbefore updating. Look for breaking changes in configuration format, channel encoding, or protocol version that could prevent the updated node from communicating with older clients. - Do not update all infrastructure nodes simultaneously. Update one node, confirm it reconnects to the mesh and interoperates with other nodes, then proceed to the next.
Exporting Configuration Before the Update
Configuration is not preserved across all firmware versions. Some updates change protobuf field IDs or introduce new mandatory fields, causing the stored configuration to load with default values after the firmware wipe. Always export before touching the device.
# Export current configuration to a JSON file
meshtastic --export-config > repeater_config_backup_$(date +%Y%m%d).json
This produces a JSON file with all channel configurations, device settings, LoRa settings, position, and module config. Store this file in a safe location - version control or your operations shared drive.
Review the exported file before the update and note any values that are not visible in the app UI (e.g. custom channel PSK keys, non-default hop limits, MQTT credentials). These are the settings most likely to need manual restoration if automatic re-import fails.
Flashing Firmware via the Web Flasher
The Meshtastic web flasher at flasher.meshtastic.org is the recommended tool for most
hardware platforms. It runs entirely in a Chromium-based browser (Chrome, Edge, Brave) and
handles partition layout, bootloader, and firmware in a single operation.
- Connect the repeater hardware to your laptop via USB. Use a data-capable cable - power-only cables will not expose a serial port.
- Navigate to
flasher.meshtastic.orgin Chrome or Edge. - Click Flash Connected Device. The browser will request access to the serial port - select the device from the list (typically
CP2102,CH340, orFTDIdepending on the board). - Select the correct hardware variant. Flashing the wrong variant can result in a
non-booting device. Common examples:
- T-Beam v1.1 →
tbeam - T-Beam v1.2 / AXP2101 →
tbeam-s3-core - Heltec v3 →
heltec-v3 - RAK WisBlock 4631 →
rak4631
- T-Beam v1.1 →
- Select the firmware version. For infrastructure nodes, prefer the latest stable release rather than alpha/nightly builds.
- Click Flash and wait for the progress bar to complete. Do not disconnect the cable during flashing.
Alternative: meshtastic-flasher CLI
pip install meshtastic-flasher
meshtastic-flasher --port /dev/ttyUSB0 --flash tbeam
Restoring Configuration After the Update
# Import a previously exported configuration file
meshtastic --import-config repeater_config_backup_20250101.json
After import, verify critical settings manually:
# Verify device role
meshtastic --get device.role
# Verify channel 0 PSK matches your network
meshtastic --info | grep -A 3 "channel_0"
# Verify MQTT settings
meshtastic --get mqtt
# Verify fixed position
meshtastic --get position
# Verify hop limit
meshtastic --get lora.hop_limit
Reboot the device after configuration import to ensure all settings take effect from a clean state:
meshtastic --reboot
Version Compatibility: What to Check Before Updating
Meshtastic uses a packet-level protocol version negotiation system. Nodes running firmware with incompatible protocol versions will still attempt to rebroadcast packets but may fail to decode certain packet types from newer nodes. Specific areas to check in release notes:
- Protocol buffer schema changes - new required fields in existing message types can cause older firmware to reject packets from a newly updated node.
- Channel encryption format changes - rare but occurred between some major version transitions. If your channel uses a custom PSK, test packet delivery after updating one node before updating others.
- Modem preset changes - some firmware versions renamed or reordered modem presets.
A preset index that mapped to
LONG_FASTin one version may map to a different preset in the next. Always verify the active modem preset by name after updating.
# Verify active modem preset after firmware update
meshtastic --get lora.modem_preset
Post-Update Validation Checklist
- Device boots and appears in Meshtastic app node list.
- Device role is correct (
ROUTER,ROUTER_CLIENT (deprecated; use ROUTER or REPEATER instead), orREPEATER). - Channel 0 (primary) PSK matches community configuration.
- Fixed position is present and correct on map.
- MQTT uplink is publishing telemetry (check Grafana or broker).
- Hop limit is correct for your network.
- Position broadcast interval is set to 24 hours (not the default short interval).
- At least one other mesh node can receive packets from the updated repeater.
Only after this checklist passes should you remove the USB cable and close up the enclosure.