如何增加我的 WiFi 设备的 txpower

Mat*_*ald 6 wireless networking

好的,所以我一直需要增加无线适配器的发射功率。

我有一个内部 RTL8188EE 和一个 TP-Link USB 适配器。

在了解了 TP-Link 在 Linux 上的运行效果后,我购买了 TP-Link,结果发现它的运行效果不如我已经拥有的 RTL8188EE。不管怎样,我不认为 TP 适配器可以增加 txpower,但我知道内部适配器可以。我对 Linux 有点陌生,我第一次安装 Ubuntu(我想是 16.04?)和 Windows 是在 2016 年,但直到去年左右才真正开始使用它,我一直在寻找最好的发行版对于我来说,现在我有一个内部 256GB Crucial SSD,有 6 个不同的根分区,每个分区在我的外部硬盘上都有一个相应的 100GB 主分区。我在另一个外部 HDD 上安装了 Manjaro Deepin、Solus Budgie、Ubuntu 18.04、Fedora 30、Zorin 15 和 MX Linux,以及 KDE Neon。

因此,当我开始尝试提高 txpower 时,我尝试了此处列出的所有解决方案、itsFOSS、Arch/Manjaro 论坛以及我能找到的任何其他地方。

我已经尝试过 txpower-unlocker,我已经尝试过 wireless-regdb-pentest,我已经尝试了一切。除了 Manjaro 之外,我在所有尝试中都碰壁了。我不知何故不仅让它工作,而且实际上每次启动时都将其永久设置为 30 dBm。但为我拥有的其他发行版提供的相同(或等效)步骤根本不起作用。在 Ubuntu 上,我尝试了 Ubuntu 特定的 txpower-unlocker git 脚本。它没有给我任何错误,它将 reg 设置为 BO,但是当我发出命令时:

ifconfig wlp2s0 down
iw reg set BO
iwconfig wlp2s0 txpower 30
ifconfig wlp2s0 up
Run Code Online (Sandbox Code Playgroud)

进而

iwconfig wlp2s0
Run Code Online (Sandbox Code Playgroud)

依然显示

[matt@localhost ~]$ sudo iwconfig wlp2s0 txpower 30.00
[matt@localhost ~]$ sudo ifconfig wlp2s0 up
[matt@localhost ~]$ iwconfig
virbr0-nic  no wireless extensions.
wlp2s0    IEEE 802.11  ESSID:"NETGEAR35"  
          Mode:Managed  Frequency:2.412 GHz  Access Point: 28:80:88:C4:BF:DB   
          Bit Rate=72.2 Mb/s   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr=2347 B   Fragment thr:off
          Power Management:off
          Link Quality=70/70  Signal level=-36 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:2   Missed beacon:0
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用自动脚本,也尝试过手动执行。我已经尝试了一切。就像我说的,我知道这与卡无关,因为它可以在 Manjaro 上运行,但即使如此,在我更新到 Manjaro 上的最新 Linux 内核后,它也拒绝改变,就像其他所有一样。我必须保持在 2014 年 19 月 4 日才能将其保持在 30。果然,当我在 Manjaro 上进行每次速度测试时,我的 10Mb 宽带连接都保持在 10mbps,并且我始终以 1-1.3 Mbps 的速度下载,而它会随着大多数其他发行版而大幅波动。MX Linux 和 Zorin 似乎非常一致,所以我不必费心去尝试改变它,因为没有它它们的大小在 9.5 到 10Mb 之间。但我不明白的是,如果有人能向我解释,我会很高兴知道如何在 MX、Zorin 上使用相同的 Linux 内核(5.0.8)在同一台计算机上运行 3 个不同的发行版,还有Ubuntu 18.04.3,MX和Ubuntu都是基于Debian的,Zorin是基于Ubuntu的,无线质量却相差这么大?

