我正在尝试创建一个运行 Ubuntu 20.04 的 5GHz 接入点。我的无线适配器是英特尔公司的 Cannon Point-LP CNVi。
旁注:2.4GHz 接入点全天工作,但我需要 5GHz。
我已经使用 iw 列表验证了适配器支持 AP 以及 5GHz 频率:
Supported interface modes:
* IBSS
* managed
* AP
* AP/VLAN
* monitor
* P2P-client
* P2P-GO
* P2P-device
--
Frequencies:
* 5180 MHz [36] (22.0 dBm)
* 5200 MHz [40] (22.0 dBm)
* 5220 MHz [44] (22.0 dBm)
* 5240 MHz [48] (22.0 dBm)
* 5260 MHz [52] (22.0 dBm) (no IR, radar detection)
* 5280 MHz [56] (22.0 dBm) (no IR, radar detection)
* 5300 MHz [60] (22.0 dBm) (no IR, radar detection)
* 5320 MHz [64] (22.0 dBm) (no IR, radar detection)
* 5340 MHz [68] (disabled)
* 5360 MHz [72] (disabled)
* 5380 MHz [76] (disabled)
* 5400 MHz [80] (disabled)
* 5420 MHz [84] (disabled)
* 5440 MHz [88] (disabled)
* 5460 MHz [92] (disabled)
* 5480 MHz [96] (disabled)
* 5500 MHz [100] (22.0 dBm) (no IR, radar detection)
* 5520 MHz [104] (22.0 dBm) (no IR, radar detection)
* 5540 MHz [108] (22.0 dBm) (no IR, radar detection)
* 5560 MHz [112] (22.0 dBm) (no IR, radar detection)
* 5580 MHz [116] (22.0 dBm) (no IR, radar detection)
* 5600 MHz [120] (22.0 dBm) (no IR, radar detection)
* 5620 MHz [124] (22.0 dBm) (no IR, radar detection)
* 5640 MHz [128] (22.0 dBm) (no IR, radar detection)
* 5660 MHz [132] (22.0 dBm) (no IR, radar detection)
* 5680 MHz [136] (22.0 dBm) (no IR, radar detection)
* 5700 MHz [140] (22.0 dBm) (no IR, radar detection)
* 5720 MHz [144] (22.0 dBm) (no IR, radar detection)
* 5745 MHz [149] (22.0 dBm)
* 5765 MHz [153] (22.0 dBm)
* 5785 MHz [157] (22.0 dBm)
* 5805 MHz [161] (22.0 dBm)
* 5825 MHz [165] (22.0 dBm)
* 5845 MHz [169] (disabled)
* 5865 MHz [173] (disabled)
* 5885 MHz [177] (disabled)
* 5905 MHz [181] (disabled)
我已使用 iw reg set US 将我的国家代码设置为美国,iw reg get 的输出为:
global
country US: DFS-FCC
(2400 - 2472 @ 40), (N/A, 30), (N/A)
(5150 - 5250 @ 80), (N/A, 23), (N/A), AUTO-BW
(5250 - 5350 @ 80), (N/A, 23), (0 ms), DFS, AUTO-BW
(5470 - 5730 @ 160), (N/A, 23), (0 ms), DFS
(5730 - 5850 @ 80), (N/A, 30), (N/A)
(57240 - 71000 @ 2160), (N/A, 40), (N/A)
phy#0 (self-managed)
country US: DFS-UNSET
(2402 - 2437 @ 40), (6, 22), (N/A), AUTO-BW, NO-HT40MINUS, NO-80MHZ, NO-160MHZ
(2422 - 2462 @ 40), (6, 22), (N/A), AUTO-BW, NO-80MHZ, NO-160MHZ
(2447 - 2482 @ 40), (6, 22), (N/A), AUTO-BW, NO-HT40PLUS, NO-80MHZ, NO-160MHZ
(5170 - 5190 @ 160), (6, 22), (N/A), AUTO-BW, NO-HT40MINUS
(5190 - 5210 @ 160), (6, 22), (N/A), AUTO-BW, NO-HT40PLUS
(5210 - 5230 @ 160), (6, 22), (N/A), AUTO-BW, NO-HT40MINUS
(5230 - 5250 @ 160), (6, 22), (N/A), AUTO-BW, NO-HT40PLUS
(5250 - 5270 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, PASSIVE-SCAN
(5270 - 5290 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, PASSIVE-SCAN
(5290 - 5310 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, PASSIVE-SCAN
(5310 - 5330 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, PASSIVE-SCAN
(5490 - 5510 @ 240), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, PASSIVE-SCAN
(5510 - 5530 @ 240), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, PASSIVE-SCAN
(5530 - 5550 @ 240), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, PASSIVE-SCAN
(5550 - 5570 @ 240), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, PASSIVE-SCAN
(5570 - 5590 @ 240), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, PASSIVE-SCAN
(5590 - 5610 @ 240), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, PASSIVE-SCAN
(5610 - 5630 @ 240), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, PASSIVE-SCAN
(5630 - 5650 @ 240), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, PASSIVE-SCAN
(5650 - 5670 @ 80), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, NO-160MHZ, PASSIVE-SCAN
(5670 - 5690 @ 80), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, NO-160MHZ, PASSIVE-SCAN
(5690 - 5710 @ 80), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, NO-160MHZ, PASSIVE-SCAN
(5710 - 5730 @ 80), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, NO-160MHZ, PASSIVE-SCAN
(5735 - 5755 @ 80), (6, 22), (N/A), AUTO-BW, NO-HT40MINUS, NO-160MHZ
(5755 - 5775 @ 80), (6, 22), (N/A), AUTO-BW, NO-HT40PLUS, NO-160MHZ
(5775 - 5795 @ 80), (6, 22), (N/A), AUTO-BW, NO-HT40MINUS, NO-160MHZ
(5795 - 5815 @ 80), (6, 22), (N/A), AUTO-BW, NO-HT40PLUS, NO-160MHZ
(5815 - 5835 @ 20), (6, 22), (N/A), AUTO-BW, NO-HT40MINUS, NO-HT40PLUS, NO-80MHZ, NO-160MHZ
有一段时间,频道 36、40、44、48、149、153、157、161 和 165 都显示为“无红外线”,这意味着您无法启动辐射,即无法通过此频道创建接入点。它们一开始没有被标记为无红外线,现在也没有被再次标记,我不确定到底发生了什么变化。
我的 hostapd.conf 文件:
ssid=ap_test
wpa_passphrase=123456789
country_code=US
interface=wlp0s20f3
driver=nl80211
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
hw_mode=a
ieee80211n=1
require_ht=1
ieee80211ac=1
require_vht=1
channel=153
当我尝试使用“hostapd hostapd.conf.test”运行 hostapd 时,我收到以下输出(以及所有其他 5GHz 通道的相同输出):
Configuration file: hostapd.conf.test
wlp0s20f3: interface state UNINITIALIZED->COUNTRY_UPDATE
Channel 153 (primary) not allowed for AP mode, flags: 0x20073 NO-IR
wlp0s20f3: IEEE 802.11 Configured channel (153) not found from the channel list of current mode (2) IEEE 802.11a
wlp0s20f3: IEEE 802.11 Hardware does not support configured channel
Could not select hw_mode and channel. (-3)
wlp0s20f3: interface state COUNTRY_UPDATE->DISABLED
wlp0s20f3: AP-DISABLED
wlp0s20f3: Unable to setup interface.
wlp0s20f3: interface state DISABLED->DISABLED
wlp0s20f3: AP-DISABLED
wlp0s20f3: CTRL-EVENT-TERMINATING
hostapd_free_hapd_data: Interface wlp0s20f3 wasn't started
nl80211: deinit ifname=wlp0s20f3 disabled_11b_rates=0
我尝试利用 DFS 来利用 DFS(雷达检测)通道,但它也不起作用(而且 DFS 甚至可能无法用于我的目的):
Configuration file: hostapd.conf
wlp0s20f3: interface state UNINITIALIZED->COUNTRY_UPDATE
wlp0s20f3: interface state COUNTRY_UPDATE->DFS
wlp0s20f3: DFS-CAC-START freq=5720 chan=144 sec_chan=0, width=0, seg0=0, seg1=0, cac_time=60s
DFS start_dfs_cac() failed, -1
Interface initialization failed
wlp0s20f3: interface state DFS->DISABLED
wlp0s20f3: AP-DISABLED
wlp0s20f3: Unable to setup interface.
wlp0s20f3: interface state DISABLED->DISABLED
wlp0s20f3: AP-DISABLED
wlp0s20f3: CTRL-EVENT-TERMINATING
hostapd_free_hapd_data: Interface wlp0s20f3 wasn't started
nl80211: deinit ifname=wlp0s20f3 disabled_11b_rates=0
据我所知,我应该能够使用未标记为 no-IR 的频道,但尝试使用这些频道时仍会显示 no-ir 标记错误。是我这边的标记不正确还是实际上不允许使用它们?
据我所知,这可能是 Linux 固件的限制,我需要修补我的内核才能让它按我想要的方式工作。只是想更清楚地了解这个问题。我完全不知所措,正在寻找任何有关这方面的指导。
更新:iw 列表现在再次显示频道为无频道。同样,不知道是什么变化导致这种情况发生:
Frequencies:
* 5180 MHz [36] (22.0 dBm) (no IR)
* 5200 MHz [40] (22.0 dBm) (no IR)
* 5220 MHz [44] (22.0 dBm) (no IR)
* 5240 MHz [48] (22.0 dBm) (no IR)
* 5260 MHz [52] (22.0 dBm) (no IR, radar detection)
* 5280 MHz [56] (22.0 dBm) (no IR, radar detection)
* 5300 MHz [60] (22.0 dBm) (no IR, radar detection)
* 5320 MHz [64] (22.0 dBm) (no IR, radar detection)
* 5340 MHz [68] (disabled)
* 5360 MHz [72] (disabled)
* 5380 MHz [76] (disabled)
* 5400 MHz [80] (disabled)
* 5420 MHz [84] (disabled)
* 5440 MHz [88] (disabled)
* 5460 MHz [92] (disabled)
* 5480 MHz [96] (disabled)
* 5500 MHz [100] (22.0 dBm) (no IR, radar detection)
* 5520 MHz [104] (22.0 dBm) (no IR, radar detection)
* 5540 MHz [108] (22.0 dBm) (no IR, radar detection)
* 5560 MHz [112] (22.0 dBm) (no IR, radar detection)
* 5580 MHz [116] (22.0 dBm) (no IR, radar detection)
* 5600 MHz [120] (22.0 dBm) (no IR, radar detection)
* 5620 MHz [124] (22.0 dBm) (no IR, radar detection)
* 5640 MHz [128] (22.0 dBm) (no IR, radar detection)
* 5660 MHz [132] (22.0 dBm) (no IR, radar detection)
* 5680 MHz [136] (22.0 dBm) (no IR, radar detection)
* 5700 MHz [140] (22.0 dBm) (no IR, radar detection)
* 5720 MHz [144] (22.0 dBm) (no IR, radar detection)
* 5745 MHz [149] (22.0 dBm) (no IR)
* 5765 MHz [153] (22.0 dBm) (no IR)
* 5785 MHz [157] (22.0 dBm) (no IR)
* 5805 MHz [161] (22.0 dBm) (no IR)
* 5825 MHz [165] (22.0 dBm) (no IR)
* 5845 MHz [169] (disabled)
* 5865 MHz [173] (disabled)
* 5885 MHz [177] (disabled)
* 5905 MHz [181] (disabled)
答案1
现在是时候添加另一个标签了:“英特尔”。
TL;DR; 很可能它不会起作用。您将无法使用您的(或任何)英特尔 wifi 适配器来创建 5GHz AP。
自 2020 年末以来,我一直在努力解决类似的问题。iw reg set
应该可以完成这项工作,但除了“全局”部分之外,它没有改变任何东西。我最终使用了带有 RTL 芯片组的 USB 适配器。
最近我买了另一台迷你电脑,开始组装另一个 Linux 路由器。它预装了英特尔 wifi 卡。它也出问题了——我得到的iw phy
输出和你一样(5GHz 频率)。由于我不确定我读到的是什么,我试图弄清楚输出的每一行,试图弄清楚为什么它不起作用。我甚至已发布为帖子。不幸的是,它对我没什么帮助。
然后我发现一个SO问题提到了一些关于modprobe iwlwifi lar_disable=1
. 我也这样做了,但是没有效果。
事实证明,英特尔在 2019 年底取消了这一标志,以下是提交:f06021a。
现在来解释一下。
- 观察:看起来英特尔 wifi 卡在其 ROM 中保存了区域设置(一些用户声称在双启动系统中收到 Windows 驱动程序更新后,Linux 5GHz AP 停止工作)。
- 事实:英特尔 wifi 驱动程序使用 LRA 自动检测区域(国家)并在卡的固件中设置它(以及相应的注册限制)。这就是自我管理输出的一部分
iw reg get
。 - 事实:LAR(位置感知监管)监听周围 WiFi 设备发送的信标,简单地说,就是试图模仿它们的区域设置(国家代码)
- 事实:这种自动化通常不起作用,并且 WiFi 卡会进入全局模式(国家代码 00)(就像我的情况一样)或误解区域信息并将其设置为不相关的信息(就像你的情况一样)
- 事实:自我管理位还意味着您干预自动化机制的能力有限。
- 事实:Linux 用户过去常常通过在驱动程序级别禁用它来绕过此 LAR 的不当行为:
modprobe -r iwlwifi; modprobe iwlwifi lar_disable=1; iw reg set <CountryCode>
- 事实:
lar_disable
司机的旗帜已被移除 - 事实(?):英特尔官方不支持其 WiFi 卡在 5GHz 频段以 AP 模式使用
- 假设:这或许可以解释为什么有些用户看到不一致的区域设置:iwlwifi 会选择邻居的路由器广播错误配置的区域信息。如果用户的邻居的设备来自世界各地,iwlwifi 有时会认为它在德国,有时会认为它在中国或印度尼西亚,有时会认为它在美国等等。
看来英特尔对 Linux 用户竖了中指,我们对此无话可说。英特尔社区已为此开了很多帖子,互联网上也有很多类似的帖子(bugzilla、SO/SE、reddit 等),而英特尔只是躲在“请联系您的计算机制造商”的幕后。
可能性很小可能如果您购买了新的 wifi 卡,并且它从未或永远不会被 Windows 驱动程序触及,则可以使用。但是,这只是基于其他用户的经验的假设,而不是事实。
因此,可以肯定地说,Linux + Intel WiFi(iwlwifi
)+ 5GHz AP 将不再起作用,除非发生一些不太可能发生的事故,LAR 能够正常运行
编辑
我刚刚在家里运行了 airodump-ng 扫描,看看周围所有 WIFI AP 都在广播什么信标
# airodump-ng --beacons wlp58s0mon --manufacturer --uptime --band a -w /tmp/wifi_dump_5GHz.pcap
# airodump-ng --beacons wlp58s0mon --manufacturer --uptime -w /tmp/wifi_dump2.pcap
事实证明,其中一些(大多数)不广播任何国家代码,其中一些广播 DE(Netgear 中继器),其中一些 - CN(小米),一些 - 美国(IDK,DLink?)。它们都没有设置为 LT(它们正在使用的国家/地区)。我拥有所有这些,并且无法更改监管设置(国家代码)。所以你不必被外国人包围才能让 LAR 感到困惑。你只需要被外国 WiFi 硬件包围......