Про особенность настройки ролей устройств, лора модулей и прочих тонкостях.
Начало.
Для начала надо бы определится что вообще пытаемся построить. При конфигурации чего либо логично исходить из поставленных задач, а задачи могут быть разные. Настройки по умолчанию лучше подходят туристической или похожей группе людей с устройствами, пользователи которых хотят знать местоположение участников группы на карте и оставаться на связи в случаи нештатных ситуация или оповещать остальных в стиле: «я дошел до привала», «у магазина, стоянка 10 минут».
Децентрализованность сети дает простор для… та сами знаете чего, каждый делает что попало из благих побуждений, благих скорее для себя, «мне кажется так будет лучше, так правильно». Инструкции они конечно не читали, как что работает не понимают, регламентов нет никаких, но есть волшебная нода способная заменить телеграмм, вот прям в комнате и на столе. Другие же, знакомые с радио, посмотрев на всё то, начинают стоить что-то свое по дальше от тех вот. Но об этом в другой раз.
Итак, у нас есть устройство, узел, нода, устройству можно задать роль. Я надеюсь вы уже понимаете как все устроенно и работает?

Представим что понимаете. Что нода (узел в сети) это и приемник, и ретранслятор, и сборщик телеметрии, и запоминает устройства которые услышал, и пытается быть избирательным и не ретранслировать всё подряд.
Вот такому устройству можно задать роль в сети.
| Роль устройства | Описание | способы применения |
|---|---|---|
| CLIENT | Устройство для обмена сообщениями, подключённое к чему либо или работающее автономно. Ретранслирует пакеты, если этого не сделал другой узел. | Повсеместное использование, для индивидуального пользователя взаимодействующего с сетью Meshtastic через клиентское приложение. |
| CLIENT_MUTE | Клиент сети, который не ретранслирует пакеты от других устройств. | Используется когда необходимо участвовать в сети, но не создавать нагрузку на сеть ретрансляцией. (портативная, носимая нода, автомобиль) |
| CLIENT_HIDDEN | Устройство которое передает минимум информации, передача по необходимости, для скрытности или экономии батареи. | Используется для сокращения времени работы в эфире, ради скрытности или энергоэффективности при сохранении подключения к сети. |
| CLIENT_BASE | Персональная «базовая станция»: всегда ретранслирует пакеты избранных узлов. В остальном не отличима от CLIENT. | Используется на узлах с большим охватом, нода на крыше или чердаке, чтобы ретранслировать сообщения внутренних или менее удачно расположенных узлов. |
| TRACKER | Приоритетно передаёт геопозицию. | Носимые устройства, трекеры, где важна оперативная передача координат |
| LOST_AND_FOUND | Регулярно передаёт свое местоположение в дефолтный канал (для поиска потерянных устройств). | Используется для поиска потерянного устройства. |
| SENSOR | Приоритетная передача телеметрии. | Используется в сценариях где сбор данных об окружающей среде или других датчиков имеет решающее значение. Режим энергосбережения в наличии. |
| TAK | Оптимизировано для связи с системой ATAK, сокращает количество рутинных трансляций. | Интеграция с системами ATAK (через плагин Meshtastic ATAK) для связи в ходе тактических или скоординированных операций. |
| TAK_TRACKER | Версия TRACKER с поддержкой автоматических PLI (Position Location Information) для ATAK. | Автономная интеграция PLI с системами ATAK для связи в ходе тактических или скоординированных операций. |
| REPEATER | Инфраструктурный узел, всегда ретранслирует один раз. Максимум энергосбережения. Не отображается в списке узлов. Устарела с выходом версии 2.7.11 | Лучше всего размещать в стратегически важных точках, чтобы максимально увеличить зону покрытия сети. Устройство не отображается в топологии. Ретранслирует что услышит без разбора, в остальное время спит. |
| ROUTER | Инфраструктурный узел для расширения зоны покрытия сети за счёт однократной ретрансляции пакетов. Отображается в списке узлов. | Для размещения устройств в стратегически важных местах (места с большим охватом). |
| ROUTER_LATE | Инфраструктурный узел, всегда ретранслирует пакеты, но только после ретрансляций других узлов, в остальных режимах, обеспечивая дополнительное покрытие для локальных кластеров. Отображается в списке узлов. | Идеально подходит для устранения «мёртвых зон» или обеспечения надёжности кластера узлов, размещение которых не приносит пользы всей сети. Роутер\реппитер для носимых устройств или устройств с малым радиусом действия |
Репетир Роутер. ВАЖНО!
Репитеров два, ROUTER и ROUTER_LATE, Основное и главное отличие, приоритеты: ROUTER ретранслирует пакет первым, ROUTER_LATE последним. Конечно это отличие не единственное, но ключевое. ROUTER уменьшает количество ретрансляций. ROUTER_LATE увеличивает охват, он подхватывает пакет который вероятно не смогли доставить другие, и это очень грубое пояснение. Логично что в нагруженной устройствами сети нужно использовать ROUTER, и ставить его нужно там где его услышат все. ROUTER_LATE логично использовать для покрытия серых зон. Но есть нюанс.
Не используйте роль REPEATER. Это гарантированно приведет к коллизиям (когда несколько нод одновременно отправляют пакет).
Не устанавливайте ROUTER абы где, нода с этой ролью должна иметь максимально возможное покрытие, иначе эффект от него, может быть строго противоположным. Это не просто должен быть приоритетный узел который слышат большинство, он должен соединять эти большинства в стратегическом (идиотский термин из документации) месте. ROUTER вклинивается в очередь ретрансляции до того, как другие узлы получат возможность ретранслировать, ROUTER ретранслирует все пакеты с высоким приоритетом.