到目前为止,我非常喜欢 Linux,以至于我意识到我永远找不到一个完美的发行版,而且我可能永远都会有 3 到 4 个永久发行版,但这正是这让我发疯的原因。我已经在我阿姨和女朋友的电脑上安装了 Linux 发行版(得到了他们的认可,他们简直不敢相信他们的机器现在运行速度有多快),但是像 txpower 这样对我来说毫无意义的问题让我着迷并花费了数小时长时间盯着电脑感到非常沮丧,以至于有一天我的女朋友翻身说:“请给我泡杯咖啡。” 因为她认为这会起作用。...它做了。但无论如何,对谩骂表示抱歉,这是我第一篇 Linux 论坛帖子,我一直坚持要弄清楚这一切,而没有自己寻求任何帮助。

Ale*_*nux 7

你想要实现的目标并不那么容易,但它是可以做到的。

首先,增加 txpower 可能会违法。这就是为什么你不能在不操纵/规避这些内置限制的情况下将该功率增加到超过某个值的原因之一。


以下说明使用我的 Raspberry Pi 3b+ 以及 debian buster 和 debian tent 非常有效。它也应该可以在其他发行版上进行少量修改。

如果您打开终端并键入,iw reg get您应该会看到您所在国家/地区的限制:

iw reg 获取

全球的
98 国:DFS-UNSET
    (2402 - 2472 @ 40), (不适用, 20), (不适用)
    (2457 - 2482 @ 25), (不适用, 20), (不适用), 非红外
    (2474 - 2482 @ 8)、(不适用、20)、(不适用)、无 OFDM、无 IR
    (5170 - 5250 @ 80)、(不适用、20)、(不适用)、自动黑白、非红外
    (5250 - 5330 @ 80)、(不适用、20)、(0 毫秒)、DFS、自动带宽、无红外
    (5490 - 5710 @ 160)、(不适用、20)、(0 毫秒)、DFS、NO-IR
    (57240 - 63720 @ 2160), (不适用, 0), (不适用)

物理#1
GB 国家:DFS-ETSI
    (2402 - 2482 @ 40), (不适用, 20), (不适用)
    (5170 - 5250 @ 80)、(不适用、20)、(不适用)、自动黑白
    (5250 - 5330 @ 80)、(不适用、20)、(0 毫秒)、DFS、自动带宽
    (5490 - 5710 @ 160), (不适用, 27), (0 毫秒), DFS
    (57000 - 66000 @ 2160), (不适用, 40), (不适用)

物理#0
GB 国家:DFS-ETSI
    (2402 - 2482 @ 40), (不适用, 20), (不适用)
    (5170 - 5250 @ 80)、(不适用、20)、(不适用)、自动黑白
    (5250 - 5330 @ 80)、(不适用、20)、(0 毫秒)、DFS、自动带宽
    (5490 - 5710 @ 160), (不适用, 27), (0 毫秒), DFS
    (57000 - 66000 @ 2160), (不适用, 40), (不适用)

如果未设置,您将获得通用的“世界”国家/地区代码。要设置您的国家/地区,您可以输入iw reg set <country-code>

这篇文章很好地描述了您必须做什么才能规避限制。

第 1 步 - 安装软件包

apt install python-future python-m2crypto libgcrypt20 libgcrypt20-dev libnl-dev
Run Code Online (Sandbox Code Playgroud)

第 2 步 - 下载CRDA监管数据库文件

wget https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git/snapshot/wireless-regdb-master-2019-06-03.tar.gz
wget https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/crda.git/snapshot/crda-4.14.tar.gz
Run Code Online (Sandbox Code Playgroud)

第 3 步 - 解压文件

tar xfv crda-4.14.tar.gz 
tar xfv wireless-regdb-master-2019-06-03.tar.gz 
Run Code Online (Sandbox Code Playgroud)

第 4 步 - 操纵限制

在终端中打开db.txtnano wireless-regdb-master-2019-06-03/db.txt文件 ,向下滚动到您的国家/地区代码。我的 DE 代表 Deutschland/德国:

