好的,所以我一直需要增加我的无线适配器的发射功率。
我有一个内部 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
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
当您运行 时make
,crda-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
之后,继续按照原指南操作!谢谢楼主!