如何增加我的 wifi 设备的 txpower

如何增加我的 wifi 设备的 txpower

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

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

在了解到 TP-Link 在 Linux 上的运行效果后,我购买了它,但结果发现它运行得远不及我已经拥有的 RTL8188EE。无论如何,我认为 TP 适配器根本无法增加 txpower,但我知道内部适配器可以。我对 Linux 有点陌生,我第一次在 Windows 旁边安装了 Ubuntu(我想是 16.04?)是在 2016 年左右,但直到大约去年才真正开始使用它,我一直在寻找最适合我的发行版,所以现在我有一个内部 256GB Crucial SSD,它有 6 个不同的根分区,每个分区在我的外部硬盘上都有一个对应的 100GB 主分区。我在另一个外部硬盘上安装了 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 脚本。它没有给我任何错误,它会注册设置为 BO,但是当我给出命令时:

ifconfig wlp2s0 down
iw reg set BO
iwconfig wlp2s0 txpower 30
ifconfig wlp2s0 up

进而

iwconfig wlp2s0

它仍然显示

[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

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

到目前为止,我非常喜欢 Linux,以至于我意识到我永远找不到一个完美的发行版,我可能总是有 3 到 4 个永久发行版,但这正是让我发疯的原因。我把 Linux 发行版放在我阿姨和女朋友的电脑上(她们同意了,她们不敢相信她们的机器现在运行速度有多快),但像 txpower 这样对我来说毫无意义的问题让我痴迷不已,花了好几个小时盯着电脑,非常沮丧,以至于前几天我的女朋友翻过身来说,“sudo 给我泡杯咖啡。”因为她认为那会起作用。……它确实起作用了。但无论如何,抱歉长篇大论,这是我的第一篇 Linux 论坛帖子,我一直坚持要自己弄清楚这一切,而没有寻求任何帮助。

答案1

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

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


使用我的 Raspberry Pi 3b+ 和 debian buster 和 debian stretch,以下说明非常有效。在其他发行版上,只需稍加修改,它应该也能正常工作。

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

iw 注册获取

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

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

物理#0
国家 GB: DFS-ETSI
    (2402 - 2482 @ 40),(不适用,20),(不适用)
    (5170 - 5250 @ 80), (N/A, 20), (N/A), 自动黑白
    (5250 - 5330 @ 80), (N/A, 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

第 2 步 - 下载中央档案馆监管数据库文件

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

步骤 3 - 解压文件

tar xfv crda-4.14.tar.gz 
tar xfv wireless-regdb-master-2019-06-03.tar.gz 

步骤 4 - 处理限制

打开数据库文件终端中的文件nano wireless-regdb-master-2019-06-03/db.txt 向下滚动到您的国家代码。我的是 DE,代表德国/德国:

国家德国:DFS-ETSI
    (2400 - 2483.5 @ 40),(100 毫瓦)
    (5150 - 5250 @ 80),(200 mW),非室外,自动带宽,wmmrule=ETSI
    (5250 - 5350 @ 80),(100 mW),非室外,DFS,自动带宽,wmmrule=ETSI
    (5470 - 5725 @ 160),(500 毫瓦),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,自动带宽,wmmrule=ETSI
    (5470 - 5725 @ 160),(500 毫瓦),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),AUTO-BW,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),AUTO-BW,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

这将创建一些新文件。

wireless-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 regulation.bin regulation.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

步骤 7 - 应用修改

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

cp regulatory.db regulatory.db.p7s /lib/firmware/
cp regulatory.bin /lib/crda/

第 8 步 - 签名/验证

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

cp *.pub.pem ../crda-4.14/pubkeys

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

