Пакет .ipk для OpenWrt, который делает переход клиентов между собственными сетями
роутера 2,4 ГГц и 5 ГГц простым: включаете один переключатель — остальное
настраивается само.
roamd— демон на C: band steering, 802.11v BSS Transition Management, синхронизация 802.11k Neighbor Report, автонастройка 802.11r в конфигурации Wi-Fi.luci-app-roamd— страница настройки в LuCI (Сеть → Wi-Fi Roaming) с русским переводом.
Пороги переключения по умолчанию подобраны консервативно: демон вмешивается, только когда переход точно не ухудшит связь.
| Механизм | Назначение |
|---|---|
| Band steering | Не отвечает на Probe/Auth в непредпочитаемом диапазоне, пока предпочитаемый доступен |
| 802.11v BTM | Просит уже подключённого клиента перейти в другой диапазон |
| 802.11k | Точки обмениваются Neighbor Report, клиент находит второй диапазон без полного сканирования |
| 802.11k Beacon Request | Демон просит клиента измерить второй диапазон — решение принимается по реальному RSSI |
| 802.11r | Быстрый переход без повторной аутентификации (общий mobility domain на обоих диапазонах) |
| Мастер настройки | Создаёт готовую сеть с роумингом по имени, шифрованию и паролю; сначала проверяет, что устройство это умеет |
| Проверка пары | Сверяет параметры точек разных диапазонов и показывает в таблице, где роуминг действительно работает, а где нет |
| Правила устройств | Привязка конкретного устройства к одному диапазону — «только 2,4 ГГц» или «только 5 ГГц» |
| Автонастройка | Опции 802.11k/v/r прописываются в /etc/config/wireless автоматически |
Требуется OpenWrt 21.02+ и два радиоинтерфейса разных диапазонов.
Нужный hostapd/wpad opkg подтянет сам, если его ещё нет.
Скопируйте на роутер каталог своей архитектуры и поставьте всё одной командой — opkg сам разберётся с порядком и зависимостями:
scp dist/x86_64/*.ipk root@192.168.1.1:/tmp/
ssh root@192.168.1.1 "opkg install /tmp/*roamd*.ipk"Больше ничего делать не нужно: недостающий hostapd/wpad opkg поставит сам,
служба добавится в автозагрузку и запустится, а параметры 802.11k/v/r пропишутся
в конфигурацию Wi-Fi автоматически. Если у вас уже есть сеть с одинаковым именем
на обоих диапазонах, роуминг заработает сразу после установки.
Дальше — Сеть → Wi-Fi Roaming, кнопка Создать сеть с роумингом… под таблицей радиоинтерфейсов. Мастер спросит имя сети, шифрование и пароль и сделает всё остальное сам. Если устройство однодиапазонное или чего-то не хватает, он сообщит об этом и ничего не изменит.
Если Wi-Fi уже настроен (одинаковые SSID, шифрование и пароль на обоих диапазонах), мастер не нужен — достаточно запустить службу.
Страница разделена на закладки: «Состояние роуминга», «Основные настройки», «Параметры переключения» и «Правила устройств».
Готовые пакеты лежат в dist/ по каталогам архитектур. Собрать остальные:
./build.sh (все) или ./build.sh --list (список).
Подробно, со сценариями настройки и разбором проблем — docs/USER_GUIDE.md.
| Параметр | Значение | Смысл |
|---|---|---|
| Хороший сигнал | −55 дБм | Выше — уводим в предпочитаемый диапазон |
| Слабый сигнал | −75 дБм | Ниже — предпочитаемый диапазон не предлагаем |
| Разница между диапазонами | 30 дБ | Гистерезис против метаний туда-сюда |
| Время удержания | 30 с | Пауза между попытками перевести устройство |
| Время хранения записи | 90 с | Сколько помнить отключившееся устройство |
| Окно наблюдения 5 / 2,4 ГГц | 4 / 8 с | Срок годности измерения сигнала |
Логика решения: выше −55 дБм в предпочитаемом диапазоне — уводим туда; между −75 и −55 — не вмешиваемся; ниже −75 — оставляем клиента там, где он есть.
| Документ | О чём |
|---|---|
| docs/USER_GUIDE.md | Установка, настройка, сценарии, решение проблем |
| docs/HOW_IT_WORKS.md | Принцип работы: почему роуминг ломается и чем чинится |
| docs/PITFALLS.md | Сложности разработки: что ломалось и почему |
| docs/ARCHITECTURE.md | Устройство демона: модули, вызовы ubus |
| docs/BUILD.md | Сборка под свою архитектуру |
package/roamd/ исходники демона (C) и пакет OpenWrt
package/luci-app-roamd/ веб-интерфейс LuCI и русский перевод
dist/ собранные .ipk по каталогам архитектур
docs/ документация
build.sh сборка пакетов через OpenWrt SDK
- Управляет диапазонами одного роутера. Для нескольких точек доступа нужен
usteerилиdawn. - Решение о переходе всегда остаётся за клиентом: 802.11v — это просьба, и некоторые устройства отказываются.
- Точки 6 ГГц относятся к «верхнему» диапазону вместе с 5 ГГц; отдельное предпочтение между ними не поддерживается.