Бэкап и восстановление Meshtastic
Экспорт конфигурации (бэкап)
meshtastic --port <PORT> --export-config > backup.yamlСохраняет в YAML:
- owner, owner_short
- channel_url (все каналы с PSK)
- config (bluetooth, device, display, lora, network, position, power, security)
- module_config (canned_message, external_notification, mqtt, telemetry и др.)
- ringtone, canned_messages
Восстановление
Способ 1: —configure (быстрый, но ненадёжный)
meshtastic --port <PORT> --configure backup.yamlПрименяет все настройки из YAML за один раз. Проблема: устройство перезагружается посреди применения, и часть настроек может не записаться. Нужно проверять через --info и при необходимости повторять.
Способ 2: поэтапно (надёжный)
Применять настройки группами, ожидая перезагрузку между ними (15-20 секунд):
Шаг 1 — каналы:
meshtastic --port <PORT> --seturl "<CHANNEL_URL>"Шаг 2 — bluetooth (после паузы 15 сек):
meshtastic --port <PORT> \
--set bluetooth.fixed_pin <PIN> \
--set bluetooth.mode FIXED_PINШаг 3 — security (после паузы 15 сек):
meshtastic --port <PORT> \
--set security.serial_enabled true \
--set security.admin_key "base64:..." \
--set security.private_key "base64:..." \
--set security.public_key "base64:..."Шаг 4 — модули (после паузы 15 сек):
meshtastic --port <PORT> \
--set external_notification.enabled true \
--set external_notification.output 35 \
--set external_notification.active true \
--set external_notification.alert_message true \
--set external_notification.output_ms 3000Шаг 5 — device и остальное (после паузы 15 сек):
meshtastic --port <PORT> \
--set device.led_heartbeat_disabled true \
--set device.node_info_broadcast_secs 43200 \
--set device.tzdef "GMT-3" \
--set canned_message.allow_input_source scanAndSelect \
--set canned_message.send_bell true \
--set mqtt.root "msh/RU" \
--set telemetry.device_update_interval 3600Шаг 6 — перезагрузка:
meshtastic --port <PORT> --rebootПроверка
meshtastic --port <PORT> --infoУбедиться что критичные параметры применились:
region— регион LoRafixedPin— PIN BluetoothadminKey— ключ удалённого администрированияChannels— PRIMARY + все дополнительные каналыexternal_notification— LED уведомления
Важные нюансы
- Пауза между командами: после записи настроек устройство перезагружается. Ждать 15-20 секунд перед следующей командой, иначе
Timed out waiting for connection - LED heartbeat: при восстановлении
device.led_heartbeat_disabledдолжен бытьtrue, иначе LED на GPIO 35 мигает постоянно (heartbeat совпадает с пином external_notification) - Порядок: сначала каналы (
--seturl), потом остальные настройки — каналы меняют LoRa-частоту и вызывают перезагрузку - Проверка после восстановления: всегда проверять
--info—--configureможет молча не применить часть настроек - Не использовать
2>&1при экспорте — если устройство не отвечает, traceback Python перезапишет YAML-файл
PKC ключи после erase-flash
После erase-flash PKC ключи (privateKey, publicKey) генерируются заново. adminKey (ключ remote admin) нужно восстановить из бэкапа вручную. Старые DM-ключи теряются, но другие ноды обновят publicKey автоматически через следующий NodeInfo broadcast. Node ID (привязан к MAC) не меняется.
Экспорт через WiFi
--export-config может зависать как по USB, так и по WiFi (TCP). Надёжнее экспортировать через USB на маленьких NodeDB (<30 нод). При зависании — прервать и использовать --get для проверки отдельных параметров.