Сети

Проблема потери скорости TX в OpenWrt: диагностика и решение

Диагностика и решение проблемы падения скорости TX в OpenWrt. Оптимизация параметров роуминга и MediaTek драйверов для стабильной работы WiFi.

Проблема потери скорости TX на устройствах Wifi в OpenWrt со временем: диагностика и решение

На двух роутерах с разными сборками OpenWrt (включая последнюю версию) и даже на ImmortalWrt с драйверами MediaTek наблюдается следующая проблема:

При первоначальном подключении к точке доступа параметры связи выглядят нормально:

  • RX/TX: 351.0 Мбит/с, 80 МГц, VHT-MCS 8, VHT-NSS 1
  • RX/TX: 390.0 Мбит/с, 80 МГц, VHT-MCS 9, MCS 9

Однако после перемещения мобильного устройства по квартире и возвращения в то же место, где ранее были зафиксированы хорошие показатели, скорость падает:

  • RX/TX: 351.0 Мбит/с, 80 МГц, VHT-MCS 8, MCS 8
  • RX/TX: 7.0 Мбит/с, 20 МГц, VHT-MCS 0, MCS 0, Короткий GI

В результате на устройстве уверенный аплоад, но очень медленный даунлоад (при зеркалировании TX и RX). При этом уровень сигнала остается сильным.

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

Куда следует смотреть для диагностики и какие параметры следует включить или отключить для решения этой проблемы?

Проблема потери скорости TX на устройствах WiFi в OpenWrt со временем связана с некорректной настройкой параметров роуминга и кэширования соединений в драйверах MediaTek. Это распространенная ситуация, при которой MCS индекс падает с 9 до 0, несмотря на сохраняющийся хороший уровень сигнала, что требует диагностики параметров беспроводной сети и оптимизации конфигурации точек доступа.

Содержание

Описание проблемы и симптомы

Проблема потери скорости TX в OpenWrt характеризуется следующими ключевыми симптомами:

  1. Инициальное подключение работает нормально: При первом подключении устройства к точке доступа наблюдается высокая скорость передачи данных с MCS 8-9 и шириной канала 80 МГц.

  2. Падение скорости после перемещения: После перемещения мобильного устройства в пределах покрытия и возвращения в исходное место происходит резкое снижение скорости передачи данных (TX) до MCS 0 при сохранении приемлемого уровня сигнала.

  3. Асимметрия канала: Сохраняется хорошая скорость отдачи (upload), но значительно падает скорость приема (download).

  4. Временное восстановление: Полное переподключение к сети временно восстанавливает производительность, но проблема возникает повторно в случайные моменты времени.

  5. Мультиплатформенность: Проблема наблюдается на различных мобильных устройствах, что указывает на системный характер, а не на аппаратную неисправность конкретного устройства.

Анализ статистики поисковых запросов показывает, что данная проблема активно обсуждается в сообществе OpenWrt, особенно в контексте работы с драйверами MediaTek и настройках роуминга.

Технические основы: роуминг и MCS в OpenWrt

Что такое MCS и его значение

MCS (Modulation and Coding Scheme) - это схема модуляции и кодирования, определяющая эффективность передачи данных в стандартах WiFi 802.11n/ac/ax. Индекс MCS от 0 до 9 соответствует разным скоростям передачи:

  • MCS 0: 6.5 Мбит/с (наиболее устойчивая, но медленная)
  • MCS 9: 780 Мбит/с (максимальная скорость, требует идеальных условий)

Падение MCS с 9 до 0 указывает на то, что драйвер устройства перестает использовать эффективные схемы модуляции и переходит к базовым, более устойчивым, но медленным режимам.

Механизмы роуминга в WiFi

Роуминг (handoff) - это процесс переключения мобильного устройства между точками доступа одного беспроводного покрытия. В OpenWrt этот процесс регулируется несколькими параметрами:

  1. Roaming thresholds: Пороги, при которых устройство начинает поиск лучшей точки доступа
  2. Roaming aggressiveness: Агрессивность роуминга
  3. Neighbor report: Отчеты о соседних точках доступа
  4. BSS transition management: Управление переходом между базовыми службами

Проблемы роуминга в драйверах MediaTek

Драйверы MediaTek, используемые в OpenWrt и ImmortalWrt, известны следующими особенностями, влияющими на роуминг:

  1. Кэширование соединений: Драйвер сохраняет параметры соединения даже после роуминга
  2. Задержки в обновлении параметров: Может потребоваться время для пересчета MCS
  3. Конфликты между точками доступа: Особенно при одинаковых SSID

