Wi-Fi или Ethernet для хотспота: почему теряются пакеты и рвётся звук
Картина знакомая многим: хотспот собран, рация декодирует репитер с 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 в логе. Высокий BER (единицы и десятки процентов) при заиканиях — это РЧ: антенна, частота, уровень сигнала. Низкий BER при заиканиях — сеть.
- Долгий ping с большим интервалом частоты. Запустите ping -i 0.06 (флуд каждые 60 мс, как DMR) до роутера на пару минут. Если потери и скачки задержки появляются именно на частом ping, а на обычном их нет — диагноз поставлен.
- Перенос на провод. Самый честный тест: воткните Ethernet-кабель и повторите тот же разговор. Если звук стал ровным — дело было в Wi-Fi на 100%.
- Соседние сети. На 2,4 ГГц в плотной застройке десятки чужих точек забивают эфир. Скан Wi-Fi покажет, насколько канал зашумлён.
Если же звук рвётся и на проводе — причина не в Wi-Fi, и стоит проверить другие узлы. Подробный разбор симптомов собран в статье хотспот не работает, а проблемы доступности извне — в материале хотспот за NAT.
Решение №1 (лучшее): Ethernet-кабель
Проводное подключение кардинально снимает проблему. Никаких power-save, никакого джиттера от чужих сетей, стабильная задержка. Если хотспот стоит стационарно — тяните витую пару, это самое надёжное решение и точка.
- На Raspberry Pi 3B/3B+/4 есть встроенный гигабитный или 100-мегабитный порт — просто воткните кабель, DHCP подхватит адрес.
- На Raspberry Pi Zero/Zero 2 W порта нет — но проблему решает копеечный USB-OTG переходник на Ethernet (на чипе вроде RTL8152). Linux подхватывает их без танцев.
- Если до роутера далеко — лучше PowerLine-адаптер (HomePlug) по электропроводке, чем Wi-Fi. Задержка предсказуемее.
Практика показывает: хотспот, переехавший с встроенного Wi-Fi Pi Zero на USB-Ethernet, перестаёт «булькать» мгновенно — без единой правки в конфиге.
Решение №2: если только Wi-Fi — приручаем его
Не всегда можно протянуть провод (хотспот в машине, на даче, на чердаке). Тогда Wi-Fi придётся настроить грамотно. По приоритету:
Отключить power-save — обязательный шаг
Это самое важное. Разовая команда (сбросится после перезагрузки):
- iw dev wlan0 set power_save off — проверить текущее состояние можно командой iw dev wlan0 get power_save.
Чтобы настройка пережила ребут, на системах с NetworkManager (актуальные Raspberry Pi OS на базе Bookworm) задайте для соединения параметр 802-11-wireless.powersave = 2 (значение 2 означает «выключено»):
- nmcli connection modify <имя> 802-11-wireless.powersave 2
- На старых системах без NetworkManager помогает строка iwconfig wlan0 power off в скрипте автозапуска или правило драйвера brcmfmac.
Сигнал и диапазон
- Ближе к роутеру. Чем выше уровень сигнала, тем меньше повторных передач на канальном уровне и тем стабильнее доставка. Хотспот за двумя стенами на краю покрытия — частая причина рваного звука.
- 5 ГГц вместо 2,4 ГГц. Диапазон 5 ГГц менее загружен и даёт меньше джиттера. Но учтите: встроенный Wi-Fi у Pi Zero 2 W и базовых Zero — только 2,4 ГГц. Для 5 ГГц нужен Pi 3B+/4 или внешний USB-адаптер.
- Фиксированный канал на роутере. Авто-выбор канала иногда перескакивает в самый разгар QSO. Выберите свободный канал вручную по результатам скана.
Решение №3: нормальное питание
Неочевидный, но реальный фактор: просадка питания бьёт в первую очередь по Wi-Fi-радио. При под-вольтаже чип начинает сбоить, растут повторные передачи и потери — а внешне это выглядит как «плохой Wi-Fi». Дешёвый зарядник на 5 В / 1 А и тонкий кабель — классическая ловушка.
- Используйте блок питания с честным током (для Pi 3/4 — от 2,5-3 А), желательно с напряжением чуть выше 5 В под нагрузкой.
- Кабель — короткий и толстый. Метровый «лапшичный» microUSB роняет напряжение на полвольта на одних только проводах.
- Признак под-вольтажа — иконка молнии в углу экрана или записи о throttling в системном логе.
Подробный разбор питания, токов и кабелей — в отдельной статье питание хотспота. Не пропускайте этот пункт: половина «сетевых» жалоб лечится сменой зарядника.
Чек-лист: звук рвётся при чистом BER
- 1. Логи: BER около нуля? Значит, проблема сетевая, а не РЧ.
- 2. Воткнуть Ethernet и проверить тот же разговор — звук выровнялся? Виноват Wi-Fi.
- 3. Нет возможности тянуть провод — отключить power-save: iw dev wlan0 set power_save off + закрепить через NetworkManager (powersave 2).
- 4. Перезагрузить и убедиться, что power-save остался выключен.
- 5. Придвинуть хотспот к роутеру, по возможности перейти на 5 ГГц, зафиксировать канал.
- 6. Проверить питание: качественный БП на 2,5-3 А и короткий толстый кабель.
- 7. Если звук рвётся даже на проводе — копать дальше по чек-листу неисправностей.
Готовый хотспот, который просто работает
В DMRhub хотспот на Raspberry Pi + MMDVM настраивается автоматически прямо с портала — провижин прилетает по воздуху, проброс портов через NAT не нужен. Образ RadioStar уже собран и подхватывает сеть из коробки, а серверный AMBE-вокодер снимает нагрузку с клиента. Остаётся воткнуть кабель (или приручить Wi-Fi по этой инструкции) — и выходить в эфир.
Итог
Если хотспот декодирует эфир с чистым BER, но голос рвётся — почти всегда виновата сеть, а не радио. На Raspberry Pi с Wi-Fi первый подозреваемый — энергосбережение чипа: оно роняет realtime-поток DMR-кадров, оставаясь невидимым для обычного ping. Лучшее лекарство — Ethernet; если провод недоступен — отключите power-save и закрепите настройку, придвиньтесь к роутеру, перейдите на 5 ГГц и обеспечьте честное питание. Пройдитесь по чек-листу сверху — и заикания уйдут.
Источники
- Raspberry Pi Documentation — Wireless networking and power management (wlan0 power_save). raspberrypi.com
- G4KLX — MMDVMHost (логи, обработка голосовых кадров и потерь). github.com/g4klx/MMDVMHost
- Linux Wireless — iw / cfg80211 power save management. wireless.wiki.kernel.org