Один ROUTER для групп устройств в месте где его слышат все.
ROUTER_LATE, также ретранслирует всё что услышит (почти всё), этим он отличается от CLIENT, но делает это с наименьшим приоритетом. CLIENT может не ретранслировать пакет, если услышал что это делает кто то другой, а ROUTER_LATE оставляет его на потом, когда на это будет время, даже если пакет кто то ретранслировал до него.
В работе сети есть так называемые «Конфликтные окна» или «Окна конкуренции», это время через которое нода начинает ретранслировать пакет после его получения, если посчитает нужным. Приоритета три, у ROUTER первый, у ROUTER_LATE последний, у CLIENT_BASE первый для избранных, второй для остальных. По этому считается что влияние узла ROUTER_LATE на сеть, идентично влиянию CLIENT, в обычных условиях он себя так и ведет.
Поскольку ROUTER_LATE пытается ретранслировать всё, что слышит, он увеличивает объём трафика на единственной общей частоте. Это может привести к перегрузке, коллизиям и потере пакетов. Если общий объём трафика становится слишком высоким, это может существенно повлиять на производительность сети, вплоть до того, что она станет непригодной для использования.
Если вы настаиваете на использовании этой роли в качестве узла на крыше в любом случае, пожалуйста, внимательно следите за показателями ChUtil (использование общего эфирного времени) и AirTXUtil (эфирное время, используемое только этим узлом) на вашем узле. Если показатель ChUtil превышает 25 %, а показатель AirUtilTX — 7–8 %, пожалуйста, прекратите использовать эту роль, чтобы сохранить общую функциональность сети.
Обратите внимание, что маршрутизатор и ретранслятор не подходят для использования на крышах (на самом деле, даже в большей степени, поскольку они вытесняют другие узлы). Эти роли предназначены только для инфраструктуры, расположенной в очень удачном месте.
Еще раз, если не понятно, инфраструктурные роли нужно использовать только там, где это действительно актуально и необходимо. Вреда от них, может быть больше чем пользы. ROUTER_LATE устанавливается только в стратегических местах в серых зонах, там где нет других узлов которые хорошо слышат основной сегмент сети и вам нужно ретранслировать все пакеты на серую зону. Он не для крыши в городской сети ради увеличения охватов. ROUTER служит для соединения разных сегментов сети, например у вас есть два поселка отрезанных горным хребтом, вот для соединения их и нужен ROUTER на хребте.
Классические сценарии:
- Купили одну ноду для подключения к городской сети, если она в вашем городе есть, развитая, вы не знаете или знаете что делать, но нода у вас одна, носимая или просто со штатной антенной. Ставим CLIENT_MUTE и не отсвечиваем. Суть: Если нет возможности увеличивать охват, не мешайте тем у кого возможность есть, количество ретрансляций ограничена, приоритет в сети отдается нодам с низким уровнем сигнала, а не с большим покрытием.
- У вас есть внешняя антенна или высокая точка с большим охватом, есть желание и возможность увеличить радиус действия сети и\или нет развитой сети в городе, ставим CLIENT.
- Тоже если это частная сеть\связь в туристической группе, в лесу, на фестивале, и тд. Суть: CLIENT Это то самое классическое развертывание сети с устройствами одного уровня.
- Поняли что с одной нодой ничего нормально не работает, купили вторую или еще несколько, первую решили поставить на крышу с антенной. CLIENT_BASE на крышу, на вторую и остальные CLIENT_MUTE. В обоих нодах добавили друг друга в избранное. Суть: CLIENT_BASE помогает увеличить охваты ретранслируя пакеты, автоматически и приоритетно ретранслирует всё с и в избранных CLIENT_MUTE.
В документации крайне рекомендуют использовать роли CLIENT и CLIENT_MUTE, если нет веских причин использовать что то другое.
Режим ретрансляции
В некоторых ролях можно более тонко настроить режим ретрансляций
| Значение | Описание |
|---|---|
ALL | ВСЕ (по умолчанию). При выборе этого параметра будут ретранслироваться ВСЕ сообщения, а также с других узлов с такими же настройками радиомодуля, в том числе с различными настройками шифрования. |
ALL_SKIP_DECODING | ALL_SKIP_DECODING — поведение такое же, как у ALL, но пакеты не декодируются, а просто пересылаются. Доступно только для роли Repeater. |
LOCAL_ONLY | LOCAL_ONLY — игнорирует сообщения от внешних сетей, не зашифрованные или которые не может расшифровать. Пересылает сообщения только по локальным первичным/вторичным каналам узлов. |
KNOWN_ONLY | KNOWN_ONLY — игнорирует сообщения из внешних сетей, как и LOCAL_ONLY, но идёт дальше и игнорирует сообщения от ноденумов, узлов которых нет в списке известных узлов (NodeDB). |
NONE | NONE — разрешено только для ролей SENSOR, TRACKER и TAK_TRACKER. Это приведет к блокировке всех трансляций, как и в случае с ролью CLIENT_MUTE. |
CORE_PORTNUMS_ONLY | CORE_PORTNUMS_ONLY — игнорирует пакеты с нестандартными номерами портов, такими как TAK, RangeTest, PaxCounter и т. д. Ретранслирует только пакеты со стандартными номерами портов: NodeInfo, Text, Position, Telemetry и Routing. |
Тут нужно смотреть на нагрузку вашей ноды и эфира, если все время отдается на ретрансляцию разного неизвестного мусора, принимайте соответствующие меры.
Сравнение ролей.
Опять табличка из документации.
| Роль | BLE/WiFi/Serial | Дисплей | потребление | ретрансляция | приоритет ретрансляции | видимость в списке узлов |
|---|---|---|---|---|---|---|
| CLIENT | Yes | Yes | Regular | Yes | No | Yes |
| CLIENT_MUTE | Yes | Yes | Lowest | No | No | Yes |
| CLIENT_HIDDEN | Yes | Yes | Lowest | Local Only | No | No |
| CLIENT_BASE | Yes | Yes | Regular | Yes | Favorites Only | Yes |
| TRACKER | Yes | No | Regular / Low | Awake Only | No | Yes |
| LOST_AND_FOUND | Yes | No | Regular | Yes | No | Yes |
| SENSOR | Yes | No | Regular / Low | Awake Only | No | Yes |
| TAK | Yes | Optional | Regular | Yes | No | Yes |
| TAK_TRACKER | Yes | Optional | Regular | Yes | No | Yes |
| ROUTER | No | No | High | Yes | Yes | Yes |
| ROUTER_LATE | Yes | Yes | High | Yes | No | Yes |
| REPEATER | Yes | No | High | Yes | Yes | No |
Тут стоит обратить внимание на режимы ретрансляций, приоритеты есть только у ROUTER и CLIENT_BASE, роли в чем то очень похожи, но CLIENT_BASE ограничен списком избранное, а ROUTER он для всех. Так как это инфраструктурный узел и он предполагает автономную работу и установку на высоте, у него выключен дисплей и какая либо иная коммуникация со внешним миром, это связано с режимами энергосбережения (только для ESP32), микроконтроллер находится в спячке, и работает только на радиомодуль. Устанавливая этот режим следует предварительно настроить удаленное администрирование.
Особенно стоит обратить внимание на режимы энергопотребления, CLIENT_MUTE и CLIENT_HIDDEN еще более подходит для носимых устройств с батарейным питанием, не только отсутствием лишней нагрузки на эфир.
TRACKER и SENSOR большую часть времени находятся в спячке, будит их таймер, ретрансляцией они почти не занимаются.
Хопы, или количество ретрансляций.
Настоятельно рекомендуется оставить значение
МАКСИМАЛЬНОГО КОЛИЧЕСТВА ПЕРЕХОДОВ равным 3, если только вы не уверены, что для достижения узла назначения вам нужно больше (или меньше) переходов.
Чрезмерно большое количество переходов часто приводит к проблемам в сети.
Если вам нужно увеличить количество переходов, вносите изменения только в узлы на границах сети, а не в те, что находятся ближе к центру.