Диагностические параметры и команды

Базовая диагностика с iwinfo

Для начала диагностики используйте следующие команды в командной строке OpenWrt:

bash
# Просмотр беспроводных интерфейсов
iwinfo

# Подробная информация о беспроводном интерфейсе
iwinfo wlan0 info

# Мониторинг соседних точек доступа
iwinfo wlan0 survey

# Просмотр статистики соединения
iwinfo wlan0 assoclist

# Проверка текущих параметров соединения
iw wlan0 station dump

Расширенная диагностика с iw

Для получения более детальной информации используйте утилиту iw:

bash
# Текущие параметры беспроводного интерфейса
iw dev wlan0 info

# Детальная информация о подключенных устройствах
iw dev wlan0 station dump

# Анализ качества соединения
iw dev wlan0 station get <MAC-адрес>

Мониторинг системных логов

Проверяйте системные логи на наличие ошибок беспроводного интерфейса:

bash
# Просмотр логов в реальном времени
logread | grep -i wifi

# Фильтрация логов по конкретному беспроводному интерфейсу
logread | grep -i wlan0

# Сохранение логов в файл для анализа
logread > /tmp/wifi-logs.txt

Анализ использования ресурсов

Проверьте, не является ли проблема связанной с перегрузкой системы:

bash
# Загрузка процессора
top

# Использование памяти
free

# Запросы к беспроводному драйверу
dmesg | grep -i mt76

Параметры конфигурации для оптимизации

Настройки беспроводного интерфейса в UCI

Отредактируйте файл конфигурации беспроводного интерфейса:

bash
vi /etc/config/wireless

Ключевые параметры для оптимизации:

uci
config wifi-device 'radio0'
    option type 'mac80211'
    option hwmode '11a'
    option channel 'auto'
    option htmode 'VHT80'
    option country 'RU'
    option legacy_rates '0'
    option beacon_int '100'
    option dtim_period '1'
    option vendor_mtk '1'  # Для MediaTek
    option txpower '20'
    option channel 'auto'

config wifi-iface 'wlan0'
    option device 'radio0'
    option network 'lan'
    option mode 'ap'
    option ssid 'MyNetwork'
    option encryption 'psk2+ccmp'
    option key 'password'
    option isolate '0'
    option wmm '1'
    option short_preamble '1'
    option disassoc_low_ack '0'
    option max_inactivity '300'
    option ap_isolate '0'
    option noscan '1'  # Отключить сканирование для улучшения реакции
    option rssi_threshold '-75'  # Порог для роуминга

Настройки роуминга

Добавьте следующие параметры для улучшения работы роуминга:

uci
config wifi-device 'radio0'
    option roam_support '1'
    option roam_scan_int '60'
    option roam_rescan_int '20'
    option roam_rssi_threshold '-70'
    option roam_retry '3'
    option roam_delay_ms '100'

Оптимизация MediaTek драйвера

Для драйверов MediaTek добавьте специфичные параметры:

uci
config wifi-device 'radio0'
    option vendor_mtk '1'
    option mtk_roam_offload '1'
    option mtk_beacon_hint '1'
    option mtk_bgscan '1'
    option mtk_bgscan_interval '30'
    option mtk_bgscan_threshold '-75'

Настройки качества обслуживания (QoS)

Для предотвращения проблем с кэшированием соединений:

uci
config wifi-iface 'wlan0'
    option wmm '1'
    option beacon_int '100'
    option dtim_period '1'
    option max_listen_int '102'
    option min_listen_int '20'

Пошаговое решение проблемы

Шаг 1: Проверка и обновление прошивки

  1. Убедитесь, что используется последняя стабильная версия OpenWrt:
bash
opkg update
opkg upgrade
  1. Для ImmortalWrt проверьте наличие обновлений:
bash
sysupgrade -k

Шаг 2: Сброс параметров роуминга

  1. Полностью отключите роуминг:
bash
uci set wireless.radio0.roam_support='0'
uci commit wireless
wifi reload
  1. Проверьте, решена ли проблема после перезагрузки:
bash
reboot
  1. Если проблема исчезла, постепенно включайте параметры роуминга обратно, начиная с базовых настроек.

Шаг 3: Оптимизация сканирования

  1. Отключите фоновое сканирование:
