Почему прерывается (рвётся) цифровой звук DMR и как это лечить

Категория: ХотспотыСложность: ★★☆~9 минут

У цифрового звука есть неприятная особенность: он либо есть, либо его нет. Аналоговая рация на слабом сигнале шипит и хрипит, но речь ещё можно разобрать. DMR ведёт себя иначе — пока всё хорошо, звук чистый, как телефонный, но стоит чему-то сломаться, и голос превращается в «робота», рассыпается на куски и проваливается в паузы. Промежуточного состояния почти нет.

Хорошая новость: причины этого «рваного» звука вполне конкретны и делятся на три слоя — радиочастотный, сетевой и слой приложения/телефона. Если разбираться по слоям, проблема почти всегда локализуется за десять минут. Разберём каждый слой и дадим чёткий чек-лист.

Откуда вообще берётся «робот»

Голос в DMR кодируется вокодером в поток кадров. Кадры идут плотным ритмом — примерно каждые 60 мс — и каждый несёт кусочек речи. Декодер на приёмной стороне восстанавливает звук из этих кадров. Потеряли кадр на радио или в сети — декодеру нечего проигрывать, и он выдаёт тишину, щелчок или артефакт. Несколько потерь подряд — и вы слышите того самого «робота».

Поэтому ключевой вопрос диагностики всегда один: где теряются кадры — на радио или в сети? От ответа зависит всё лечение.

Слой 1. Радиочастота (РЧ)

Самый очевидный подозреваемый. Если рация далеко от хотспота, между ними стена-другая, плохая антенна или рассогласование по КСВ — часть кадров приходит с ошибками и теряется уже на радиоучастке. Симптом — звук рвётся тем сильнее, чем дальше или хуже вы стоите.

Маркер РЧ-проблемы — высокий BER (Bit Error Rate). Если в логах хотспота BER ползёт вверх (единицы процентов и больше), причина почти наверняка на радио. Что проверить:

Сначала — калибровкаЕсли хотспот собран недавно или звук рвётся даже вплотную к нему, первым делом откалибруйте частоту модема. Уход на сотни герц — массовая болезнь бюджетных плат. Как это сделать, описано в статье про калибровку хотспота.

Слой 2. Сеть

А вот здесь начинается самое коварное. Голос идёт от хотспота в сеть и обратно по UDP — протоколу без гарантии доставки. Потерялся пакет — его никто не переотправит, кадр просто исчез. И в отличие от РЧ-проблем, BER при этом будет 0%: радиоучасток-то идеальный, рвётся уже за хотспотом.

Классический и крайне распространённый случай — Wi-Fi power-save на Raspberry Pi. Чтобы экономить энергию, Wi-Fi-адаптер «малинки» по умолчанию умеет засыпать между пакетами. Редкий пинг (ICMP раз в секунду) при этом проходит идеально, и человек делает вывод «сеть в порядке». Но плотный поток DMR-кадров каждые 60 мс адаптер в таком режиме не вытягивает: пока он просыпается, кадры теряются. Итог — рваный звук при нулевом BER и «нормальном» пинге.

Другие сетевые причины:

Пинг врёт«Пинг 20 мс, потерь нет» — НЕ доказательство, что сеть в порядке для DMR. ICMP — это один редкий пакет, а DMR — плотный поток в реальном времени. Сеть может идеально пинговаться и при этом терять каждый третий голосовой кадр. Верьте счётчику потерь пакетов в логах, а не пингу.

Слой 3. Приложение и телефон

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

Лечится это устойчивым джиттер-буфером: приложение копит небольшой запас кадров (десятки–сотни миллисекунд) и проигрывает их ровно, переживая короткие провалы сети. В приложении DMRhub приём идёт через серверный AMBE-вокодер, поэтому буферизация и сглаживание ложатся на сервер и клиент, а не на саму рацию. Подробнее про работу со смартфоном — DMR-рация в смартфоне.

Как диагностировать: один простой признак

Вся диагностика сводится к тому, чтобы развести РЧ и сеть. Откройте логи хотспота (MMDVMHost их подробно пишет) и смотрите два числа во время приёма:

Этот простой тест экономит часы. Подавляющее большинство жалоб «звук рвётся» при чистом BER упирается именно в сеть, а конкретно — в спящий Wi-Fi на «малинке».

Чек-лист решений

Хотите эфир без «робота»?

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

Итог

Рваный «роботизированный» звук DMR — это потерянные голосовые кадры, и весь вопрос в том, где они теряются. Высокий BER — значит проблема на радио: антенна, расстояние, калибровка. BER около нуля при росте потерь пакетов — значит сеть, и чаще всего это спящий Wi-Fi на Raspberry Pi: пинг проходит, а плотный поток кадров каждые 60 мс — нет. Тонкий буфер в приложении на мобильной сети добавляет свой вклад уже на телефоне. Разведите эти слои по двум числам в логах, пройдитесь по чек-листу — и эфир станет чистым.

Источники

  1. G4KLX MMDVMHost — формат логов, поля BER и счётчики кадров, документация и исходники проекта.
  2. Документация Raspberry Pi по управлению питанием Wi-Fi (wlan power management, iw/iwconfig power_save off).
  3. Практический опыт эксплуатации хотспотов в сети DMRhub: рваный звук при BER 0% из-за Wi-Fi power-save и джиттера мобильного интернета.