cp /lib/crda/pubkeys/*@*pub.pem ../crda-4.14/pubkeys/

然后cd进入该文件夹。

cd ../crda-4.14/

并输入make && make install

步骤 8.1 - 错误案例

如果您收到以下错误:

错误:文件:/usr/lib/crda/regulatory.bin 丢失。您需要此文件以便
验证 CRDA。你可以从以下地址获取:

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

一旦克隆(无需构建)cpregulatory.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

REG_BIN?=/lib/crda/regulatory.bin

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

步骤 9 - 检查你的黑客行为是否被应用

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

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

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

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

步骤 10 - 调整发射功率

现在您应该能够调整 txpower 了。

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

ifconfig wlan1 down
iw dev wlan1 set txpower fixed 2500
ifconfig wlan1 up

iwconfig可以检查更改是否生效。出于某种原因,我只有在连接到 AP 时才能看到更改:

root@raspberrypi:〜#iwconfig
wlan2 IEEE 802.11 ESSID:关闭/任何  
          模式:托管接入点:非关联 Tx-Power=30 dBm   
          重试短限制:7 RTS 阈值:关闭 片段阈值:关闭
          加密密钥:关闭
          电源管理:关闭

wlan0 IEEE 802.11 ESSID:关闭/任何  
          模式:托管接入点:非关联 Tx-Power=31 dBm   
          重试短限制:7 RTS 阈值:关闭 片段阈值:关闭
          加密密钥:关闭
          电源管理:开启

没有无线扩展。

wlan1 IEEE 802.11 ESSID:关闭/任何  
          模式:托管接入点:非关联 Tx-Power=30 dBm   
          重试短限制:7 RTS 阈值:关闭 片段阈值:关闭
          加密密钥:关闭
          电源管理:关闭

eth0 没有无线扩展。

wpa_supplicant -c StationE03.conf -i wlan1 &
[1] 792
root@raspberrypi:~# 成功初始化 wpa_supplicant
wlan1:SME:尝试使用 e8:df:70:38:db:5a (SSID='StationE03' 频率=2427 MHz) 进行身份验证
wlan1:尝试与 e8:df:70:38:db:5a 关联(SSID='StationE03' 频率=2427 MHz)
wlan1:与 e8:df:70:38:db:5a 关联
wlan1:CTRL-EVENT-SUBNET-STATUS-UPDATE 状态=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 类型=COUNTRY alpha2=DE

root@raspberrypi:〜#iwconfig
wlan2 IEEE 802.11 ESSID:关闭/任何  
          模式:托管接入点:非关联 Tx-Power=30 dBm   
          重试短限制:7 RTS 阈值:关闭 片段阈值:关闭
          加密密钥:关闭
          电源管理:关闭

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

没有无线扩展。

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

eth0 没有无线扩展。

root@raspberrypi:~# iw reg 获取
全球的
国家德国: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), (N/A, 20), (N/A), 自动黑白
    (5250 - 5330 @ 80), (N/A, 20), (0 毫秒), DFS, 自动带宽
    (5490 - 5710 @ 160),(不适用,27),(0 毫秒),DFS
    (57000 - 66000 @ 2160),(不适用,40),(不适用)

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

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

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

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

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

答案2

这是一个很棒的指南,只需进行一些调整即可在 2023 年很好地发挥作用。要在现代 Ubuntu/Debian 中安装依赖项:

apt install python3-future python3-m2crypto libgcrypt20 libgcrypt20-dev libnl-genl-3-dev

crda从以下位置下载最新版本wireless-regdb-master

https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git/snapshot/wireless-regdb-master-2023-09-01.tar.gz 
https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/crda.git/snapshot/crda-4.15.tar.gz

当您运行 时makecrda-4.15它会抱怨 中的语法错误key2pub.py,这意味着您需要调整该文件以使其与 python3 兼容:

sed -i -E 's/ord\(v([0-9]+)\)/v[\1]/g; s/ord\(v\)/v/g; s/ImportError, e/ImportError as e/g; s/print /print(/g; s/keys\(\)\)\)/keys\(\)\)\)\)/g; s/xrange/range/g;' key2pub.py

之后,继续按照原指南操作!谢谢楼主!

相关内容