Что это? В сети есть ограничение на количество ретрансляций. Пакет можно послать указав ему ограничение в три хопа и на четвертой ноде он умрет не достигнув адресата, или достигнув если это четвертая в цепочке нода, а можно поставить ограничение на семь, но тогда есть шансы что пакет вернется вам обратно обойдя весь город, хотя ваш адресат в цепочки четвертый.
Не увеличивайте это число без нужды, это делает сеть неработоспособной отбирая эфирное время на трансляцию того, что транслировать не нужно. Спросите в общем чате с каким количеством ретрансляций Вас принимают, скорее всего 3 или 4 это будет максимальное число, такое+1 и устанавливайте.
Конфигурация радиомодуля
Регион
Тут можно и без таблички, ибо ставить нужно RU и использовать 868.7 — 869.2МГц, а и уменьшать мощность до 25мВт, но в РФ есть еще диапазон LPD на 433МГц. Тут только выбрать KZ_433, он совпадает с Российским LPD. Это если по всем правилам.
Пресеты и кастомы.
По умолчанию используется пресет под названием LONG_FAST, Это относительно медленная передача, подходит для не большего количества устройств на относительно большем расстоянии. Не забывайте, все это изначально было задумано для туристов. Вот что пишут, тут:
Возможно, вам стоит отказаться от LongFast, если в вашей сети есть:
- Более 60 узлов, особенно если они расположены относительно близко друг к другу
- Большое количество сообщений от множества пользователей или автоматизированных систем
- Развертывание в городских/пригородных районах, где максимальная дальность действия менее важна, чем пропускная способность
- Наблюдаются задержки в отправке сообщений или нестабильная доставка из-за перегрузки
А теперь табличка рекомендуемых пресетов:
| Пресет | Полоса (кГц) | SF | Скорость (кбит/с) | чувствительность | Лучше Для |
|---|---|---|---|---|---|
| LongFast | 250 | 11 | 1.07 | 153 дБ | По умолчанию. Используется подавляющим большинством. Стихийный пресет. |
| MediumSlow | 250 | 10 | 1.95 | 150,5 дБ | Немного выше скорость |
| MediumFast | 250 | 9 | 3.52 | 148 дБ | Относительно быстрый с хорошей дальностью, можно использовать в сетях из ~100 устройств |
| ShortSlow | 250 | 8 | 6.25 | 145,5 дБ | Быстрый с умеренной дальностью, подойдет для перегруженных городских сетей. |
| ShortFast | 250 | 7 | 10.94 | 143 дБ | Очень быстрый, малый радиус действия. Локальные сети с большим количеством участников или трафика |
| ShortTurbo | 500 | 7 | 21.88 | 140 дБ | Максимальная скорость, минимальный радиус действия. Занимает весь диапазон, использовать с осторожностью |
Табличка из документации, все режимы.
| Radio Preset | Alt Preset Name | Data-Rate | SF / Symbols | Coding Rate | Bandwidth | Link Budget |
|---|---|---|---|---|---|---|
| Short Range / Turbo | Short Turbo | 21.88 kbps | 7 / 128 | 4/5 | 500 kHz | 140dB |
| Short Range / Fast | Short Fast | 10.94 kbps | 7 / 128 | 4/5 | 250 kHz | 143dB |
| Short Range / Slow | Short Slow | 6.25 kbps | 8 / 256 | 4/5 | 250 kHz | 145.5dB |
| Medium Range / Fast | Medium Fast | 3.52 kbps | 9 / 512 | 4/5 | 250 kHz | 148dB |
| Medium Range / Slow | Medium Slow | 1.95 kbps | 10 / 1024 | 4/5 | 250 kHz | 150.5dB |
| Long Range / Fast | Long Fast | 1.07 kbps | 11 / 2048 | 4/5 | 250 kHz | 153dB |
| Long Range / Moderate | Long Moderate | 0.34 kbps | 11 / 2048 | 4/8 | 125 kHz | 156dB |
| Long Range / Slow | Long Slow | 0.18 kbps | 12 / 4096 | 4/8 | 125 kHz | 158.5dB |
Есть пресеты еще медленнее Long Fast, с меньшей шириной полосы и большей избыточностью. Похоже единственное их назначение, фиксировать рекорды дальности связи. Очень специфические, но если вам и этого мало, радиомодуль всегда можно настроить ручками.
Вот еще из документации, примеры зависимости параметров.
| Data-rate | SF / Symbols | Coding Rate | Bandwidth | Link Budget | Note |
|---|---|---|---|---|---|
| 37.50 kbps | 6 / 64 | 4/5 | 500 kHz | 129dB | Максимально возможная скорость |
| 3.125 kbps | 8 / 256 | 4/5 | 125 kHz | 143dB | |
| 1.953 kbps | 8 / 256 | 4/8 | 125 kHz | 143dB | |
| 1.343 kbps | 11 / 2048 | 4/8 | 500 kHz | 145dB | |
| 1.099 kbps | 9 / 512 | 4/8 | 125 kHz | 146dB | |
| 0.814 kbps | 10 / 1024 | 4/6 | 125 kHz | 149dB | |
| 0.610 kbps | 10 / 1024 | 4/8 | 125 kHz | 149dB | |
| 0.488 kbps | 11 / 2048 | 4/6 | 125 kHz | 152dB | |
| 0.073 kbps | 12 / 4096 | 4/5 | 31 kHz | 160dB | Вдвое большая дальность действия и/или зона покрытия «Длинного замедления», низкая помехоустойчивость |
| 0.046 kbps | 12 / 4096 | 4/8 | 31 kHz | 160dB | В два раза больше дальности действия и/или зоны покрытия «Длинного замедления», высокая устойчивость к шуму |
Полоса в 31 kHz, на китайских модулях скорее всего не заработает, может заработать 62.5 kHz, но… ниже 125 kHz опускать не стоит. Это то какую полосу частот, полосу частотного спектра, занимает передача пакета.
Coding Rate, это избыточность, сколько подмешивать информации для восстановления. Больше избыточности лучше помехоустойчивость, но меньше и скорость. 4/5 — 1,25 раза, 4/6 — 1,5 раза, 4/7 — 1,75 раза, 4/8 — в 2 раза больше накладных расходов и в два раза ниже скорость. На перегруженном всем диапазоне 433МГц CR 4/5 использовать не стоит, но он стоит по умолчанию почти во всех пресетах, повторю расчет на туристов в лесах и горах, и без помех.
SF, То что на сленге называется «чирки», Это то как кодируется информация по времени, больше чирков надежнее передача, меньше соответственно быстрее. Это параметр скорости передачи пакета.
Стоит ли вообще использовать кастомные настройки? От задач зависит, как обычно. Мне очень не нравится полоса в 250КГц и то как оно используется в городе, занимая половину выделенного частотного диапазона. Для штатов таких проблем нет, там на 915МГц 104 частотных канала по 250КГц. 104 против 2. Для нас разумно уменьшать полосу в ущерб скорости ради лучшей помехоустойчивости и разумного использования эфира.
На этом пока всё, но осталось что дополнить.