Беспроводной адаптер на базе Ralink RT5572 не работает в режиме AP в диапазоне 5 ГГц с DFS

947
fortune_pickle

Задача:

Получите работу адаптера беспроводной локальной сети CSL USB 2.0 в режиме AP в диапазоне 5 ГГц в системе на основе Linux (в частности, Ubuntu 16.04.4 LTS, ядро ​​4.13). Адаптер USB основан на чипсете от Ralink, а именно RT5572, согласно выводу lsusbкоманды:

(...) Bus 001 Device 003: ID 148f:5572 Ralink Technology, Corp. RT5572 Wireless Adapter (...) 

Проблема:

Я частично достиг своей цели: я могу установить адаптер в качестве точки доступа в диапазоне 5 ГГц для каналов 36, 38, ... до 48, установив переменную channelв hostapd.confфайле, как показано ниже.

interface=wlx24050f615114 driver=nl80211 ssid=nikola-tesla hw_mode=a ieee80211n=1 ht_capab=HT40+ channel=48 country_code=PT macaddr_acl=0 auth_algs=1 # 1=wpa, 2=wep, 3=both wpa=2 # WPA2 only wpa_key_mgmt=WPA-PSK  rsn_pairwise=CCMP wpa_passphrase=xxxxxxxxxx ignore_broadcast_ssid=0 logger_syslog=-1 logger_syslog_level=0 

Однако «более высокие» каналы не работают. Например, если я установил channel=52(или больше), установка AP завершится неудачно со следующими сообщениями об ошибках от hostapd:

hostapd: wlx24050f615114: IEEE 802.11 Configured channel (52) not found from the channel list of current mode (2) IEEE 802.11a hostapd: wlx24050f615114: IEEE 802.11 Hardware does not support configured channel 

Обратите внимание, что ни один из каналов в «рабочем» диапазоне не требует обнаружения радара (т. Е. Требования DFS не требуется), как показано в результате iw listниже.

Band 2: Bitrates (non-HT): * 6.0 Mbps * 9.0 Mbps * 12.0 Mbps * 18.0 Mbps * 24.0 Mbps * 36.0 Mbps * 48.0 Mbps * 54.0 Mbps Frequencies: * 5170 MHz [34] (disabled) * 5180 MHz [36] (20.0 dBm) * 5190 MHz [38] (20.0 dBm) * 5200 MHz [40] (20.0 dBm) * 5210 MHz [42] (20.0 dBm) * 5220 MHz [44] (20.0 dBm) * 5230 MHz [46] (20.0 dBm) * 5240 MHz [48] (20.0 dBm) * 5260 MHz [52] (20.0 dBm) (radar detection) DFS state: usable (for 15263 sec) DFS CAC time: 60000 ms * 5280 MHz [56] (20.0 dBm) (radar detection) DFS state: usable (for 15263 sec) DFS CAC time: 60000 ms * 5300 MHz [60] (20.0 dBm) (radar detection) DFS state: usable (for 15263 sec) DFS CAC time: 60000 ms * 5320 MHz [64] (20.0 dBm) (radar detection) DFS state: usable (for 15263 sec) DFS CAC time: 60000 ms 

Вопросы:

  • Почему каналы 5 ГГц, требующие DFS, не работают с этой настройкой?

У меня есть некоторые подозрения, но я не знаю, как их исправить:

Время DFS CAC (проверка доступности канала), о котором сообщается, iw reg getсоставляет 0 мс (показано ниже), а значение, заданное параметром, iw listсоставляет 60 секунд (как показано выше).

country PT: DFS-ETSI (2402 - 2482 @ 40), (N/A, 20), (N/A) (5170 - 5250 @ 80), (N/A, 20), (N/A) (5250 - 5330 @ 80), (N/A, 20), (0 ms), DFS (5490 - 5710 @ 160), (N/A, 27), (0 ms), DFS (57000 - 66000 @ 2160), (N/A, 40), (N/A) 

Может быть, поэтому каналы с требованиями DFS не работают? Мое предположение здесь, что макс. допустимое время CAC 0 мс блокирует каждую попытку обнаружения радара.

Могут быть дополнительные ограничения домена, «сгоревшие» в устройстве. Я знаю, что эта проблема может возникать с наборами микросхем Atheros (например, набором regdomain в прошивке / EEPROM), и что для этого есть обходные пути (например, как в этом примере ). Однако я не смог найти способ проверить, происходит ли то же самое с RT5572. Есть ли способ узнать, происходит ли это?

  • Кто-нибудь смог заставить каналы DFS работать с чипсетами Ralink (например, RT5572)?
0

1 ответ на вопрос

0
fortune_pickle

Я нашел дополнительную информацию, которая может ответить на мой собственный вопрос.

Только несколько беспроводных драйверов Linux поддерживают динамический выбор частоты (DFS), а именно 3: ath5k ath9kи ath10k. Эта функция называется «Автоматический выбор канала (ACS)» в другом источнике .

Я подтвердил это, проверив исходный код беспроводных драйверов в Linux, и заметил, что только ath*драйверы реализуют такие методы, как ieee80211_radar_detected(). Это может объяснить, почему hostapdнельзя установить значение канала в диапазоне DFS (от 52 до 140), когда используется чипсет RT5572 (примечание: Linux использует rt2800usbдрайвер для работы с RT5572).

Похожие вопросы