Skip to content

从无法创建的 5GHz 热点说开去

Published: at 16:28

之前配置好一大堆网络方面的东西,准备跑个 iperf3 看看无线速度怎么样,结果一看最大只有 60Mbps,不能忍,上 5 GHz,结果又不支持。我就奇了怪了,凭本事连上的 WiFi 还不让共享了???

好吧,这一切要说简单也简单,要说复杂也复杂……


ToC

WLAN 信道列表

WLAN 信道列表[1],也叫 WLAN 频道列表,是各个国家规定的 IEEE 802.11 允许使用的无线信道列表。简单来说,大家都有无线电管制,但都不大一样,你违反管制就是违法。

于是,在全球化愈发深入的当下,如何又要把产品卖出去又要积极遵守各国的法律呢?其实方案很简单:取大家的一个交集就行了。这也就是 Global 了。

特定国家?

于是,擅于观察的部分用户们发现,我不能像路由器一样创建对应频段的热点?经过观察,他们发现了一个奇怪的东西:

no IR?
no IR?

下面的 disabled 一目了然,可 no IR 是怎么回事???在 Google 上搜索它只会告诉你 noir 的内容,直接把空格吞了,这也太智能了8(

blanc et noir?(不是

no ir

关键时刻还是 Arch Wiki 靠得住,直接给我们提供了线索[2]

助かった
助かった

这个 no-ir 就是国家码不对了,也就是我们上面所说的。但是这里的介绍还是不够详细,其实想要知道/修改当前的国家码,还是要回到我们熟悉的 iw 上来。

iw

上面可能没提到,第一章图用到的命令是 iw phy | grep MHz。而想要看到自己目前的国家码,则可以使用 iw reg get。那有 get 自然会想到 set,而这个 set,就是我们今天登场的第一位主角:

Terminal window
1
iw reg set CN # 将国家码设置为你国代号

通过这个选项,我们应该已经可用修改网卡对应的国家了——

或许。

自主规制?

当你觉得设置好就万事大吉的时候,那可就错了。纵使对于很多网卡都能够完成我们的目标,仍然存在这样一批厂家[3],他们的输出是这样的:

这种不听人话的 self-managed 着实令人头秃,他们试图自己检测自己所在的区域,但又失败了,只能归于虚无。于是,在这种情况下,我们只能试图绕开这道限制了。

lar_disable

这种绕开的手段就是 lar_disablelar 是 Location Aware Regulatory 的缩写,禁止了 lar 也就意味着将所有的区域设置统一为用户设置。修改的方式也很简单:

Terminal window
1
echo options iwlwifi lar_disable=1 >> /etc/modprobe.d/iwlwifi.conf

之后重启即可。

结语

lar_disable 给我们提供了最大化发挥网卡功能的可能性,然而,对于 5.4 以上版本的内核,该选项似乎已经失效了[4]。而在 ArchLinux 论坛的对应 issue 中,有人给出了可以解决的 patch [5],并且产生问题的 commit 也已经被回滚了[6]。由于我写这篇博客的时候不在使用 5.x 的内核,所以我也不知道实际情况现在究竟是怎么样的,还是等到之后要升级的时候再说吧(笑)