WiFi A2DP iperf Coexistence Sample
源码位置: samples/network/coex/wifi_a2dp_iperf_coex 查看源码
功能说明
本示例用于在同一个 arcs_evb 工程中,手动组合 WiFi 吞吐压测与经典蓝牙 A2DP Source 推流,观察两者的共存影响。
示例默认只完成系统初始化,不会自动执行以下动作:
不自动连接 WiFi
不自动启动
iperf压测循环不自动扫描或连接蓝牙设备
不自动启动 A2DP 音频推流
当前 sample 提供以下能力:
初始化 WiFi、经典蓝牙与 BT Audio Framework
通过
wifi connect|disconnect|status手动控制联网,支持运行时指定 SSID/密码通过
iperf start|stop|status|mode|server手动控制吞吐测试,支持运行时指定服务端地址通过
bt_inquiry、bt_connect、bt_connect_index手动控制蓝牙扫描与连接通过
bt_audio_start、bt_audio_stop、bt_audio_volume手动控制 A2DP Source 推流通过
coex status统一查看 WiFi / iperf / BT / audio 当前状态通过
threads查看 FreeRTOS 线程、栈和运行时间占比信息
硬件与测试环境
硬件
arcs_evb一台支持 A2DP Sink 的蓝牙耳机或蓝牙音箱
一台可作为
iperf3服务端的主机
串口
日志串口:开发板映射出的串口设备
波特率:
921600
运行前配置
samples/network/coex/wifi_a2dp_iperf_coex/prj.conf 中的 WiFi 和 iperf3 服务端配置仅作为默认值:
CONFIG_IPERF_WIFI_SSID="your_wifi_ssid"
CONFIG_IPERF_WIFI_PWD="your_wifi_password"
CONFIG_IPERF_SERVER_IP="192.168.1.100"
CONFIG_IPERF_SERVER_PORT=5201
CONFIG_IPERF_MODE_UPLINK=y
也可以不重新编译,直接在 shell 中按实际环境覆盖:
wifi connect your_wifi_ssid your_wifi_password
iperf server 192.168.1.100 5201
主机侧启动 iperf3 服务端示例:
iperf3 -s
示例流程
上电后初始化 shell、文件系统、KV、WiFi、BT 和 BT audio virtual interface
用户手动执行
wifi connect建立 WiFi 连接并等待 DHCP 完成用户手动执行
iperf start开启吞吐压测循环用户手动执行
bt_inquiry扫描设备,再通过bt_connect或bt_connect_index连接远端 A2DP Sink用户手动执行
bt_audio_start启动音频推流通过
coex status和串口日志观察 WiFi / BT 共存状态变化
编译
重要提示:在编译前,请先确认您使用的开发板型号。SDK 目前支持以下开发板:
arcs_evb - ARCS EVB 评估板
arcs_mini - ARCS Mini 开发板
根据您的开发板型号,选择对应的编译命令:
在 SDK 根目录执行编译。Linux 使用 build.sh:
# 使用 arcs_evb 开发板
./build.sh -C -S samples/<示例路径> -DBOARD=arcs_evb
# 或使用 arcs_mini 开发板
./build.sh -C -S samples/<示例路径> -DBOARD=arcs_mini
Windows PowerShell 使用 build.ps1:
# 使用 arcs_evb 开发板
.\build.ps1 -C -S samples/<示例路径> -DBOARD=arcs_evb
# 或使用 arcs_mini 开发板
.\build.ps1 -C -S samples/<示例路径> -DBOARD=arcs_mini
Note
确保已安装对应平台的工具链和 ListenAI 开发工具包。Windows 环境请先执行 .\env.ps1 或直接使用 .\build.ps1 自动加载环境。
烧录
编译完成后,使用 SDK tools 目录下的 cskburn 工具烧录固件。
Linux:
./tools/burn/cskburn -s /dev/ttyUSB0 -b 3000000 0x0 build/arcs.bin -C arcs
Windows PowerShell:
.\tools\burn\cskburn.exe -C arcs -s COM7 -b 3000000 0x0 .\build\arcs.bin
Note
烧录参数说明:
-s /dev/ttyUSB0/-s COM7:串口设备路径,需要根据实际情况修改 - Linux 系统:通常是/dev/ttyUSB0或/dev/ttyACM0- 可通过ls /dev/tty*命令查看可用串口设备 - Windows 系统:通常是COM7、COM8等,可在“设备管理器”的“端口”中查看 - 不同开发板或 USB 转串口芯片可能使用不同的设备名-b 3000000:烧录波特率(3Mbps)0x0:烧录起始地址build/arcs.bin/.\build\arcs.bin:编译生成的固件路径-C arcs:芯片类型
注意事项:
确保开发板已正确连接到电脑
如果无法识别串口设备,请检查 USB 连接线是否正常,或尝试其他 USB 端口
Shell 命令
WiFi
wifi connect:按CONFIG_IPERF_WIFI_SSID/PWD默认值发起连接wifi connect <ssid> <pwd>:按 shell 参数发起连接wifi disconnect:主动断开 WiFiwifi status:查看 WiFi 初始化、连接、DHCP 与 IP 状态
iperf
iperf start:启用压测循环;若 WiFi 未 ready,会提示先执行wifi connectiperf stop:停止当前压测循环iperf status:查看当前状态、模式和最近一轮测试结果iperf mode uplink|downlink|bidirectional:设置下一轮测试模式iperf server <ip> [port]:设置 iperf3 服务端;若压测循环正在运行,需先执行iperf stop
蓝牙与音频
bt_inquiry:扫描周边经典蓝牙设备bt_connect <device_name>:按设备名连接bt_connect_index <device_index>:按扫描结果索引连接bt_audio_start:在 A2DP 已连接后启动 PCM encode 模式推流bt_audio_stop:停止推流并关闭虚拟播放 profilebt_audio_volume <0-100>:设置推流音量
共存状态
coex status:统一输出 WiFi、iperf、BT、audio 当前状态threads:输出 FreeRTOS 任务名、状态、优先级、栈大小、最小剩余栈、最大栈使用率、任务 ID、运行计数和占比
推荐共存实验
建议按以下顺序验证:
wifi connect->iperf startiperf运行中执行bt_inquiryiperf运行中执行bt_connect <device_name>->bt_audio_startA2DP 推流运行中执行
iperf mode bidirectional->iperf start在每个阶段执行
coex status
预期现象
启动日志
I/coex ... WiFi+A2DP iperf coex sample booting
I/coex.wifi ... wifi init requested
I/coex.iperf ... iperf init: default_mode=uplink server=192.168.x.x:5201 ...
I/coex.bt ... bt classic init done
I/coex.bt.audio ... bt audio virtual interface initialized
WiFi 联网后
I/coex.wifi ... wifi connected to AP
I/coex.wifi ... DHCP success on VIF-0: IP=192.168.x.x
iperf 开始后
I/coex.iperf ... round 1 start, mode=uplink
I/coex.iperf3 ... connect to iperf3 server 192.168.x.x:5201
I/coex.iperf3 ... [ ID] Interval Transfer Bitrate
I/coex.iperf ... round 1 summary: mode=uplink ... reason=complete
蓝牙扫描 / 连接 / 推流后
I/coex.bt ... discovered device: XX:XX:XX:XX:XX:XX RSSI=-xx Name=...
I/coex.bt ... bt classic connected: XX:XX:XX:XX:XX:XX
I/coex.bt ... a2dp profile connected
I/coex.bt.audio ... bt audio open requested
I/coex.bt.audio ... bt audio stream started
coex status 输出示例
[wifi]
initialized: yes
stack_ready: yes
connecting: no
connected: yes
dhcp_ready: yes
ip: 192.168.x.x
[iperf]
enabled: yes
state: running
current_test_mode: uplink
pending_test_mode: uplink
...
[bt]
acl_connected: yes
a2dp_connected: yes
audio_streaming: yes
当前验证状态
已完成本地构建验证:
./build.sh -C -S samples/network/coex/wifi_a2dp_iperf_coex -DBOARD=arcs_evb当前 README 反映的是已实现命令与构建结果
尚未在当前会话中完成
arcs_evb实板烧录、串口日志抓取与完整共存矩阵验证
若需要补齐实板验证,可继续执行:
./build.sh -F -S samples/network/coex/wifi_a2dp_iperf_coex -DBOARD=arcs_evb