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

Задача:

Получите работу адаптера беспроводной локальной сети 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, сообщаемое 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)?

1 ответ

Решение

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

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

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

Другие вопросы по тегам