我被要求解决具有 80MHz 信道宽度的 802.11ac 无线网络的问题。在监控模式下设置无线设备时,我无法将 80Mhz 通道宽度指定为iw.
我已经验证我的调节器域允许 80 MHz 通道
iw reg get
country US: DFS-FCC
(2402 - 2472 @ 40), (N/A, 30), (N/A)
(5170 - 5250 @ 80), (N/A, 17), (N/A)
(5250 - 5330 @ 80), (N/A, 23), (0 ms), DFS
(5490 - 5730 @ 160), (N/A, 23), (0 ms), DFS
(5735 - 5835 @ 80), (N/A, 30), (N/A)
(57240 - 63720 @ 2160), (N/A, 40), (N/A)
Run Code Online (Sandbox Code Playgroud)
但是,当我发出以下iw命令以使用 Channel 40 时,我只会收到错误消息。
# iw dev <devname> set freq <control freq> [20|40|80|80+80|160] [<center freq 1>] [<center freq 2>]
$ sudo iw wlo1 set freq 5200 80
command failed: Invalid argument (-22)
$ sudo iw wlo1 set freq 5210 80
command failed: Invalid argument (-22)
$ sudo iw wlo1 set freq 5200 80 5210
command failed: Invalid argument (-22)
$ sudo iw wlo1 set freq 5210 80 5210
command failed: Invalid argument (-22)
$ sudo iw wlo1 set freq 5210 80 5200
command failed: Invalid argument (-22)
$ sudo iw wlo1 set channel 42
command failed: Invalid argument (-22)
Run Code Online (Sandbox Code Playgroud)
我也对控制频率和中心频率之间的区别以及它们与频道编号的关系感到有些困惑。维基百科WLAN 信道列表说,信道宽度为 20 MHz 的信道 40 跨越 5190-5210 MHz 的频率。这似乎暗示,如果我使用的是 80 MHz 通道宽度,我实际上使用的是通道 42,但这也不起作用。这个插图很好地说明了通道。如果我将“中心频率”解释为“最高频率和最低频率之间的频率”,那么这将是 5210 MHz,那么控制频率是多少?频道 40 是 5200 MHz 吗?通道 42 为 5210 MHz?
唯一有效的iw命令是set channel 40,这会产生 20 MHz 的信道宽度。
小智 7
对于 OP 来说可能为时已晚,但是对于通过 Google 到达的人们来说......
在 802.11ac 中,80 MHz 信道覆盖 4 个 20 MHz 信道。20 MHz 信道之一被指定为控制信道。OP 引用的数字很好地说明了这一点。当使用信道 40 作为控制信道时,80 MHz 信道将覆盖信道 36、40、44 和 48。信道 36 与 40 MHz 共享相同的 40 MHz 和 80 MHz 信道。如果主机在通道 36 上传输帧,则通道 40 上的网络仍然可以使用 20 MHz 通道 40 进行传输,而不必等待通道 36 上的流量清除。
中心频率iw <dev> set freq要在 80 MHz 频道的中心。中心频率可以从图中的 80 MHz 信道边界计算为 (5170 MHz + 5250 MHz) / 2 = 5210 MHz,或从子信道中心频率 (5180 MHz + 5240 MHz) / 2 = 5210 MHz 计算。
如果由于某种原因您手边没有图表,另一种获取频道到频率映射的方法是通过iw list,它在“频率”部分列出了支持的频道及其 20 MHz 中心频率。
频道 40 是 5200 MHz,所以sudo iw wlo1 set freq 5200 80 5210应该可以工作。
您提到使用英特尔 NIC,但没有提到使用哪种型号。要检查的几件事:
iw list。我有一个 AC7265,它支持 MCS 0-9 的 VHT RX 和 TX,最多有两个流。dmesg当驱动程序加载时,固件有问题的指示器将出现在引导消息中。假设您的英特尔网卡使用 iwlwifi,您应该会看到类似“iwlwifi 0000:03:00.0:加载的固件版本 22.391740.0 op_mode iwlmvm”的内容。如果在最终成功消息之前有几条失败消息,请不要担心。只要确保一个最终加载。该iwlwifi驱动程序页面,固件节 描述了如果您想确保没有更新版本,如何获取最新固件。为 802.11ac 启用模块选项。在/etc/modprobe.d/iwlwifi.conf,我有以下内容:
# /etc/modprobe.d/iwlwifi.conf
# iwlwifi will dyamically load either iwldvm or iwlmvm depending on the
# microcode file installed on the system. When removing iwlwifi, first
# remove the iwl?vm module and then iwlwifi.
remove iwlwifi \
(/sbin/lsmod | grep -o -e ^iwlmvm -e ^iwldvm -e ^iwlwifi | xargs /sbin/rmmod) \
&& /sbin/modprobe -r mac80211
options iwlwifi 11n_disable=8 amsdu_size=3
Run Code Online (Sandbox Code Playgroud)该amsdu_size=3选项将传入缓冲区的大小增加到足以接收 12 KB 聚合。它增加了驱动程序的内存占用,但没有它嗅探器将丢弃更大的聚合。
该11n_disable=8选项在传输时启用数据包聚合,这对于监控模式来说不是严格需要的,但如果您曾经在监控模式之外使用 Wi-Fi ,则性能会显着提高。
| 归档时间: |
|
| 查看次数: |
9529 次 |
| 最近记录: |