Настройка Meshtastic после прошивки

Первичная настройка ноды Meshtastic через CLI. Все команды используют переменную порта:

PORT=/dev/cu.usbmodemXXXX

Обязательные настройки

Имя узла

meshtastic --port $PORT --set-owner "NodeName" --set-owner-short "NN"

Регион

meshtastic --port $PORT --set lora.region RU

RU — 868 МГц, без ограничения duty cycle (в отличие от EU_868 с лимитом 10%).

Каналы

Канал 0 (PRIMARY) — не заменять. Подробнее: Каналы Meshtastic

Bluetooth PIN

Дефолтный 123456 небезопасен:

meshtastic --port $PORT --set bluetooth.mode FIXED_PIN --set bluetooth.fixed_pin <PIN>

Рекомендуемые настройки

Устройство

meshtastic --port $PORT \
  --set device.role CLIENT \
  --set device.tzdef "MSK-3" \
  --set device.node_info_broadcast_secs 43200 \
  --set device.led_heartbeat_disabled true
  • CLIENT — оптимально для 2 человек (ROUTER агрессивнее пересылает чужие, CLIENT_MUTE не пересылает совсем)
  • node_info_broadcast_secs 43200 — информация о себе раз в 12 часов (дефолт 3 часа)
  • led_heartbeat_disabled — экономия батареи

Режим ретрансляции

meshtastic --port $PORT --set device.rebroadcast_mode CORE_PORTNUMS_ONLY

Ограничивает ретрансляцию только ключевыми типами пакетов (nodeinfo, position, routing, text). Телеметрия, range test и прочие служебные данные чужих нод не ретранслируются. Снижает airtime и нагрузку на эфир.

РежимЧто ретранслирует
ALL (дефолт)все пакеты
ALL_SKIP_DECODINGвсе, но не декодирует (экономит CPU)
LOCAL_ONLYтолько пакеты от ближайших соседей (1 hop)
CORE_PORTNUMS_ONLYтолько ключевые типы: nodeinfo, position, routing, text
KNOWN_ONLYтолько от нод из NodeDB

Для стационарных нод в крупных сетях CORE_PORTNUMS_ONLY — хороший компромисс между полезностью и экономией эфира.

Дисплей

meshtastic --port $PORT \
  --set display.screen_on_secs 60 \
  --set display.units METRIC

Экран гаснет через 60 секунд (дефолт 10 минут).

Питание

meshtastic --port $PORT \
  --set power.ls_secs 300 \
  --set power.min_wake_secs 10

Light Sleep через 5 минут неактивности. Без него ESP32-S3 живёт ~10-20 часов, с ним — значительно дольше.

Оптимизация airtime

Каждая передача занимает эфир. В крупных сетях важно снизить частоту служебных рассылок.

Позиция:

# Мобильная нода — раз в 3 часа
meshtastic --port $PORT --set position.position_broadcast_secs 10800
 
# Стационарная нода — раз в 6 часов
meshtastic --port $PORT --set position.position_broadcast_secs 21600

Smart position (отправка при перемещении) полезна для мобильных нод, но увеличивает airtime:

meshtastic --port $PORT --set position.position_broadcast_smart_enabled true

Neighbor info:

# Раз в 4 часа (дефолт 900с = 15 мин)
meshtastic --port $PORT --set neighbor_info.update_interval 14400

Neighbor info помогает сети строить граф связности, но в больших сетях дефолтные 15 минут создают лишний трафик.

Телеметрия:

meshtastic --port $PORT --set telemetry.device_update_interval 3600

Метрики устройства (батарея, uptime) раз в час. Если нет дополнительных сенсоров (BME280, INA219) — телеметрию окружения можно отключить.

Range test:

Модуль range test генерирует постоянный поток пакетов. Не включать на постоянной основе — только для разовых замеров дальности.

Быстрые сообщения (Canned Messages)

Отправка заготовленных сообщений с кнопки устройства без телефона. Короткое нажатие — листать, длинное — отправить:

meshtastic --port $PORT \
  --set canned_message.enabled true \
  --set canned_message.allow_input_source scanAndSelect \
  --set canned_message.send_bell true \
  --set-canned-message "ОК|Иду|Жду|На месте|Где ты?|Всё ОК|Возвращаюсь|Выхожу|15 мин|Опаздываю|Перезвони|Батарея села|SOS"

Дополнительные фразы для походов: Привал, Ставим лагерь, Жду на точке, Заблудился, Нужна вода, Темнеет. Лимит ~200 символов.

Одной командой

Все настройки кроме каналов и GPS-приватности (они требуют --ch-set):

meshtastic --port $PORT \
  --set-owner "NodeName" \
  --set lora.sx126x_rx_boosted_gain true \
  --set device.role CLIENT \
  --set device.tzdef "MSK-3" \
  --set device.node_info_broadcast_secs 43200 \
  --set device.rebroadcast_mode CORE_PORTNUMS_ONLY \
  --set device.led_heartbeat_disabled true \
  --set display.screen_on_secs 60 \
  --set display.units METRIC \
  --set bluetooth.mode FIXED_PIN \
  --set bluetooth.fixed_pin <PIN> \
  --set position.gps_mode ENABLED \
  --set position.position_broadcast_smart_enabled false \
  --set power.ls_secs 300 \
  --set power.min_wake_secs 10 \
  --set telemetry.device_update_interval 3600 \
  --set security.debug_log_api_enabled false \
  --set canned_message.enabled true \
  --set canned_message.allow_input_source scanAndSelect \
  --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

Отдельно:

# Скрыть позицию на LongFast
meshtastic --port $PORT --ch-index 0 --ch-set module_settings.position_precision 0
 
# Добавить региональный канал (не заменяет LongFast)
meshtastic --port $PORT --ch-add "ChannelName"
meshtastic --port $PORT --ch-index 1 --ch-set psk "base64:<KEY>"
meshtastic --port $PORT --set-canned-message "ОК|Иду|Жду|На месте|Где ты?|Всё ОК|Возвращаюсь|Выхожу|15 мин|Опаздываю|Перезвони|Батарея села|SOS"
# Быстрые сообщения
meshtastic --port $PORT --set-canned-message "ОК|Не слышу|Иду к тебе|Жди 10 мин|SOS"

Известные проблемы CLI

CLI 2.7.8: device config сбрасывает rebroadcast_mode

При установке параметров device.* без явного указания device.role, CLI отправляет role=0 (CLIENT). Firmware интерпретирует смену роли и вызывает installRoleDefaults(), сбрасывая rebroadcast_mode в дефолт.

Workaround: всегда включать --set device.role <ТЕКУЩАЯ_РОЛЬ> при изменении любых параметров device-секции:

# Неправильно — rebroadcast_mode сбросится после ребута
meshtastic --port $PORT --set device.rebroadcast_mode CORE_PORTNUMS_ONLY
 
# Правильно
meshtastic --port $PORT --set device.role CLIENT --set device.rebroadcast_mode CORE_PORTNUMS_ONLY

Аналогичная проблема с position.* — CLI отправляет весь блок, неуказанные поля сбрасываются. Включать все важные position-поля в одну команду:

# При изменении position на стационарной ноде — указать fixed_position
meshtastic --port $PORT \
  --set position.position_broadcast_secs 21600 \
  --set position.gps_mode DISABLED \
  --set position.fixed_position true

Бэкап и восстановление

# Экспорт
meshtastic --port $PORT --export-config > backup.yaml
 
# Импорт на другое устройство
meshtastic --port $PORT --configure backup.yaml

См. также