MMDVMCal по шагам: калибровка MMDVM-модема
MMDVM-хотспоты на базе MMDVM_HS (ZUMspot, HS_Hat, SkyBridge и аналоги) содержат дешёвый TCXO, который легко уходит по частоте на сотни герц от номинала. Для голоса это почти незаметно, но для данных и SMS даже 100–300 Гц смещения могут дать ошибки декодирования и потери пакетов. MMDVMCal — официальная интерактивная утилита от автора MMDVM (G4KLX), которая позволяет найти точную рабочую частоту модема, измерить BER и задать уровни TX/RX — всё прямо из командной строки без правки конфигов вручную.
Что такое MMDVMCal и как она устроена
MMDVMCal — это отдельная программа (репозиторий g4klx/MMDVMCal), которая напрямую общается с модемом через последовательный порт. Во время работы утилиты MMDVMHost должен быть остановлен — они не могут работать с одним портом одновременно.
На Pi-Star и RadioStar это делается автоматически командой запуска. Управление — только клавиатурой: каждая клавиша мгновенно меняет параметр или переключает режим. После выхода (Q) программа печатает итоговые значения смещений.
Запуск утилиты
На Pi-Star и совместимых образах (включая RadioStar) используют обёртку:
sudo pistar-mmdvmcal
Она сама остановит MMDVMHost, запустит MMDVMCal с нужным портом и конфигом, а после выхода вернёт службу. На «голом» Raspberry Pi без Pi-Star запуск выглядит так:
sudo systemctl stop mmdvmhost
MMDVMCal /etc/MMDVM.ini
После запуска на экране появится приглашение вида:
MMDVMCal (20231015) by G4KLX
H/h=help, Q/q=quit ...
Таблица клавиш MMDVMCal
Программа управляется одиночными нажатиями. Основные клавиши:
- H / h — показать справку прямо в терминале;
- Q / q — выйти, напечатав итоговые смещения;
- E / e — ввести рабочую частоту в Гц (например, 434250000);
- F — увеличить частоту на шаг;
- f — уменьшить частоту на шаг;
- Z / z — задать шаг изменения частоты в Гц;
- T — увеличить девиацию TX (TXLevel);
- t — уменьшить девиацию TX;
- R / r — увеличить / уменьшить уровень приёма (RXLevel);
- P / p — увеличить / уменьшить мощность RF;
- b — режим BER-теста DMR Simplex (FEC), приём от рации;
- B — режим BER-теста с тестовым паттерном 1031 Гц (внутренний генератор);
- D / d — режим DMR Deviation: генерирует синусоиду 1,2 кГц для осциллографа;
- C / c — режим несущей (Carrier Only), без модуляции;
- K / k — BER-тест D-Star (FEC);
- Space — включить / выключить передачу (TX);
- W / w — включить / выключить отладочные сообщения модема.
Шаг 1: задать рабочую частоту
Перед началом нужно сказать MMDVMCal, на какой частоте работает ваш хотспот. Нажмите E, утилита попросит ввести частоту в Гц. Введите частоту вашего хотспота целым числом без точек и пробелов:
E
Enter frequency (Hz): 434250000
Для диапазона 70 см (430–440 МГц) типичные значения хотспота лежат в диапазоне 430000000–440000000. Для 2 м (144–146 МГц) — соответственно.
Шаг 2: BER-тест и подстройка частоты
Это главный этап. Цель — найти частоту, при которой модем декодирует ваш сигнал с минимальным BER.
- Нажмите b — войдёте в режим DMR Simplex BER Test (FEC).
- Передайте короткую фразу с рации (или просто нажмите PTT и подержите несколько секунд). Утилита покажет BER последней передачи.
- Нажмите Z и задайте шаг, например 25 (Гц) — удобно для точной подстройки.
- Нажимайте F (частота вверх) несколько раз, каждый раз передавая сигнал рацией и наблюдая BER. Продолжайте, пока BER не начнёт расти или пропадёт сигнал.
- Зафиксируйте крайнюю «живую» частоту. Вернитесь назад через f, пройдите в обратную сторону — найдите второй предел.
- Оптимальная рабочая точка — середина между двумя пределами. Там BER будет минимальным.
Ориентиры BER для DMR Simplex:
- 0 % — 0,5 % — отлично, декодирование надёжное;
- 0,5 % — 2 % — приемлемо для голоса, но данные могут теряться;
- выше 2 % — требует калибровки; SMS и пакетные данные будут нестабильны;
- выше 5 % — критично, возможны прерывания голоса.
Шаг 3: записать итоговый RXOffset
После нахождения оптимальной частоты нажмите Q для выхода. Утилита напечатает строку вида:
Frequency: 434250275 Hz Offset: +275 Hz
TXLevel: 50 RXLevel: 50
Значение Offset — это и есть ваш RXOffset (и обычно TXOffset). Его нужно внести в конфигурацию MMDVMHost.
На Pi-Star: «Admin» → «Expert» → «MMDVMHost» → раздел [Modem]:
[Modem]
RXOffset=275
TXOffset=275
На RadioStar (наш образ): смещение вносится прямо через веб-панель устройства — вкладка «Модем» → поля RX Offset / TX Offset. Перезапускать службу вручную не нужно, панель сделает это сама.
Шаг 4: калибровка TXLevel и RXLevel
Уровни девиации влияют на качество сигнала. Правильная девиация для DMR — 2,75 кГц.
TXLevel (уровень передачи хотспота в эфир):
- Нажмите D — режим DMR Deviation Mode, модем генерирует синусоиду 1,2 кГц.
- С осциллографом или частотомером со входом девиации измерьте отклонение несущей.
- Клавишами T / t добейтесь ~2,75 кГц девиации.
- Если осциллографа нет: начните с TXLevel = 50 (значение по умолчанию), проверьте, что рация принимает без искажений — этого обычно достаточно для хотспота.
RXLevel (чувствительность приёма модема):
- Войдите в режим BER-теста (b).
- Клавишами R / r подбирайте уровень так, чтобы BER был минимальным при «нормальной» мощности рации (не вплотную к антенне хотспота).
- Слишком высокий RXLevel — перегруз АЦП, BER растёт. Слишком низкий — слабый сигнал, тот же результат.
Как калибровка работает в образе RadioStar
В готовом образе RadioStar для Raspberry Pi предусмотрен BER-свип прямо из веб-панели: устройство само прогоняет диапазон частот вокруг номинала и находит точку минимального BER без ручного перебора клавишами. Это удобно, если нет физического доступа к SSH или хочется сделать повторную калибровку после смены рации.
Результат свипа записывается в RXOffset автоматически. При необходимости значение можно скорректировать вручную на той же странице «Модем».
Частые ошибки и как их избежать
- Не остановлен MMDVMHost — порт занят, MMDVMCal не запускается или сразу вылетает. На Pi-Star используйте только sudo pistar-mmdvmcal.
- Рация слишком близко к антенне хотспота — перегруз входа, BER искусственно высокий. Держите расстояние 0,5–1 м.
- Мощность рации на максимуме — то же самое. Для калибровки достаточно 1–2 Вт или минимальной ступени.
- Caps Lock включён — f превратится в F, частота уйдёт в другую сторону незаметно.
- Не совпадает Color Code — рация и хотспот не «слышат» друг друга вообще, BER = 0 при отсутствии сигнала. Проверьте CC в codeplug и настройках хотспота.
- Не сохранили offset в конфиге — после перезагрузки хотспота смещение пропадёт. MMDVMCal сам по себе конфиг не меняет, только печатает значение при выходе.
Калибровка — основа надёжной работы в сети
Точно откалиброванный хотспот означает стабильный приём SMS, данных и голоса в сети DMRhub. Если у вас ещё нет образа — соберите хотспот на Raspberry Pi за полчаса: образ RadioStar включает веб-панель с BER-свипом, и ручной перебор частоты через SSH не нужен.
Источники
- MMDVMCal — официальный репозиторий (G4KLX) — github.com/g4klx/MMDVMCal
- Getting the best BER from your Pi-Star MMDVM (M1GEO, George Smart) — george-smart.co.uk
- MMDVMCal DVM Calibration (VK4PK) — lyonscomputer.com.au
- Hotspot Offset Calibration (K9NPX) — k9npx.com