Wi-Fi или Ethernet для хотспота: почему теряются пакеты и рвётся звук

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

Картина знакомая многим: хотспот собран, рация декодирует репитер с BER 0,0%, индикаторы зелёные — а голос в эфире рвётся, заикается, выпадают слоги. Первое, на что грешат, — антенна или РЧ-часть. Но в девяти случаях из десяти виноват не радиоэфир, а сеть между хотспотом и роутером. И чаще всего конкретно — Wi-Fi.

DMR — это плотный realtime-поток: голосовой суперкадр гонит UDP-пакеты к серверу сети примерно каждые 60 мс, без буферизации и без повторной отправки. Потерял пакет — потерял кусок речи навсегда. Канал, который прекрасно тянет веб и видео (где буфер сглаживает любые провалы), для DMR может оказаться непригодным. Разберём, почему так выходит и что делать.

Почему Wi-Fi роняет DMR, а ping этого не видит

Главный виновник — энергосбережение Wi-Fi (power-save). Чтобы экономить ток, Wi-Fi-чип периодически засыпает между маяками точки доступа и просыпается лишь на короткие окна. Для обычного трафика это незаметно: данные подождут в буфере роутера до следующего пробуждения. Но DMR ждать не умеет — пакет, пришедший в момент, когда радио спит, либо опаздывает на десятки миллисекунд (джиттер), либо теряется вовсе.

Коварство в том, что обычная диагностика это маскирует. Запускаешь ping до роутера — редкие пакеты раз в секунду проходят с 0% потерь, чип успевает проснуться под каждый. А плотный поток DMR (16-17 пакетов в секунду) при тех же условиях теряет 15-40%. Логи MMDVMHost при этом показывают идеальный BER по эфиру — потому что радиоприём в порядке, рвётся именно сетевая доставка.

Ключевой признакЕсли в логах хотспота BER низкий (около нуля), но звук рвётся и появляются сообщения о потерянных кадрах — это почти наверняка сетевая потеря, а не проблема РЧ. Калибровка и антенна тут ни при чём, копать надо в сторону Wi-Fi. О настройке самого радиотракта — в материале калибровка хотспота.

Как отличить сетевую потерю от радиочастотной

Прежде чем что-то менять, стоит точно локализовать проблему. Несколько практических проверок:

Если же звук рвётся и на проводе — причина не в Wi-Fi, и стоит проверить другие узлы. Подробный разбор симптомов собран в статье хотспот не работает, а проблемы доступности извне — в материале хотспот за NAT.

Решение №1 (лучшее): Ethernet-кабель

Проводное подключение кардинально снимает проблему. Никаких power-save, никакого джиттера от чужих сетей, стабильная задержка. Если хотспот стоит стационарно — тяните витую пару, это самое надёжное решение и точка.

Практика показывает: хотспот, переехавший с встроенного Wi-Fi Pi Zero на USB-Ethernet, перестаёт «булькать» мгновенно — без единой правки в конфиге.

Решение №2: если только Wi-Fi — приручаем его

Не всегда можно протянуть провод (хотспот в машине, на даче, на чердаке). Тогда Wi-Fi придётся настроить грамотно. По приоритету:

Отключить power-save — обязательный шаг

Это самое важное. Разовая команда (сбросится после перезагрузки):

Чтобы настройка пережила ребут, на системах с NetworkManager (актуальные Raspberry Pi OS на базе Bookworm) задайте для соединения параметр 802-11-wireless.powersave = 2 (значение 2 означает «выключено»):

Проверьте после перезагрузкиPower-save имеет привычку «возвращаться» после ребута или переподключения к сети, если зафиксирован только разовой командой. Обязательно перезагрузите хотспот и убедитесь, что get power_save снова показывает off — иначе заикания вернутся через неделю и вы будете гадать почему.

Сигнал и диапазон

Решение №3: нормальное питание

Неочевидный, но реальный фактор: просадка питания бьёт в первую очередь по Wi-Fi-радио. При под-вольтаже чип начинает сбоить, растут повторные передачи и потери — а внешне это выглядит как «плохой Wi-Fi». Дешёвый зарядник на 5 В / 1 А и тонкий кабель — классическая ловушка.

Подробный разбор питания, токов и кабелей — в отдельной статье питание хотспота. Не пропускайте этот пункт: половина «сетевых» жалоб лечится сменой зарядника.

Чек-лист: звук рвётся при чистом BER

Готовый хотспот, который просто работает

В DMRhub хотспот на Raspberry Pi + MMDVM настраивается автоматически прямо с портала — провижин прилетает по воздуху, проброс портов через NAT не нужен. Образ RadioStar уже собран и подхватывает сеть из коробки, а серверный AMBE-вокодер снимает нагрузку с клиента. Остаётся воткнуть кабель (или приручить Wi-Fi по этой инструкции) — и выходить в эфир.

Итог

Если хотспот декодирует эфир с чистым BER, но голос рвётся — почти всегда виновата сеть, а не радио. На Raspberry Pi с Wi-Fi первый подозреваемый — энергосбережение чипа: оно роняет realtime-поток DMR-кадров, оставаясь невидимым для обычного ping. Лучшее лекарство — Ethernet; если провод недоступен — отключите power-save и закрепите настройку, придвиньтесь к роутеру, перейдите на 5 ГГц и обеспечьте честное питание. Пройдитесь по чек-листу сверху — и заикания уйдут.

Источники

  1. Raspberry Pi Documentation — Wireless networking and power management (wlan0 power_save). raspberrypi.com
  2. G4KLX — MMDVMHost (логи, обработка голосовых кадров и потерь). github.com/g4klx/MMDVMHost
  3. Linux Wireless — iw / cfg80211 power save management. wireless.wiki.kernel.org