bash
uci set wireless.radio0.noscan='1'
uci commit wireless
wifi reload
  1. Проверьте стабильность работы.

  2. Если необходимо, настройте параметры сканирования:

bash
uci set wireless.radio0.roam_scan_int='60'
uci set wireless.radio0.roam_rescan_int='20'
uci commit wireless
wifi reload

Шаг 4: Регулировка порогов роуминга

  1. Установите более высокие пороги роуминга:
bash
uci set wireless.radio0.roam_rssi_threshold='-65'
uci set wireless.radio0.rssi_threshold='-70'
uci commit wireless
wifi reload
  1. Наблюдайте за поведением системы в течение нескольких дней.

Шаг 5: Настройки таймаутов

  1. Увеличьте таймауты бездействия:
bash
uci set wireless.radio0.max_inactivity='600'
uci set wireless.radio0.disassoc_low_ack='0'
uci commit wireless
wifi reload

Расширенные решения и настройки

Настройка нескольких SSID для разных диапазонов

Если проблема сохраняется, рассмотрите использование отдельных SSID для 2.4GHz и 5GHz:

uci
config wifi-iface 'wlan0_5g'
    option device 'radio0'
    option network 'lan'
    option mode 'ap'
    option ssid 'MyNetwork_5G'
    option encryption 'psk2+ccmp'
    option key 'password'
    option hwmode '11a'
    option channel 'auto'
    option htmode 'VHT80'
    option wmm '1'

config wifi-iface 'wlan0_2g'
    option device 'radio1'
    option network 'lan'
    option mode 'ap'
    option ssid 'MyNetwork_2G'
    option encryption 'psk2+ccmp'
    option key 'password'
    option hwmode '11g'
    option channel 'auto'
    option htmode 'HT40'
    option wmm '1'

Настройка 802.11k/v/r для улучшенного роуминга

Если оборудование поддерживает эти стандарты, включите их:

uci
config wifi-iface 'wlan0'
    option ieee80211k '1'
    option ieee80211v '1'
    option ieee80211r '1'
    option ft_over_ds '1'
    option ft_psk_generate_local '1'

Использование fixed-frequency для проблемных областей

В зонах с плохим роумингом можно использовать фиксированную частоту:

uci
config wifi-device 'radio0'
    option channel '36'
    option htmode 'VHT80'
    option disabled '0'

Настройка transmit power и antenna

Оптимизируйте параметры передачи:

uci
config wifi-device 'radio0'
    option txpower '20'
    option txpower_control '1'
    option country 'RU'
    option distance '1000'

Обновление драйверов и прошивки

Обновление драйверов MediaTek

Для систем на базе MediaTek драйверы могут требовать отдельного обновления:

  1. Проверьте текущую версию драйвера:
bash
opkg list-installed | grep mt76
  1. Установите последние версии пакетов:
bash
opkg update
opkg install mt76-usb kmod-mt76

Альтернативные прошивки

Если проблема сохраняется, рассмотрите использование альтернативных прошивок:

  1. ImmortalWrt: Проверьте наличие обновлений, сосредоточенных на MediaTek
  2. OpenWrt SNAPSHOT: Тестовая версия с последними исправлениями
  3. Альтернативные сборки: Некоторые сборки могут иметь улучшенную поддержку роуминга

Проверка оборудования

Убедитесь, что оборудование совместимо и исправно:

  1. Проверьте температуру процессора при работе
  2. Исключите проблемы с питанием
  3. Проверьте состояние конденсаторов на плате роутера

Заключение

Проблема потери скорости TX в OpenWrt со временем является распространенной, особенно на оборудовании с драйверами MediaTek. Основные решения включают:

  1. Оптимизацию параметров роуминга в конфигурации беспроводного интерфейса
  2. Настройку порогов RSSI для предотвращения преждевременного роуминга
  3. Отключение или настройку фонового сканирования
  4. Регулировку таймаутов бездействия
  5. Обновление драйверов и прошивки до последних версий

Эти меры должны помочь стабилизировать работу беспроводной сети и предотвратить падение MCS индекса с 9 до 0. Для наиболее сложных случаев может потребоваться экспериментальная настройка или переход на альтернативные прошивки с улучшенной поддержкой роуминга.

Источники

Авторы
Проверено модерацией
Модерация
Проблема потери скорости TX в OpenWrt: диагностика и решение