В современном мире устройств интернета вещей (IoT) и умных домашних систем удобная и быстрая настройка подключения к беспроводной сети становится критически важной. Традиционно многое устройство используют Bluetooth Low Energy (BLE) для первоначального подключения и передачи конфигурационной информации Wi-Fi, однако этот метод имеет свои ограничения и сложности, особенно на устройствах с ограниченными ресурсами, таких как Raspberry Pi. В качестве современной альтернативы можно рассмотреть использование Wi-Fi Direct — технологии, которая позволяет создавать прямое беспроводное соединение Wi-Fi между устройствами без необходимости в маршрутизаторе или точке доступа. Именно этот подход предлагает новую перспективу для бесшовного подключения и настройки Wi-Fi на устройствах Raspberry Pi без использования BLE. Одной из ключевых проблем при настройке Wi-Fi через классическое беспроводное соединение с применением стандартных точек доступа является ограничение многозадачности интерфейса Wi-Fi адаптера.
В типичных реализациях SoftAP (программной точки доступа), например, когда устройство одновременно выступает и в роли клиента, и в роли точки доступа, наблюдаются кратковременные прерывания связи. Такие сбои особенно заметны при смене Wi-Fi настроек, что ухудшает пользовательский опыт. При этом многие операционные системы — Windows, iOS, macOS — во время попыток переподключения достаточно терпеливо относятся к прерываниям, если процесс восстановления происходит достаточно быстро. В других же системах, таких как Android или ChromeOS, обрыв подключения влечет за собой более жесткие реакции, вплоть до отмены попыток переподключения, что заставляет пользователя вручную восстанавливать соединение. Одним из способов минимизировать такие проблемы является использование функционала Wi-Fi Direct, а именно создания постоянной группы Wi-Fi Direct (Persistent Group, P2P-GO).
В данной конфигурации Raspberry Pi ведет себя как отдельная точка доступа, работающая через Wi-Fi Direct, что позволяет организовать одновременную работу в режиме клиента и точки доступа с гораздо меньшими потерями соединения и разрывами. При этом данные о клиентах сохраняются, а повторное создание групп проходит без отправки дисассоциационных пакетов, что сокращает время переподключения и уменьшает задержки. Технология Wi-Fi Direct поддерживает множество современных возможностей аппаратных адаптеров, включая работу на разных частотных каналах одновременно. Это становится большим преимуществом по сравнению с классической SoftAP-реализацией, так как позволяет использовать разные каналы для подключения к домашней сети и для организации точки доступа на самом устройстве. В свою очередь, это уменьшает возможные помехи и повышает стабильность соединения между клиентом и устройством.
Для успешного использования Wi-Fi Direct в качестве метода настройки Wi-Fi следует иметь в виду, что на уровне программного обеспечения потребуются специально настроенные компоненты, такие как wpa_supplicant и hostapd — стандартные инструменты Linux для управления беспроводными интерфейсами. В частности, необходимо настроить wpa_supplicant таким образом, чтобы он создавал постоянную Wi-Fi Direct группу, а также позволял динамически переключать параметры подключения без прерывания работы точки доступа. Для этого в конфигурационных файлах указывается режим работы, SSID будущей точки доступа, пароль безопасности, а также настройки каналов и расширенных возможностей стандарта, таких как HT, VHT и HE (используются для получения высокой пропускной способности и стабильности на частотах 2,4 ГГц и 5 ГГц). Практическая реализация такого подхода была протестирована на различных моделях одноплатных компьютеров, включая Raspberry Pi Zero 2W, Raspberry Pi 3B+, 4, 5, а также на устройствах Radxa Zero 3W и Orange Pi Zero. В этих системах, благодаря поддержке многорежимной работы Wi-Fi адаптера с одновременной работой в нескольких каналах, удалось добиться высокой устойчивости и минимальных задержек при переключении Wi-Fi конфигураций.
Для проверки поддержки многорежимной работы и многоканального режима можно использовать команду iw list, которая предоставляет детальную информацию о допустимых комбинациях сетевых интерфейсов и поддерживаемых частотах. Это позволяет убедиться, что выбранный адаптер способен одновременно функционировать как клиент Wi-Fi и как Wi-Fi Direct точка доступа. При настройке через wpa_cli — командный интерфейс для wpa_supplicant — можно оперативно добавлять новые сети, включать и отключать режим групп Wi-Fi Direct, а также выделять частоты для работы точки доступа без влияния на основной соединительный канал. Это позволяет выполнять переподключения и смену паролей для домашних сетей без прерывания доступа клиентов, подключенных к устройству в режиме точки доступа. Что касается производительности, использование Wi-Fi Direct в качестве точки доступа на Raspberry Pi дает весьма приемлемые результаты.
Хотя при одновременном управлении двумя каналами наблюдается небольшое увеличение задержек и незначительное падение скорости передачи, подобное поведение считается нормальным для большинства IoT-приложений, где главное — стабильность и непрерывность соединения, а не максимальная пропускная способность. Например, на Radxa Zero 3W общий синтетический поток составлял до 260 Мбит/с в режиме SoftAP с Wi-Fi Direct, что значительно лучше классических SoftAP решений. Raspberry Pi Zero 2W достигал около 40-50 Мбит/с в реальных условиях. Преимущества подхода с Wi-Fi Direct заключаются не только в надежности и снижении прерываний, но и в широком спектре поддержки клиентов. Клиентская часть устройств, как iOS, так и Android, Windows, macOS, не требует наличия полноценного Wi-Fi Direct для подключения к такой точке доступа, что делает метод удобным и кроссплатформенным.
Это уменьшает сложность установки и делает процесс подключение более интуитивным для конечного пользователя. Важный нюанс — правильное указание страны (country=US и аналогично) в конфигурационных файлах wpa_supplicant, которое обеспечивает корректную работу мультиканальности и поддерживает автоматическое переключение каналов (Channel Switch Announcements). Благодаря этому при изменении параметров домашней сети не происходит неконтролируемых помех и разрывов, что положительно сказывается на общем пользовательском опыте. Из упомянутых особенностей стоит выделить, что проблема со стандартными SoftAP решениями часто связана с необходимостью полной перезагрузки службы hostapd при смене параметров, что приводит к кратковременным разрывам подключения. Использование постоянных групп Wi-Fi Direct позволяет обходить эти ограничения, поскольку wpa_supplicant в данном случае не требует полной перезагрузки и не отправляет дисассоциирующие сообщения, что существенно снижает вероятность разрывов.