MMDVM.ini по полочкам: разбор ключевых параметров

Категория: КалибровкаСложность: ~11 минут

Файл MMDVM.ini — это паспорт вашего хотспота. В нём прошито всё: позывной, DMR ID, на какой плате вы работаете, как инвертированы сигналы модема, к какому серверу подключаться и с какими поправками частоты. Когда что-то «не взлетает» — рация не выходит в сеть, BER ползёт вверх, сервер отбивает подключение — ответ почти всегда лежит в этом текстовом файле. Разберём ключевые секции и параметры по полочкам: что они делают, какие значения безопасны, а где одна неверная цифра превращает рабочий хотспот в кирпич.

Зачем вообще лезть в MMDVM.ini

Классический MMDVMHost (демон от G4KLX, который связывает модем MMDVM с цифровыми сетями) читает свою конфигурацию именно из этого ini-файла при старте. В мире Pi-Star и WPSD за вас его обычно генерирует веб-морда, и руками туда лазить не приходится. Но понимать структуру всё равно нужно: когда панель чего-то «не умеет», когда вы диагностируете чужой хотспот по логам, или когда нестандартная плата требует ручных правок инверсий и оффсетов.

В сети DMRhub ситуация ещё проще: агент на хотспоте генерирует MMDVM.ini автоматически из данных вашего аккаунта и поддерживает его в актуальном состоянии по OTA. Адрес сервера, порт, пароль, ваш DMR ID — всё подставляется само. Править файл руками в норме не нужно вообще; этот разбор — чтобы вы понимали, что именно агент туда пишет и почему.

Секция [General]: личность хотспота

Это «кто я и как себя веду». Здесь четыре параметра, которые трогают чаще всего.

  • Callsign — ваш позывной. Уходит в сеть и в эфир, должен совпадать с лицензией. Регистр не критичен, но пробелов и лишних символов быть не должно.
  • Id — ваш DMR ID (7-значный для абонента). Именно по нему сеть вас идентифицирует и маршрутизирует приватные вызовы. Чужой или выдуманный ID — гарантированный конфликт и блокировка. Получить настоящий ID можно при регистрации в системе.
  • Duplex0 для симплексного хотспота (одна частота на приём и передачу — это 99% самодельных MMDVM на одной плате) и 1 для дуплексного повторителя. Поставите 1 на симплекс-плату — приём и передача начнут конфликтовать, и связи не будет.
  • Timeout — максимальная длительность одной передачи в секундах (TOT). По умолчанию обычно 240. Защищает от «зажатого тангента».

Секция [Modem]: сердце железа

Самая опасная секция. Здесь описана сама плата MMDVM и её радиочастотная подгонка. Ошибка тут не даёт явной ошибки в логе — просто хотспот «вроде работает», а рация ничего не слышит.

Порт и тип платы

  • Port (в новых версиях UARTPort) — устройство модема. Для HAT-плат на GPIO это обычно /dev/ttyAMA0 или /dev/serial0; для USB-донглов вроде /dev/ttyACM0. Неверный порт = модем не найден, в логе «opening serial port failed».
  • Тип платы и тактовый генератор задаются параметрами вроде TXInvert/RXInvert и блоком частоты TCXO. Многие платы используют генератор 14.7456 MHz, но дешёвые клоны бывают на других кварцах — отсюда уход частоты.

Инверсии TXInvert / RXInvert

TXInvert и RXInvert (значения 0/1) переворачивают полярность сигнала. Разные платы и разные радиочипы требуют разной инверсии. Симптом неверной инверсии классический: хотспот передаёт, рация его слышит, но не принимает ответ от рации (или наоборот). Если у вас в одну сторону всё идёт, а в другую — глухо, первым делом меняйте соответствующий Invert на противоположный.

Оффсеты RXOffset / TXOffset

Это поправки частоты в герцах, компенсирующие неточность кварца модема. Цель — чтобы реальная частота приёма и передачи совпадала с заявленной с точностью до сотен герц. Подбираются они не на глаз, а по результатам калибровки. Подробно процесс описан в материалах про калибровку частоты и MMDVMCal по шагам.

Чем опасен неверный RXOffsetЕсли RXOffset уведён, хотспот «слышит» рацию на смещённой частоте. На слабом сигнале это сразу поднимает BER и обрывает приём, а при большом уходе рация просто не декодируется вообще — при этом в логах хотспота будет тишина, как будто вы не нажимали тангенту. Не подставляйте чужие оффсеты «по аналогии»: они индивидуальны для каждого экземпляра платы.

Уровни RXLevel / TXLevel

Это глубина модуляции на приём и передачу (в процентах, 0–100). Слишком низкий TXLevel — слабая девиация, рация еле декодирует. Слишком высокий — перемодуляция и рост ошибок. Эти два параметра напрямую связаны со здоровьем эфира: их крутят, добиваясь минимального BER. Глубже — в разборе TXLevel и RXLevel, а про целевые цифры BER — в материале какая норма BER.