德国国家:DFS-ETSI
    (2400 - 2483.5 @ 40), (100 毫瓦)
    (5150 - 5250 @ 80)、(200 mW)、非室外、自动黑白、wmmrule=ETSI
    (5250 - 5350 @ 80)、(100 mW)、非室外、DFS、自动 BW、wmmrule=ETSI
    (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
    # 短距离设备 (ETSI EN 300 440-1)
    (5725 - 5875 @ 80), (25 毫瓦)
    # 60 GHz 频段通道 1-4 (ETSI EN 302 567)
    (57000 - 66000 @ 2160), (40)

我修改了第一行,该行对应于我的需要的 2.4 GHZ 频段,其余部分保持原样,因为我对 5 或 60 GHZ 频段不感兴趣:

德国国家:DFS-ETSI
    (2400 - 2483.5 @ 40), (2000 毫瓦)
    (5150 - 5250 @ 80)、(200 mW)、非室外、自动黑白、wmmrule=ETSI
    (5250 - 5350 @ 80)、(100 mW)、非室外、DFS、自动 BW、wmmrule=ETSI
    (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
    # 短距离设备 (ETSI EN 300 440-1)
    (5725 - 5875 @ 80), (25 毫瓦)
    # 60 GHz 频段通道 1-4 (ETSI EN 302 567)
    (57000 - 66000 @ 2160), (40)

除此之外,我的无线卡 AWUS036NHA 似乎被困在制造商设置的国家/地区。在我的具体情况下,它是 GB。所以我必须改变这一点:

所以我修改

GB 国家:DFS-ETSI
        (2402 - 2482 @ 40), (20)
        (5170 - 5250 @ 80)、(20)、自动黑白、wmmrule=ETSI
        (5250 - 5330 @ 80)、(20)、DFS、AUTO-BW、wmmrule=ETSI
        (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
        # 60 GHz 频段通道 1-4,参考:Etsi En 302 567
        (57000 - 66000 @ 2160), (40)
 

GB 国家:DFS-ETSI
        (2402 - 2482 @ 40), (30)
        (5170 - 5250 @ 80)、(20)、自动黑白、wmmrule=ETSI
        (5250 - 5330 @ 80)、(20)、DFS、AUTO-BW、wmmrule=ETSI
        (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
        # 60 GHz 频段通道 1-4,参考:Etsi En 302 567
        (57000 - 66000 @ 2160), (40)

第5步 - 制作regulatory.bin

cd进入你的wireless-regdb-master-2019-06-03文件夹并输入make

cd wireless-regdb-master-2019-06-03/
make
Run Code Online (Sandbox Code Playgroud)

这将创建一些新文件。

无线-regdb-master-2019-06-03# ls
贡献 dbparse.pyc 许可证regulatory.bin.5 root.key.pub.pem sha1sum.txt
db2bin.py db.txt Makefile监管.db root.x509.pem web
db2fw.py debian-example 自述文件regulatory.db.5 sforshee.key.pub.pem wireless-regdb.spec
dbparse.py gen-pubcert.sh监管.bin监管.db.p7s sforshee.x509.pem

第 6 步 - 备份您的文件

在覆盖我们的原始监管文件之前,我建议您进行备份。

做一个备份

cp /lib/firmware/regulatory.db /lib/firmware/regulatory.db-backup
cp /lib/firmware/regulatory.db.p7s /lib/firmware/regulatory.db.p7s-backup
cp /lib/crda/regulatory.bin /lib/crda/regulatory.bin-backup
Run Code Online (Sandbox Code Playgroud)

第 7 步 - 应用修改

wireless-regdb-master-2019-06-03文件夹内将步骤 5 中新创建的文件复制到适当的位置:

cp regulatory.db regulatory.db.p7s /lib/firmware/
cp regulatory.bin /lib/crda/
Run Code Online (Sandbox Code Playgroud)

第 8 步 - 签名/验证

wireless-regdb-master-2019-06-03文件夹内将文件复制*.pub.pem到解压的 crda 文件夹中:

cp *.pub.pem ../crda-4.14/pubkeys
Run Code Online (Sandbox Code Playgroud)

还要将*@*.pub.pem文件从您的内部复制/lib/crda/pubkey到解压的 crda/pubkeys 文件夹中

cp /lib/crda/pubkeys/*@*pub.pem ../crda-4.14/pubkeys/
Run Code Online (Sandbox Code Playgroud)

然后cd进入该文件夹。

cd ../crda-4.14/
Run Code Online (Sandbox Code Playgroud)

并输入make && make install

步骤 8.1 - 错误情况

如果您收到以下错误:

错误:文件:/usr/lib/crda/regulatory.bin 丢失。您需要按顺序将其放置到位
验证 CRDA。您可以从以下位置获取:

git://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git

克隆后(无需构建) cp​​regulatory.bin 到 /usr/lib/crda/regulatory.bin
使用“make noverify”禁用验证

Makefile:100: 目标“/usr/lib/crda/regulatory.bin”的配方失败
make: *** [/usr/lib/crda/regulatory.bin] 错误 1

打开 Makefilenano Makefile并更改行

REG_BIN?=/usr/lib/crda/regulatory.bin
Run Code Online (Sandbox Code Playgroud)

REG_BIN?=/lib/crda/regulatory.bin
Run Code Online (Sandbox Code Playgroud)

并输入make clean && make && make install

第 9 步 - 检查您的 hack 是否已应用

重新启动系统并输入iw reg get 现在的数字应该已根据您的需要进行修改:

iw reg 获取
全球的
98 国:DFS-UNSET
    (2402 - 2472 @ 40), (不适用, 20), (不适用)
    (2457 - 2482 @ 25), (不适用, 20), (不适用), 非红外
    (2474 - 2482 @ 8)、(不适用、20)、(不适用)、无 OFDM、无 IR
    (5170 - 5250 @ 80)、(不适用、20)、(不适用)、自动黑白、非红外
    (5250 - 5330 @ 80)、(不适用、20)、(0 毫秒)、DFS、自动带宽、无红外
    (5490 - 5710 @ 160)、(不适用、20)、(0 毫秒)、DFS、NO-IR
    (57240 - 63720 @ 2160), (不适用, 0), (不适用)

物理#1
GB 国家:DFS-ETSI
    (2402 - 2482 @ 40), (不适用, 30), (不适用)
    (5170 - 5250 @ 80)、(不适用、20)、(不适用)、自动黑白
    (5250 - 5330 @ 80)、(不适用、20)、(0 毫秒)、DFS、自动带宽
    (5490 - 5710 @ 160), (不适用, 27), (0 毫秒), DFS
    (57000 - 66000 @ 2160), (不适用, 40), (不适用)

物理#0
GB 国家:DFS-ETSI
    (2402 - 2482 @ 40), (不适用, 30), (不适用)
    (5170 - 5250 @ 80)、(不适用、20)、(不适用)、自动黑白
    (5250 - 5330 @ 80)、(不适用、20)、(0 毫秒)、DFS、自动带宽
    (5490 - 5710 @ 160), (不适用, 27), (0 毫秒), DFS
    (57000 - 66000 @ 2160), (不适用, 40), (不适用)

步骤 10 - 调整 txpower

现在您应该能够调整 txpower。

因此请关闭您的 wifi 适配器。调整其 txpower 并重新打开。

ifconfig wlan1 down
iw dev wlan1 set txpower fixed 2500
ifconfig wlan1 up
Run Code Online (Sandbox Code Playgroud)

您可以检查iwconfig更改是否生效。由于某种原因,我仅在连接到 AP 时看到变化:

root@raspberrypi:~# iwconfig
wlan2 IEEE 802.11 ESSID:关闭/任意  
          模式:托管接入点:非关联 Tx 功率=30 dBm   
          重试短限制:7 RTS thr:off 片段 thr:off
          加密密钥:关闭
          电源管理:关闭

wlan0 IEEE 802.11 ESSID:关闭/任意  
          模式:托管接入点:非关联 Tx 功率=31 dBm   
          重试短限制:7 RTS thr:off 片段 thr:off
          加密密钥:关闭
          电源管理:开

没有无线扩展。

wlan1 IEEE 802.11 ESSID:关闭/任意  
          模式:托管接入点:非关联 Tx 功率=30 dBm   
          重试短限制:7 RTS thr:off 片段 thr:off
          加密密钥:关闭
          电源管理:关闭

eth0 没有无线扩展。

wpa_supplicant -c StationE03.conf -i wlan1 &
[1]792
root@raspberrypi:~# 成功初始化wpa_supplicant
wlan1:SME:尝试使用 e8:df:70:38:db:5a 进行身份验证(SSID='StationE03' freq=2427 MHz)
wlan1:尝试与 e8:df:70:38:db:5a 关联(SSID='StationE03' freq=2427 MHz)
wlan1:与 e8:df:70:38:db:5a 关联
wlan1:CTRL-事件-子网-状态-更新状态=0
wlan1:WPA:使用 e8:df:70:38:db:5a 完成密钥协商 [PTK=CCMP GTK=CCMP]
wlan1:CTRL-EVENT-CONNECTED - 与 e8:df:70:38:db:5a 的连接已完成 [id=0 id_str=]
wlan1: CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE 类型=国家 alpha2=DE

root@raspberrypi:~# iwconfig
wlan2 IEEE 802.11 ESSID:关闭/任意  
          模式:托管接入点:非关联 Tx 功率=30 dBm   
          重试短限制:7 RTS thr:off 片段 thr:off
          加密密钥:关闭
          电源管理:关闭

wlan0 IEEE 802.11 ESSID:关闭/任意  
          模式:托管接入点:未关联   
          重试短限制:7 RTS thr:off 片段 thr:off
          加密密钥:关闭
          电源管理:开

没有无线扩展。

wlan1 IEEE 802.11 ESSID:“StationE03”  
          模式:管理频率:2.427 GHz 接入点:E8:DF:70:38:DB:5A   
          比特率=52 Mb/s 发射功率=25 dBm   
          重试短限制:7 RTS thr:off 片段 thr:off
          加密密钥:关闭
          电源管理:关闭
          链路质量=70/70 信号电平=-27 dBm  
          Rx 无效 nwid:0 Rx 无效 crypt:0 Rx 无效 frag:0
          Tx 过多重试:0 无效杂项:47 错过信标:0

eth0 没有无线扩展。

root@raspberrypi:~# iw reg get
全球的
德国国家:DFS-ETSI
    (2400 - 2483 @ 40), (不适用, 33), (不适用)
    (5150 - 5250 @ 80)、(N/A、23)、(N/A)、非室外、自动黑白
    (5250 - 5350 @ 80)、(N/A、20)、(0 毫秒)、非室外、DFS、自动黑白
    (5470 - 5725 @ 160), (不适用, 26), (0 毫秒), DFS
    (5725 - 5875 @ 80), (不适用, 13), (不适用)
    (57000 - 66000 @ 2160), (不适用, 40), (不适用)

物理#1
GB 国家:DFS-ETSI
    (2402 - 2482 @ 40), (不适用, 30), (不适用)
    (5170 - 5250 @ 80)、(不适用、20)、(不适用)、自动黑白
    (5250 - 5330 @ 80)、(不适用、20)、(0 毫秒)、DFS、自动带宽
    (5490 - 5710 @ 160), (不适用, 27), (0 毫秒), DFS
    (57000 - 66000 @ 2160), (不适用, 40), (不适用)

物理#0
GB 国家:DFS-ETSI
    (2402 - 2482 @ 40), (不适用, 30), (不适用)
    (5170 - 5250 @ 80)、(不适用、20)、(不适用)、自动黑白
    (5250 - 5330 @ 80)、(不适用、20)、(0 毫秒)、DFS、自动带宽
    (5490 - 5710 @ 160), (不适用, 27), (0 毫秒), DFS
    (57000 - 66000 @ 2160), (不适用, 40), (不适用)

较高的 dBm 值并不自动意味着更好的连接。您必须遵循适配器规格并相应地设置这些值。例如,我的 AWUS036NHA 支持高达 28 dBm,而我的 AWUS036NH 支持高达 33 dBm,即 2000mw。

另外,不要忘记您可能会违反所在国家的法律。您可能会干扰雷达(尤其是在 5GHz 频段)。

据我所知,使用高价值是不健康的。

更好的解决方案是:定向天线、抛物面天线或无线中继器。