AW-CM276NF的MFGTool以及labtool不能正常工作
Azurewavede 《AW-CM276NF_MFG Tool & Command User Guide_v01_20200525.pdf》(后面称为《文档》)里描述的wifi模块是pcie接口的而我使用的AW-CM276NF wifi模块是sdio接口的,但两者的Chipset都是W8997,因此我参考该文档的步骤来进行测试。
目前该驱动的在我们的设备上,STA模式和AP模式都是是可以正常使用的,除了Throughput测试数值比较低。
bridge_init.conf
load.sh
unload.sh
insmod mlan.ko
#insmod sd8897.ko mfg_mode=1 drv_mode=1 fw_name=mrvl/w8897.bin(load.sh脚本wifi驱动加载例子)
#insmod sd8997.ko mfg_mode=1 drv_mode=1 cal_data_cfg=none \ fw_name=mrvl/sdsd8997_combo_v4.bin (使用的fw为正常工作的固件,在后面的mfgbride时也一样有问题)
insmod sd8997.ko mfg_mode=1 drv_mode=1 cal_data_cfg=none \ fw_name=mrvl/sdio8997_sdio_combo-mfg.bin (使用的fw为来自MFG-W8997-MF-WIFI-BT-BRG-FC-VS2013-1.0.0.172-16.80.205.p189\bin\FwImage\sdio8997_sdio_combo.bin重新命名而来)
#注释:没有cal_data_cfg=none加载驱动会报错
驱动加载的Log:
[113035.173430] wlan: Enable TX SG mode
[113035.180240] wlan: Enable RX SG mode
[113036.021750] Wlan: FW download over, firmwarelen=473920 downloaded 473920
ifconfig eth0 192.168.0.1
root@Router:~/mfg# ./mfgbridge
UART: initialize ...
Can't open serial port: No such file or directory
NET: initialize ...
NET: socket bind is completed!
NET: initialization is completed.
NET: server port: 9930
NET: client port: 9931
DutIpAddress = 192.168.0.1
HostIpAddress = 192.168.0.10
上面红色框的值表示报错了,正常应该类似于:
麻烦帮忙分析是wifi driver/MFG firmware/mfgbridge/labtool哪个环节出问题了?
提前感谢大家!
Solved! Go to Solution.
Hello @changbaoma
关于mfg_bridge的问题我们将会在新的版本中解决,如果你需要测试芯片的RF性能,你可以参考Feature Configuration Guide for NXP-based Wireless Modules on i.MX 8M Quad EVK - User manual (public... 中的Chapter 2.8利用软件方式修改射频参数,效果是一样的。
Hello Customer
上一个回复有点太多了有点乱,我重开一个队列回复你。
启用mfg_mode=1模式以及指定使用mfg固件后,无法连接AP。
->>很抱歉这个问题是我一开始的失误,加载mfg_mode=1后WiFi应由前端天线连接到射频检测仪器上,不需要连接到AP。应该是板子通过Ethernet和hostPC连接到同一subnet下就可以。
mlan0无MAC地址,同时wpa_supplicant -B -D nl80211 -i mlan0 -c /etc/wpa_supplicant.conf后mlan0接口根本没有收发包统计,还有wpa_cli命令也无法scan到任何热点。
->>在mfgbridge模式下mlan0网口信息如下:
Hi, shaun_wu @shaun_wu
已按您的要求修改了bridge_linux_0.1.0.43源码的ethio_flag = 1,如下
root@Router:~/mfg/bridge_linux_0.1.0.43# grep ethio_flag ./ -rnw
Binary file ./bridge/mfgbridge matches
./drvwrapper/drv_wrapper.c:70:static int ethio_flag = 1; /* modify according to shaun_wu */
./drvwrapper/drv_wrapper.c:194: ethio_flag = 1;
./drvwrapper/drv_wrapper.c:577: if (ethio_flag == 1) {
Binary file ./drvwrapper/drv_wrapper.o matches
但在连接在labtool操作command 11时,mfgbridge会报错,见附件;而command 11之后labtool还是一样''DUTif GetRfChannel = 0xFFFFFFF9''和‘’RF Channel=0<0.0MHz>‘’
麻烦shaun_wu您继续帮助分析。
Hello changbaoma
很抱歉这么迟回复你,因为家里的紧急事情没有来得及顾及工作。现在我们继续讨论你这个问题。在改过之前的ethio_flag之后我就一直无法复现你的问题,所以现在我把我测试环境和步骤分享给你参考,我建议你按照我的环境再测试一下,如果有问题我们继续讨论。请尽量用我们官网release出来的新版驱动和Labtool。
Environment:
HW:
Azurewave AW-CM276MA(88W8997 module)
i.MX8MP
SW:
KERNEL 5.4.70
Driver: PCIE8997-0.0.0.p0-MXM5X16210-GPL-(FP92)
Labtool: 88W8997_manufacturing_release_package(p193)
Firmware: p193 Labtool firmware: pcie8997_uart_combo.bin
Test steps:
1. Load driver:
root@imx8mpevk:~/8997# modprobe moal mfg_mode=1 fw_name=nxp/pcie8997_uart_combo.bin drv_mode=1 cal_data_cfg=none
[14468.030772] wlan: Loading MWLAN driver
[14468.035670] Attach moal handle ops, card interface type: 0x204
[14468.041575] No module param cfg file specified
[14468.046045] rx_work=1 cpu_num=4
[14468.049203] Attach mlan adapter operations.card_type is 0x204.
[14468.057965] Request firmware: nxp/pcie8997_uart_combo.bin
[14468.063824] WLAN FW already running! Skip FW download
[14468.068917] WLAN FW is active
[14468.071911] on_time is 14468069983250
[14468.075806] get fw info failed! status=-1, error_code=0x0
[14468.081233] set mac address failed! status=-1, error_code=0x0
[14468.089223] get fw info failed! status=-1, error_code=0x0
[14468.094705] wlan: version = PCIE8997-0.0.0.p0-MXM5X16210-GPL-(FP92)
[14468.101262] wlan: Driver loaded successfully
2. Run mfg_bridge on board
root@imx8mpevk:~/8997/bin_mfgbridge# ./mfgbridge
UART: initialize ...
Can't get port settings: Input/output error
NET: initialize ...
NET: socket bind is completed!
NET: initialization is completed.
NET: server port: 9930
NET: client port: 9931
3. Connect board and host PC under same subnet and edit setup.ini
DutIpAddress = 192.168.1.102
HostIpAddress = 192.168.1.100
Protocol = TCP
…….
NO_EEPROM=1
NoEepromBtFlexFileName = WlanCalData_ext.conf
NoEepromWlanFlexFileName = WlanCalData_ext.conf
4.Copy calibration file to host PC labtool path and rename it as 'WlanCalData_ext.conf'
5. Run DutApiMimoBt.exe on host PC and use commends to check FW version and other informations.
Name: Dut labtool
Version: 1.0.0.173
Date: Jul 7 2020 (00:57:53)
Note:
Enter CMD 99 to Exit
Enter option: 1
Name: DutApiClass
Interface: EtherNet
Version: 1.0.0.173
Date: Jul 7 2020 (00:56:49)
Note:
C:\Users\nxf72799\Desktop\labtool.p193\release\labtool\setup.ini
Dut's IP 192.168.1.102:9930
Host's IP 192.168.1.100:9931
DutIf_UdpIp::delay 0
DutIf_UdpIp::vg_IfSpy 0
_WSAStartup _socketCount=1
TCP connecting...
DutIf_InitConnection: 0x00000000
--------------------------------------------------------
W89xx (802.11a/g/b/n/ac) TEST MENU
--------------------------------------------------------
Enter option: 88
DLL Version : 1.0.0.173
LabTool Version: 1.0.0.173
FW Version: 16.80.205.193 Mfg Version: 2.0.0.63
SOC OR Version: 2.2 Customer ID: 0
RF OR Version: 9.2 Customer ID: 0
Enter option: 11
DutIf_GetRfChannel: 0x00000000
RF Channel: 6 (2437.0 MHz)
Enter option: 111
DutIf_GetChannelBw: 0x00000000
Channel Bw: 0
你可以尝试我的步骤然后把哪里出错了发过来给我们分析,特别请检查configure文件是否正确并尝试用不同的driver。
Best Regards
Shaun
Hello @changbaoma
请问你有试过或者什么更新么?因为我这边测试下来没有什么问题,所以需要你更进一步给出更多信息让我来帮你寻找问题。
非常感谢您的回复,@shaun_wu
您给出的流程跟前面我贴出来的帖子流程是一致的。
我使用的模块是AW-CM276NF,与您使用的wifi模块chipset都是NXP的W8997但使用的接口不一样。我们的模块是sdio接口的,不知道您使用的wifi驱动PCIE8997-0.0.0.p0-MXM5X16210-GPL-(FP92)是否也支持sdio接口方式的AW-CM276NF。如果不支持,我可以从哪里可以下载到NXP W8997 sdio接口的最新驱动和固件?
Hello @changbaoma
==》明白,我这个和你一样也是276,M.2 接口pcie&uart的,driver不支持sdio接口,我会尝试一下sdio接口的,用和你一样的模组,稍后我们看一下结果。
==》你可以通过 https://www.nxp.com/products/wireless/wi-fi-plus-bluetooth/2-4-5-ghz-dual-band-2x2-wi-fi-5-802-11ac-... 下载到最新的driver package和mfg_bridge包,不过需要NDA。你这边可以找我们签NDA或者联系AzureWave问一下。
Hello @changbaoma
刚才连接貌似放错了,下载8997 driver package请通过此连接:https://www.nxp.com/products/wireless/wi-fi-plus-bluetooth/2-4-5-ghz-dual-band-2x2-wi-fi-5-802-11ac-...
Hello @changbaoma
经过我们反复确认,目前在海华AW276+i.MX8MP上面成功的复现的你的问题,这个问题比较奇怪,在Ubuntu的电脑上测试sdio接口,使用相同的fw和driver没有问题,其他接口也没有类似报错,因此目前不能很清楚的找出问题的症结。我正在与我们的专家团队一起工作来找到问题所在,所以请耐心等待。同时,请你也尝试一下不同的配置,如果有什么新发现可以upload过来。谢谢!
Hello @changbaoma
是的,我们还在寻找原因,有任何更新我会第一时间upload给你,很抱歉这个问题处理了这么久,确实是个比较奇怪的bug。
Hello @changbaoma
关于mfg_bridge的问题我们将会在新的版本中解决,如果你需要测试芯片的RF性能,你可以参考Feature Configuration Guide for NXP-based Wireless Modules on i.MX 8M Quad EVK - User manual (public... 中的Chapter 2.8利用软件方式修改射频参数,效果是一样的。
您好,Wu工
我们按照你上面文档的Chapter 2.8无法修改射频参数。过程如下:
文档的Chapter 2.8修改参数的配置文件为/proc/mwlan/adapterX/config, 但我们的设备没有adapterX文件夹,如下
root@Router:~# ls /proc/mwlan/
config uap0/ wfd0/ wlan0/
但/proc/mwlan目录下有一个config,运行查看
root@Router:~# cat /proc/mwlan/config
hardware_status=0
netlink_num=31
drv_mode=7
sdcmd52rw=0 0x0 0x00
尝试将射频参数修改作用该文件
root@Router:~# echo "rf_test_mode=1" >> /proc/mwlan/config
没报错,重新cat /proc/mwlan/config查看内容没发生变化,而上图说可以cat来验证值。
另外该章节没说明该射频测试使用的是正常工作的wifi firmware还是专门的mfg firmware,两个firmware我们都尝试但现象一样。
好的 wu工 非常感谢。
有新的版本时麻烦告知我,再次感谢您的耐心支持。
Hello @changbaoma
都是应该的,新版本labtool发行后我会在这个community通知你。感谢你的耐心。
Hello customer
不要用Ethernet口,要用WiFi模组的网口。
1. 请用
$ ifconfig -al
检查网口,确保mlan0 被enable
2. 用以下命令将mlan0与router连接,确保windows PC 和 待测板子在一个局域网下。
$ ifconfig mlan0 up
$ wpa_passphrase <ssid> <password> >> /etc/wpa_supplicant.conf
$ wpa_supplicant -d -B -i mlan0 -c /etc/wpa_supplicant.conf -Dnl80211
$ udhcpc -i mlan0
3. 在window端配置‘SetUp.ini’文件中的‘DutIpAddress’和‘HostIpAddress’到正确的ip地址。
4. 启动mfgbridge输命令
Best Regards
Shaun
您好 @shaun_wu
1、您回复的“确保mlan0 被enable”是指加载wifi驱动后进行ifconfig mlan0 up吗?还是指"./enable.sh"但我们使用的MFG-W8997-MF-WIFI-BT-BRG-FC-VS2013-1.0.0.172-16.80.205.p189内并没有enable脚本。可以提供一个给我参考吗?
2、我的mfg固件使用的是MFG-W8997-MF-WIFI-BT-BRG-FC-VS2013-1.0.0.172-16.80.205.p189\bin\FwImage\sdio8997_sdio_combo.bin(在设备上重命名为sdio8997_sdio_combo-mfg.bin), 加载wifi驱动后mlan0无MAC地址,手动分配MAC地址后wpa_supplicant进程无法正常启动,操作log如下:
root@Router:~/mfg# insmod ../mlan.ko
root@Router:~/mfg# insmod ../sd8997.ko mfg_mode=1 drv_mode=1 cal_data_cfg=none fw_name=mrvl/sdio8997_sdio_combo-mfg.bin
[ 6137.570855] wlan: Enable TX SG mode
[ 6137.574376] wlan: Enable RX SG mode
[ 6138.426156] Wlan: FW download over, firmwarelen=473920 downloaded 473920
root@Router:~/mfg#
root@Router:~/mfg# ifconfig mlan0
mlan0: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 00:00:00:00:00:00 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@Router:~/mfg# ifconfig mlan0 up
SIOCSIFFLAGS: Cannot assign requested address
root@Router:~/mfg# ifconfig mlan0 hw ether 00:11:22:33:44:55
root@Router:~/mfg# ifconfig mlan0 up
root@Router:~/mfg# wpa_supplicant -B -D nl80211 -i mlan0 -c /etc/wpa_supplicant.conf
Successfully initialized wpa_supplicant
nl80211: Driver does not support authentication/association or connect commands
nl80211: deinit ifname=mlan0 disabled_11b_rates=0
mlan0: Failed to initialize driver interface
root@Router:~/mfg#
root@Router:~/mfg# ps -aux | grep wpa_supplicant
root 7732 0.0 0.1 3868 568 ttymxc0 S+ 10:24 0:00 grep wpa_supplicant
root@Router:~/mfg#
麻烦您帮忙确认哪里出错了, 特别是检查insmod ../sd8997.ko携带的参数是否正确?以及MFG固件是否正确?
另外:我发现网上这个文档里的第五章节“Manufacturing utility (MFG)”并没提及需要wpa_supplicant去连接热点。
(Page12-14)
Hi changbaoma
1. mlan0 被enable是指加载驱动成功后用 #ifconfig -al 检测所有网口确保有mlan0
2. WiFi模组enable和作为station连接AP步骤和是否使用labtool没有关系,根据你的描述 “目前该驱动的在我们的设备上,STA模式和AP模式都是是可以正常使用的” 我认为你已经正确的 enable WiFi并把hostPC和WiFi模组连接在同一局域网下。
3. 加载wifi驱动后mlan0无MAC地址,手动分配MAC地址后wpa_supplicant进程无法正常启动
->>mlan0是STA模式下的网口,需要连接AP后由AP分配地址给他
$ udhcpc -i mlan0
这个命令就是用来分配网口ip地址的。
4. 以及MFG固件是否正确?
mfgbridge是一个应用程序,你提到的固件是WiFi模组的FW。
5. 检查 insmod ../sd8997.ko mfg_mode=1 drv_mode=1 cal_data_cfg=none fw_name=mrvl/sdio8997_sdio_combo-mfg.bin
->>fw_name=mrvl/sdio8997_sdio_combo-mfg.bin 这个路径对么?为什么在log中显示下载FW。而且有显示FW加载成功么?
您好, shaun_wu
非常感谢您的耐心支持。
下面一一回复你,首先将问题5提前:
5. 检查 insmod ../sd8997.ko mfg_mode=1 drv_mode=1 cal_data_cfg=none fw_name=mrvl/sdio8997_sdio_combo-mfg.bin
->>fw_name=mrvl/sdio8997_sdio_combo-mfg.bin 这个路径对么?为什么在log中显示下载FW。而且有显示FW加载成功么?
->> 没看到wifi驱动报successfully跟系统的printk打印等级有关系,先运行
echo 8 > /proc/sys/kernel/printk
再安装wifi驱动(fw_name指定为MFG固件),这样是可以看到successfully的,如下:
root@Router:~/mfg# insmod ../mlan.ko
root@Router:~/mfg# insmod ../sd8997.ko mfg_mode=1 drv_mode=1 cal_data_cfg=none fw_name=mrvl/sdio8997_sdio_combo-mfg.bin cfg80211_wext=0xf
[48319.285239] wlan: Loading MWLAN driver
[48319.312662] vendor=0x02DF device=0x9141 class=0 function=1
[48319.318691] SDIO: max_segs=128 max_seg_size=65535
[48319.323423] rx_work=0 cpu_num=1
[48319.331019] wlan: Enable TX SG mode
[48319.334554] wlan: Enable RX SG mode
[48319.377094] Request firmware: mrvl/sdio8997_sdio_combo-mfg.bin
[48320.188612] Wlan: FW download over, firmwarelen=473920 downloaded 473920
[48321.107602] WLAN FW is active
[48321.132747] wlan: version = SD8997-0.0.0.p0-C4X16C687-GPL-(FP68)
[48321.149609] wlan: Driver loaded successfully
1. mlan0 被enable是指加载驱动成功后用 #ifconfig -al 检测所有网口确保有mlan0
->>我的设备加载mlan.koy和sd8997.ko后,ifconfig -a是可以看到mlan0的。
root@Router:~/mfg# ifconfig -a
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet6 fe80::36fa:40ff:fe00:0 prefixlen 64 scopeid 0x20<link>
ether 34:fa:40:00:00:00 txqueuelen 1000 (Ethernet)
RX packets 1944 bytes 1931470 (1.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 220 bytes 28737 (28.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
mlan0: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 00:00:00:00:00:00 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2. WiFi模组enable和作为station连接AP步骤和是否使用labtool没有关系,根据你的描述 “目前该驱动的在我们的设备上,STA模式和AP模式都是是可以正常使用的” 我认为你已经正确的 enable WiFi并把hostPC和WiFi模组连接在同一局域网下。
->>我说的“STA模式和AP模式可以正常使用”是指在使用非MFG的wifi固件时。使用的命令是:insmod ../sd8997.ko cal_data_cfg=none fw_name=mrvl/sdsd8997_combo_v4.bin(非MFG固件) cfg80211_wext=0xf;而加载sd8997.ko驱动时如果fw_name指定为MFG固件是无法连接AP的。
3. 加载wifi驱动后mlan0无MAC地址,手动分配MAC地址后wpa_supplicant进程无法正常启动
->>mlan0是STA模式下的网口,需要连接AP后由AP分配地址给他,这个udhcpc命令就是用来分配网口ip地址的。
->>我说的是加载MFG固件的wifi驱动后mlan0没有MAC地址,udhcpc只是用来分配IP地址。我的设备加载以MFG固件方式加载wifi驱动后,的确是没有MAC地址的(见上面问题1回复,如ether 00:00:00:00:00:00);而以非MFG固件的方式来加载wifi驱动后是有MAC地址的,如下
root@Router:~/mfg# insmod ../mlan.ko
root@Router:~/mfg# insmod ../sd8997.ko cal_data_cfg=none fw_name=mrvl/sdsd8997_combo_v4.bin(非MFG固件) cfg80211_wext=0xf
[50225.617409] wlan: Loading MWLAN driver
[50225.644239] vendor=0x02DF device=0x9141 class=0 function=1
[50225.650212] SDIO: max_segs=128 max_seg_size=65535
[50225.654938] rx_work=0 cpu_num=1
[50225.661722] wlan: Enable TX SG mode
[50225.665252] wlan: Enable RX SG mode
[50225.707046] Request firmware: mrvl/sdsd8997_combo_v4.bin
[50226.721010] Wlan: FW download over, firmwarelen=625976 downloaded 625976
[50227.630309] WLAN FW is active
[50227.664705] fw_cap_info=0x18fcffa3, dev_cap_mask=0xffffffff
[50227.670546] max_p2p_conn = 8, max_sta_conn = 8
[50227.802636] wlan: version = SD8997-16.68.10.p137-C4X16C687-GPL-(FP68)
[50227.842782] Set REG 0x80002328: 0x13d57 slew_rate=3
[50227.869857] wlan: Driver loaded successfully
root@Router:~/mfg#
root@Router:~/mfg# ifconfig mlan0
mlan0: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 00:e9:3a:4e:0b:b7 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
因此我疑惑会会不会是insmod ../sd8997.ko mfg_mode=1 drv_mode=1 cal_data_cfg=none fw_name=mrvl/sdio8997_sdio_combo-mfg.bin(MFG固件)出了问题,而导致mlan0无MAC地址的;还是说MFG模式下mlan一开始就是没有MAC地址,需要手动配置MAC地址。
4. 以及MFG固件是否正确?
mfgbridge是一个应用程序,你提到的固件是WiFi模组的FW。
->> 我不清楚的是我使用的MFG-W8997-MF-WIFI-BT-BRG-FC-VS2013-1.0.0.172-16.80.205.p189\bin\FwImage\sdio8997_sdio_combo.bin(在设备上重命名为sdio8997_sdio_combo-mfg.bin)MFG固件是否使用于AW- CM276NFwifi模块。