linux系统通信功率信道修改方法
配置频段
可以先查看有哪些频段:
iwlist channel
可用信道1
2
3
4
5
6
7
8
9
10
11
12
13
14
15wlan0 13 channels in total; available frequencies :
Channel 01 : 2.412 GHz
Channel 02 : 2.417 GHz
Channel 03 : 2.422 GHz
Channel 04 : 2.427 GHz
Channel 05 : 2.432 GHz
Channel 06 : 2.437 GHz
Channel 07 : 2.442 GHz
Channel 08 : 2.447 GHz
Channel 09 : 2.452 GHz
Channel 10 : 2.457 GHz
Channel 11 : 2.462 GHz
Channel 12 : 2.467 GHz
Channel 13 : 2.472 GHz
Current Frequency:2.422 GHz (Channel 3)
改变信道
sudo iwconfig wlan1 channel 1
iwlist channel显示:
1 | 13 channels in total; available frequencies : |
修改发射功率
sudo iwconfig wlan1 txpower X
Tx 是发射(Transmits)的简称。无线电波的发射功率是指在给定频段范围内的能量,通常有两种衡量或测量标准:
- 功率(W):相对1 瓦(Watts)的线性水准。例如,WiFi 无线网卡的发射功率通常为0.036W ,或者说36mW。
- 增益(dBm):相对1 毫瓦(milliwatt)的比例水准。例如,WiFi 无线网卡的发射增益为15.56dBm。
- 功率单位mW 和dBm 的换算:
- dBm = 10 * lg[ 功率mW] //即,以10为底数取[功率mW]对数,然再乘以10
- mW = 10^[增益dBm / 10dBm] //即,以10为底数,[增益dBm/10dBm]为指数,计算取值
1 | 10 W 的无线发射功率为 40 dBm |
经测试树莓派的发射功率最大可以达到31dBm、linux电脑可以达到20dBm。
树莓派可以通过命令行切换信道,linux电脑无法切换信道。
和学长讨论后不知道是不是伪切换信道需要进行测试。
测试是否为伪切换
让树莓派连接到一个固定信道的路由器进行测试。
若无法切换信道则可以推断,树莓派确实能够切换上行信道
若可以切换信道,且可以上传则证明树莓派伪切换信道
实验
准备一个路由器,将信道调整为固定信道1,树莓派尝试进行连接(修改配置文件)。
测试是否连接到固定信道路由器
1 | iwconfig |
1 | ping 192.168.2.100 |
结论:以上测试证明树莓派有正确连接到路由器
测试树莓派是否能切换信道
iwlist channel
显示:1
2
3
4
5
6
7
8
9
10
11
12
13wlan0 11 channels in total; available frequencies :
Channel 01 : 2.412 GHz
Channel 02 : 2.417 GHz
Channel 03 : 2.422 GHz
Channel 04 : 2.427 GHz
Channel 05 : 2.432 GHz
Channel 06 : 2.437 GHz
Channel 07 : 2.442 GHz
Channel 08 : 2.447 GHz
Channel 09 : 2.452 GHz
Channel 10 : 2.457 GHz
Channel 11 : 2.462 GHz
Current Frequency:2.412 GHz (Channel 1)
2.切换信道
sudo iwconfig wlan0 channel 3
1 | iwconfig |
信道被修改了
尝试进行ping1
2
3
4
5
6
7
8ping 192.168.2.109
PING 192.168.2.109 (192.168.2.109) 56(84) bytes of data.
64 bytes from 192.168.2.109: icmp_seq=1 ttl=128 time=9.72 ms
64 bytes from 192.168.2.109: icmp_seq=2 ttl=128 time=6.33 ms
64 bytes from 192.168.2.109: icmp_seq=3 ttl=128 time=22.0 ms
64 bytes from 192.168.2.109: icmp_seq=4 ttl=128 time=44.1 ms
64 bytes from 192.168.2.109: icmp_seq=5 ttl=128 time=8.24 ms
64 bytes from 192.168.2.109: icmp_seq=6 ttl=128 time=7.62 ms
传输正常…
结论:树莓派很有可能是伪切换上行信道,但是我没有办法排除固定信道路由器无法接受非该信道信号的这个可能性。
进一步实验
如果修改信道可能xmu201_1的信道会改变。
1 | iwlist scan |
进行测试
sudo iwconfig wlan0 channel 3
1 | iwconfig |
重新进行信道扫描
1 | iwlist scan |
信道没有发生变化。
结论
树莓派的 sudo iwconfig wlan0 channel 3
极有可能是伪修改:即树莓派修改了某个寄存器的数值,但是并没有实际修改信道,这个可以通过进一步的研究进行验证。
树莓派开启热点功能
研究了一下树莓派的开启热点方法,都有点不科学,最后找到一个比较稳定且合适的方法,需要使用HDMI线和鼠标键盘(因为断掉wifi后树莓派会和电脑断连接、若有插网线则可以无视)具体操作如下:
创建WiFi热点使用的GitHub上一个开源项目:
https://github.com/oblique/create_ap
下载开源项目包
1 | sudo git clone https://github.com/oblique/create_ap |
可能会存在说树莓派连接不上github的可能性(ps:我就遇到了)
- 参考以下步骤:
- 用电脑从github下载zip格式文件
- 通过xftp将zip文件转存入树莓派
- unzip xxx.zip文件
1
2cd create_ap
sudo make install
运用该开源项目
No passphrase (open network):
create_ap wlan0 eth0 MyAccessPoint
WPA + WPA2 passphrase:
create_ap wlan0 eth0 MyAccessPoint MyPassPhrase
AP without Internet sharing:
create_ap -n wlan0 MyAccessPoint MyPassPhrase
Bridged Internet sharing:
create_ap -m bridge wlan0 eth0 MyAccessPoint MyPassPhrase
Bridged Internet sharing (pre-configured bridge interface):
create_ap -m bridge wlan0 br0 MyAccessPoint MyPassPhrase
Internet sharing from the same WiFi interface:
create_ap wlan0 wlan0 MyAccessPoint MyPassPhrase
Choose a different WiFi adapter driver
create_ap --driver rtl871xdrv wlan0 eth0 MyAccessPoint MyPassPhrase
No passphrase (open network) using pipe:
echo -e "MyAccessPoint" | create_ap wlan0 eth0
WPA + WPA2 passphrase using pipe:
echo -e "MyAccessPoint\nMyPassPhrase" | create_ap wlan0 eth0
Enable IEEE 802.11n
create_ap --ieee80211n --ht_capab '[HT40+]' wlan0 eth0 MyAccessPoint MyPassPhrase
Client Isolation:
create_ap --isolate-clients wlan0 eth0 MyAccessPoint MyPassPhrase
Systemd service
Using the persistent systemd service
Start service immediately:
systemctl start create_ap
Start on boot:
systemctl enable create_ap
License
FreeBSD
个人热点尝试的操作
根据原开源项目内容设置自己需要的wifi
- 创建一个没有输入网络的热点
sudo create_ap -n wlan0 pi_wifi MyPassWord
- 遇到错误
ERROR: Your adapter can not be a station (i.e. be connected) and an AP at the same time
分析:应该是目前网络正在连接wifi,需要断开,turn off wifi ,重新进行尝试。
- 重新
sudo create_ap -n wlan0 pi_wifi MyPassWord
报错:RTNETLINK answers: Operation not possible due to RF-kill
分析:应该是因为wifi被我之间断开,不能之间关闭只需要断开连接就行了
- test:
这时用rfkill list
查看所有无线设备
1 | 0: phy0: Wireless LAN |
发现wlan0软件关闭了。
运行命令rfkill unblock wlan
再查看无线设备
1 | 0: phy0: Wireless LAN |
wlan0软件开启。
- 再运行上面的
sudo create_ap -n wlan0 pi_wifi MyPassWord
出现:
wlan0: AP-ENABLED
成功开启热点
设置wifi的信道
但是不要忘记了我们的目的,查了很久都没有人修改过热点的信道!!!可能大家不需要该热点的信道,但是作为搞无线网络通信的,我们不能只追求这个,我们要改信道!
思考
方法1:使用命令行修改通信信道
sudo iwconfig wlan0 channel 3
方法2:查看该开源项目的内部文件,找到设置信道的方法
方法3:更换其他方式设置热点的信道
实验
命令行修改信道
sudo iwconfig wlan0 channel 3
1 | Error for wireless request "Set Frequency" (8B04) : |
直接报错,无法修改信道。
iwconfig
1 | wlan0 IEEE 802.11bgn Mode:Master Tx-Power=20 dBm |
这说明什么,命令行在ap状态下是无效的,没办法直接这样修改,该方案不可行。
查看该开源项目的内部文件
这个热点开源项目一共有以下文件1
2bash_completion create_ap.conf create_ap.service LICENSE README.md
create_ap create_ap.openrc howto Makefile
于是一个一个的找(只花了几分钟而已哈哈)
项目源代码
1 | usage() { |
这一行明显及其关键,一看就是可以利用的代码。
其中:
echo " -c <channel> Channel number (default: 1)"
应该可以通过sudo create_ap -n wlan0 pi_wifi MyPassWord -c 2
修改信道数值。
1 | WARN: brmfmac driver doesn't work properly with virtual interfaces and |
wlan0应该是被占用了
修改信道
sudo create_ap --s wlan0
通过sudo create_ap -n wlan0 pi_wifi MyPassWord -c 1
修改信道数值。
通过其他设备进行测试’iwlist scan’
扫描信道结果:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26wlan0 Scan completed :
Cell 01 - Address: 18:64:72:92:EC:81
Channel:1
Frequency:2.412 GHz (Channel 1)
Quality=46/70 Signal level=-64 dBm
Encryption key:on
ESSID:"pi_wifi"
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
11 Mb/s; 12 Mb/s; 18 Mb/s
Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf=0000000000000000
Extra: Last beacon: 200ms ago
IE: Unknown: 0007656475726F616D
IE: Unknown: 010882840B0C12161824
IE: Unknown: 030101
IE: Unknown: 2A0102
IE: Unknown: 32043048606C
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : 802.1x
IE: Unknown: 2D1AED111BFFFFFF0000000000000000000000000000000 000000000
IE: Unknown: 3D1601000A0000000000000000000000000000000000000 0
IE: Unknown: 7F080000080000000000
IE: Unknown: DD180050F2020101800003A4000027A4000042435E00623 22F00
通过sudo create_ap -n wlan0 pi_wifi MyPassWord -c 11
修改信道数值。
通过其他设备进行测试’iwlist scan’
扫描信道结果:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Cell 12 - Address: 18:64:72:92:EC:81
Channel:11
Frequency:2.462 GHz (Channel 11)
Quality=66/70 Signal level=-44 dBm
Encryption key:off
ESSID:"pi_wifi"
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s
Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf=0000000000000000
Extra: Last beacon: 17620ms ago
IE: Unknown: 0003434832
IE: Unknown: 010882848B960C121824
IE: Unknown: 03010B
IE: Unknown: 2A0100
IE: Unknown: 32043048606C
IE: Unknown: 2D1A2C0003FF00000000000000000000000000000000000000000000
IE: Unknown: 3D160B001100000000000000000000000000000000000000
IE: Unknown: DD180050F2020101000003A4000027A4000042435E0062322F00
IE: Unknown: DD05000AEB0100
IE: Unknown: DD8E0050F204104A0001101044000102103B0001031047001000000000000010000000FCD7330F3A461021000754502D4C494E4B10230009544C2D57523734324E10240003372E3010420007312E312E312E331054000800060050F204000110110018576972656C657373204E20526F757465722057523734324E100800022288103C0001011049000600372A000120
成功修改信道!
总结
综上所示:
- 可以通过命令行修改功率
sudo iwconfig wlan1 txpower X
- 通过开源项目切换信道
1
2
3sudo create_ap --s wlan0
sudo create_ap -n wlan0 pi_wifi MyPassWord -c 11
1 | 生成ssh |
扩展:功率修改测试及方案
- 开启热点
1
2
3sudo create_ap --s wlan0
sudo create_ap -n wlan0 pi_wifi MyPassWord -c 11 - 修改功率
sudo iwconfig wlan1 txpower 30
- 检测功率
您可以点击下方按钮切换对应评论系统。
GitHub Issues