客观的:
lsusb
在基于 Linux 的系统(特别是 Ubuntu 16.04.4 LTS,内核 4.13)中,让 CSL USB 2.0 WLAN 适配器在 5 GHz 频段的 AP 模式下工作。根据命令的输出,USB 适配器基于 Ralink 的芯片组,即 RT5572:
(...)
Bus 001 Device 003: ID 148f:5572 Ralink Technology, Corp. RT5572 Wireless Adapter
(...)
问题:
channel
我已经部分实现了我的目标:我能够通过设置文件中的变量将适配器设置为 5 GHz 频段的 AP,适用于通道 36、38……最多 48,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
问题:
- 为什么需要 DFS 的 5 GHz 信道不适用于此设置?
我有一些怀疑,但不知道如何去跟进:
报告的 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 芯片组上(例如,在固件/EEPROM 中设置 regdomain),并且有解决方法(例如这个例子)。但是,我找不到方法来检查 RT5572 是否也发生了同样的情况。有没有办法知道是否发生了这种情况?
- 有谁能够让 DFS 通道与 Ralink 芯片组(例如 RT5572)配合使用吗?
答案1
我找到了一些可能可以回答我自己的问题的更多信息。
仅有的一些 Linux 无线驱动程序支持动态频率选择 (DFS),即 3:ath5k
ath9k
和ath10k
。此功能在 中称为“自动信道选择 (ACS)”其他来源。
我通过检查 Linux 中无线驱动程序的源代码证实了这一点,并注意到只有驱动ath*
程序实现了诸如 之类的方法ieee80211_radar_detected()
。这也许可以解释为什么hostapd
在使用 RT5572 芯片组时无法将通道设置为 DFS 范围内的值(52 到 140)(注意:Linux 使用rt2800usb
驱动程序与 RT5572 配合使用)。