Задача:

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

1 ответ1

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .