前言
RTL8XXXXX 定频工具移植编译,用于wifi模块认证配置WiFi工作在定频模式下。
一、rtl8xxxx的WiFi内核配置
1.使用说明: | ||||||||
1.先确认driver\rtl8XXXXX下的Makefile中的 | ||||||||
CONFIG_MP_INCLUDED 是否等于 y,不等于y,需修改后重新make重新编译驱动生成 .ko文件 | ||||||||
2.测试时需等系统正常运行并加载WIFI驱动后再按以下命令进行测试. | ||||||||
3.本文档是参考 Realtek_RF_MP_Tool_Guidelines_V14_20150605 整理的; | ||||||||
4.各指令的含义可以参考 Realtek_RF_MP_Tool_Guidelines_V14_20150605; | ||||||||
5.本手册适用于 rtl8XXXA的模块,需要在串口工具下测试。 |
二、移植rtwpriv软件到buildroot平台编译
1.建立rtwpriv包配置
添加menuconfig 索引
buildroot-2019.02.6/package/Config.in文件中添加如下配置
menu "My App"
source "package/rtwpriv/Config.in"
endmenu文章来源地址https://uudwc.com/A/Xoj4
如下图所示:在package下创建rtwpriv目录,并添加Config.in 和rtwpriv.mk文件
Config.in 文件内容如下
config BR2_PACKAGE_RTWPRIV
bool "rtwpriv"
help
An wifi tools.
rtwpriv.mk
文件内容如下
ifeq ($(BR2_PACKAGE_RTWPRIV), y)
RTWPRIV_VERSION:=1.0.0
RTWPRIV_SITE=$(TOPDIR)/board/art93xx/packets/rtwpriv
RTWPRIV_SITE_METHOD=localdefine RTWPRIV_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE) CC=$(TARGET_CC) CXX=$(TARGET_CXX) -C $(@D)
endefdefine RTWPRIV_CLEAN_CMDS
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) clean
endefdefine RTWPRIV_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
endefdefine RTWPRIV_UNINSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) uninstall
endef$(eval $(generic-package))
endif
2.源码准备
源码获取地址,我分享的csdn资源:wifi定频工具源码和使用手册
源代码如下:
Makefile文件内容
DEPS =
OBJ = rtwpriv.o
CFLAGS = -lm
CXXFLAGS= -lmrtwpriv: rtwpriv.cpp rtw_api.cpp rtw_udpsrv.cpp
$(CC) -o $@ $^ $(CXXFLAGS).PHONY: clean
clean:
rm -f *.o *~ rtwpriv.PHONY: install
install:
cp -f rtwpriv $(TARGET_DIR)/usr/bin/.PHONY: uninstall
uninstall:
rm -f $(TARGET_DIR)/usr/bin/rtwpriv
3.编译rtwpriv
在buildroot根目录输入 make menuconfig
选中Target packages → My App 下面的rtwpriv
保存,并退出
最后执行make rtwpriv 就可以编rtwpriv包,输出rtwpriv可执行程序
三、RTL8XXXXX 定频软件操作手册
WIFI2.4G测试指令 ifconfig wlan0 up ;开启网卡 rtwpriv wlan0 mp_start ;加载测试程序 一: 11b 发射模式 11M =22 步骤 1)11M 11b 模式 20M 带宽 #ifconfig wlan0 up ;开启网卡 #rtwpriv wlan0 mp_start ;加载测试程序 (1)频道 1 rtwpriv wlan0 mp_channel 1 ;设定通道(1-13) rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 22 ;设定模式(22=11M) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 (2)频道 7 rtwpriv wlan0 mp_channel 7 ;设定通道(1-13) rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 22 ;设定模式(22=11M) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 (3)频道 13 rtwpriv wlan0 mp_channel 13 ;设定通道(1-13) rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 22 ;设定模式(22=11M) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 二: 11g 发射模式 54M =108 步骤 1)54M 11g 模式 20M 带宽 #ifconfig wlan0 up ;开启网卡 #rtwpriv wlan0 mp_start ;加载测试程序 (1)频道 1 rtwpriv wlan0 mp_channel 1 ;设定通道(1-13) rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 108 ;设定模式(108=54M) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 (2)频道 7 rtwpriv wlan0 mp_channel 7 ;设定通道(1-13) rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 108 ;设定模式(108=54M) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 (3)频道 13 rtwpriv wlan0 mp_channel 13 ;设定通道(1-13) rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 108 ;设定模式(108=54M) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 三: 11N发射模式 MCS7 =135 步骤 1)MCS7 11n 模式 20M 带宽 #ifconfig wlan0 up ;开启网卡 #rtwpriv wlan0 mp_start ;加载测试程序 (1)频道 1 rtwpriv wlan0 mp_channel 1 ;设定通道(1-13) rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 135 ;设定模式(MCS7=135) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 (2)频道 7 rtwpriv wlan0 mp_channel 7 ;设定通道(1-13) rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 135 ;设定模式(MCS7=135) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 (3)频道 13 rtwpriv wlan0 mp_channel 13 ;设定通道(1-13) rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 135 ;设定模式(MCS7=135) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 三: 11N 发射模式 MCS7 =135 步骤 1)MCS7 11n 模式 40M 带宽 #ifconfig wlan0 up ;开启网卡 #rtwpriv wlan0 mp_start ;加载测试程序 (1)频道 3 rtwpriv wlan0 mp_channel 3 ;设定通道(3-11) rtwpriv wlan0 mp_bandwidth 40M=1,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 135 ;设定模式(MCS7=135) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 (2)频道 7 rtwpriv wlan0 mp_channel 7 ;设定通道(3-11) rtwpriv wlan0 mp_bandwidth 40M=1,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 135 ;设定模式(MCS7=135) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 (3)频道 11 rtwpriv wlan0 mp_channel 11 ;设定通道(3-11) rtwpriv wlan0 mp_bandwidth 40M=1,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 135 ;设定模式(MCS7=135) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 WIFI5G测试指令 一: 11a发射模式 54M =108 步骤 1)54M 11a 模式 20M 带宽 #ifconfig wlan0 up ;开启网卡 #rtwpriv wlan0 mp_start ;加载测试程序 (1)频道 36 rtwpriv wlan0 mp_channel 36 ;设定通道(36-161) rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 108 ;设定模式(108=54M) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 (2)频道 149 rtwpriv wlan0 mp_channel 149 ;设定通道(36-161) rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 108 ;设定模式(108=54M) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 (3)频道 161 rtwpriv wlan0 mp_channel 161 ;设定通道(36-161) rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 108 ;设定模式(108=54M) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 三: 11a发射模式 MCS7 =135 步骤 1)MCS7 11a 模式 20M 带宽 #ifconfig wlan0 up ;开启网卡 #rtwpriv wlan0 mp_start ;加载测试程序 (1)频道 36 rtwpriv wlan0 mp_channel 36 ;设定通道(36-161) rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 135 ;设定模式(MCS7=135) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 (2)频道149 rtwpriv wlan0 mp_channel 149 ;设定通道(36-161) rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 135 ;设定模式(MCS7=135) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 (3)频道 161 rtwpriv wlan0 mp_channel 161 ;设定通道(36-161) rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 135 ;设定模式(MCS7=135) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 三: 11a发射模式 MCS7 =135 步骤 1)MCS7 11a模式 40M 带宽 #ifconfig wlan0 up ;开启网卡 #rtwpriv wlan0 mp_start ;加载测试程序 (1)频道 38 rtwpriv wlan0 mp_channel 38 ;设定通道(36-161) rtwpriv wlan0 mp_bandwidth 40M=1,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 135 ;设定模式(MCS7=135) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 (2)频道 151 rtwpriv wlan0 mp_channel 151 ;设定通道(36-161) rtwpriv wlan0 mp_bandwidth 40M=1,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 135 ;设定模式(MCS7=135) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 (3)频道 165 rtwpriv wlan0 mp_channel 159 ;设定通道(36-161) rtwpriv wlan0 mp_bandwidth 40M=1,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 135 ;设定模式(MCS7=135) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 三: 11ac发射模式 MCS9 步骤 1)MCS7 11ac模式 80M 带宽 #ifconfig wlan0 up ;开启网卡 #rtwpriv wlan0 mp_start ;加载测试程序 (1)频道 42 ;5180MHz rtwpriv wlan0 mp_channel 42 ;设定通道(36-161) rtwpriv wlan0 mp_bandwidth 40M=2,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 169 ;设定模式(MCS9) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 (2)频道 155 ;5775MHz rtwpriv wlan0 mp_channel 155 ;设定通道(36-161) rtwpriv wlan0 mp_bandwidth 40M=2,shortGI=0 ;设定带宽(40M=0 20M/40M=1 40M/40=2 80M) rtwpriv wlan0 mp_ant_tx a rtwpriv wlan0 mp_txpower patha=40 ;设定 power 值(0-63) rtwpriv wlan0 mp_rate 169 ;设定模式(MCS9) rtwpriv wlan0 mp_ctx count=%100,pkt ;连续发包 rtwpriv wlan0 mp_ctx stop ;停止发包 读MAP rtwpriv wlan0 efuse_get realmap
四、rtwpriv工具脚本
rtwpriv.sh脚本
脚本使用方法
rtwpriv.sh 7 0 a 40 135 start 1
rtwpriv.sh 7 0 a 40 135 stop 1
参数定义: rtwpriv.sh mp_channel:7 mp_bandwidth_40M:0 mp_ant_tx:a
mp_txpower_patha:40 mp_rate:135 run_cmd:start cmd_delay:1 "
#!/bin/shCHAN=$1
BANDWIDTH=$2
ANT=$3
POWER=$4
MODE=$5
RF_TRAN=$6
CMD_DELAY=$7
RTWPRIV_CMD=""
RTWPRIV_CMD_STR=""param_check(){
ret=0
if [ $CHAN -gt 255 ]
then
echo "mp_channel=$CHAN >255 error !"
ret=1
return $ret
fi
if [ $BANDWIDTH -gt 2 ]
then
echo "mp_bandwidth_40M=$BANDWIDTH >2 error !"
ret=2
return $ret
fiif [ $POWER -gt 63 ]
then
echo "mp_txpower_patha=$POWER >63 error !"
ret=4
return $ret
fiif [ $MODE -gt 255 ]
then
echo "mp_rate=$MODE >255 error !"
ret=5
return $ret
fi
if [ $RF_TRAN != start ] && [ $RF_TRAN != stop ]
then
echo "run_cmd=$RF_TRAN error, please input start or stop !"
ret=6
return $ret
fiif expr $CMD_DELAY \<\= 0
then
echo "cmd_delay=$CMD_DELAY <0 error !"
ret=7
return $ret
fi
return 0
}
cmd_exec_func(){
RTWPRIV_CMD_STR="$1 $1 $2 $3 $4 $5 $6"
echo "exec--->${RTWPRIV_CMD_STR}"
$RTWPRIV_CMD
}if [ $1 == "-h" ] || [ $1 == "--help" ]
then
echo "usage :
rtwpriv.sh 7 0 a 40 135 start 1
rtwpriv.sh 7 0 a 40 135 stop 1
param define --> rtwpriv.sh mp_channel:7 mp_bandwidth_40M:0 mp_ant_tx:a \
mp_txpower_patha:40 mp_rate:135 run_cmd:start cmd_delay:1 "
exit 0
fi
param_check
param_ret=$?
if [ $param_ret -gt 0 ] ;then
echo "<<<<param $param_ret error!>>>>"
echo "usage :
rtwpriv.sh 7 0 a 40 135 start 1
rtwpriv.sh 7 0 a 40 135 stop 1
param define --> rtwpriv.sh mp_channel:7 mp_bandwidth_40M:0 mp_ant_tx:a \
mp_txpower_patha:40 mp_rate:135 run_cmd:start cmd_delay:1 "
exit $param_ret
fi
if [ $RF_TRAN == "start" ] ;thenRTWPRIV_CMD="rtwpriv wlan0 mp_channel $CHAN"
cmd_exec_func $RTWPRIV_CMD $RTWPRIV_CMD_STR
sleep $CMD_DELAY
RTWPRIV_CMD="rtwpriv wlan0 mp_bandwidth 40M=$BANDWIDTH,shortGI=0"
cmd_exec_func $RTWPRIV_CMD
sleep $CMD_DELAY
RTWPRIV_CMD="rtwpriv wlan0 mp_ant_tx $ANT"
cmd_exec_func $RTWPRIV_CMD
sleep $CMD_DELAY
RTWPRIV_CMD="rtwpriv wlan0 mp_txpower patha=$POWER"
cmd_exec_func $RTWPRIV_CMD
sleep $CMD_DELAY
RTWPRIV_CMD="rtwpriv wlan0 mp_rate $MODE"
cmd_exec_func $RTWPRIV_CMD
sleep $CMD_DELAY
RTWPRIV_CMD="rtwpriv wlan0 mp_ctx count=%100,pkt"
cmd_exec_func $RTWPRIV_CMD
sleep $CMD_DELAY
echo "<<rtwpriv run start success !>>"
elif [ $RF_TRAN == "stop" ] ;thenRTWPRIV_CMD="rtwpriv wlan0 mp_ctx $RF_TRAN"
cmd_exec_func $RTWPRIV_CMD
sleep $CMD_DELAY
echo "<<rtwpriv run stop success !>>"
fi文章来源:https://uudwc.com/A/Xoj4