Секция [DMR]: режим, которым вы пользуетесь

  • Enable1, иначе DMR на хотспоте выключен. Банально, но забытый Enable=0 после правки соседнего режима — частая причина «всё пропало».
  • ColorCode — цветовой код (0–15), аналог субтона в аналоге. Должен совпадать в хотспоте и в канале рации. Не совпал — рация молчит, хотя сигнал есть. Это вообще одна из самых частых причин «не работает»; см. отдельный разбор про Color Code.
  • Слоты TS1/TS2 — на симплексном хотспоте реально используется один временной слот; в дуплексе работают оба. Большинство сетей по умолчанию маршрутизирует трафик хотспота во второй слот (TS2).
  • EmbeddedLCOnly и связанные параметры управляют тем, как передаётся служебная информация (Link Control) внутри потока. Для одиночного хотспота их трогать почти никогда не нужно — оставляйте дефолт.

Секция [DMR Network]: связь с сервером

Здесь хотспот узнаёт, куда подключаться. Параметры:

  • Address — адрес или хост вашего мастера/сервера сети.
  • Port — UDP-порт сервера (для DMR-мастеров традиционно 62031, но у конкретной сети может отличаться).
  • Password — пароль подключения к мастеру. Неверный пароль = сервер молча не пускает, в логе «login retry» по кругу.
  • Jitter — размер буфера джиттера в миллисекундах (часто 360). Сглаживает неравномерность доставки пакетов. Поднимать его осмысленно только на плохом, рваном интернете; на нормальном канале лишний джиттер просто добавляет задержку.

В DMRhub все три верхних параметра агент проставляет сам из вашего профиля — это главная причина, по которой ручная правка обычно не нужна и даже вредна: при следующем OTA-обновлении ваши изменения будут перезаписаны корректными.

Дисплей: [OLED] и [Nextion]

Чисто косметические секции, на радиочасть не влияют.

  • [OLED]: Type задаёт модель экранчика SSD1306/SH1106 (обычно 3 или 6 в зависимости от стекла), плюс Brightness и Flip (перевернуть картинку, если экран смонтирован вверх ногами).
  • [Nextion]: для сенсорных дисплеев Nextion указывается свой Port и скорость. Если экран не там, где модем — порты не должны конфликтовать.

Ошибка в этих секциях максимум гасит экран — связь продолжит работать.

Типовые ошибки

  • Duplex не тот. Duplex=1 на одноплатном симплекс-хотспоте — связи нет вообще.
  • Несовпадение ColorCode между ini и каналом рации — самый частый «тихий» сбой.
  • Скопированные чужие оффсеты. RXOffset/TXOffset уникальны для каждой платы; чужие значения уводят частоту.
  • Перепутанные инверсии. Связь идёт только в одну сторону — крутите TXInvert/RXInvert.
  • Неверный порт модема. На Pi не освобождён UART (занят консолью/Bluetooth) — модем не открывается.
  • Чужой или нулевой Id. Сеть не пустит или заблокирует; нужен настоящий зарегистрированный DMR ID.

Мини-шпаргалка: опасные параметры

  • [General] Duplex — неверно → нет связи. Симплекс = 0.
  • [General] Id — чужой → бан. Только свой DMR ID.
  • [Modem] RXOffset / TXOffset — чужие → уход частоты, рост BER, тишина в приёме.
  • [Modem] TXInvert / RXInvert — неверно → связь в одну сторону.
  • [Modem] RXLevel / TXLevel — крайности → перемодуляция или глухота, плохой BER.
  • [DMR] ColorCode — не совпал с рацией → рация молчит.
  • [DMR Network] Password — неверен → бесконечный login retry.

Если из всего файла запомнить только одно правило, пусть будет такое: радиочастотные параметры из [Modem] (оффсеты, уровни, инверсии) подбираются измерением на вашем конкретном экземпляре, а не копированием. Подробности измерения — в гайдах по MMDVMCal и уровням.

Не хотите править ini руками?

В сети DMRhub агент сам генерирует MMDVM.ini под ваш аккаунт и обновляет его по OTA — адрес, порт, пароль и DMR ID подставляются автоматически.

Источники

  1. G4KLX, репозиторий MMDVMHost и пример конфигурации MMDVM.ini — github.com/g4klx/MMDVMHost
  2. G4KLX, MMDVMCal — утилита калибровки модема — github.com/g4klx/MMDVMCal
  3. Документация и форум Pi-Star по настройке модема и параметрам конфигурации — pi-star.eu
  4. Сообществ. руководства по освобождению UART на Raspberry Pi для HAT-плат MMDVM
В сети DMRhub

Настроили рацию — заходите в эфир: свой мастер, хотспоты и приложение с DMR прямо в телефоне.

Войти в портал