本帖最后由 xhackerustc 于 2024-5-1 11:52 编辑
据datasheet,ESP32C6支持IEEE 802.11b/g/n/ax,2.4 GHz 频段,1T1R。其中,802.11ax仅支持非接入点工作模式。今天我们就试试wifi station模式,再做做大家喜闻乐见的wifi iperf性能测试。因做wifi iperf测试时,要连接ap,所以iperf能工作证明sta就顺便过了。不过笔者家里还没有支持wifi6路由器,后面或许会找个wifi6路由器过来试试。
iperf的编译
iperf有iperf2和iperf3,它们两协议并不兼容。esp官方已经实现了和iperf2兼容的iperf工具,在目录examples/wifi/iperf下,配置一下:
cd examples/wifi/iperf
idf.py set-target esp32c6
idf.py menuconfig
idf.py build
menuconfig时主要注意三个地方:flash改QIO,4MB大小;console out改usb;确保gcc optimization是-O2。具体改法参考笔者第一篇测评贴[FireBeetle 2 ESP32C6开发板]linux下开发环境搭建,这里不再赘述。
iperf烧录和运行
esptool.py -p /dev/ttyACM0 --chip esp32c6 -b 460800 --before default_reset --after hard_reset write_flash --flash_mode qio --flash_size 4MB --flash_freq 80m 0x10000 build/iperf.bin
在pc机上运行iperf(pc端的iperf可从linux发行版安装)服务端:
iperf -s
在板子usb串口console中:
sta_connect your_wifi_ap_ssid your_wifi_ap_passwd
连上wifi ap以后如图所示:
现在可以运行iperf了
iperf -c YOUR_PC_IP_ADDR -i3 -t 60
板子供电不足重启
what?猛然发现板子重启了
Brownout是什么鬼?字面意思是停电、电压降低?猜测这可能是wifi iperf性能测试时耗电较大,和供电不足有关,搜索也发现一堆线索指明可能是供电不足,ldo电压猛掉。因是电脑usb口供电,个人先尝试下换个电脑usb口特别是支持usb3的,实在不行要用5v引脚单独供电了。幸运的是换了支持usb3的接口Brownout问题解决了,也证明了前面的电脑usb口供电不足猜想。
最终测试结果
最后把板子放在靠近路由器的地方,最终运行结果截图:
结果分析
吞吐量在12.62Mbits/s ~ 16.29Mbits/s变动,一个wifi 2.4GHZ频道占满冲突繁忙的地方取得这个性能还行,如果上了wifi6可能更好,或者在一个电磁环境优良屏蔽其它wifi 2.4ghz频道的环境中测会有更优表现。