4.5.16. 蓝牙 性能测试
本文档介绍如何使用 iperf3 工具,通过 蓝牙PAN 协议对芯片经典蓝牙性能进行测试。
通过蓝牙PAN协议,开发板与开启网络共享的手机(NAP)建立IP连接,然后使用 iperf3 工具进行数据传输,从而评估蓝牙的实际性能。
蓝牙 性能测试的关注点:
在测试蓝牙性能时,主要关注以下几个方面:
带宽和吞吐量: 蓝牙BR/EDR的理论最大净吞吐量约为2.1 Mbps,测试时应设置合理的带宽上限。
延迟: 蓝牙跳频特性可能导致短时波动,需多次测试取平均值。
丢包率: 蓝牙使用跳频技术,但受干扰(如Wi-Fi同频)或距离影响仍可能丢包。iperf的UDP模式可精确统计丢包率。
信号强度和覆盖范围: 由于蓝牙天线设计,设备相对方位可能影响信号质量,测试过程中保持设备相对位置固定。
本章节提供使用iperf3工具进行 蓝牙 性能测试的详细步骤与指南。关于 iperf3 的使用说明,请参考其官方文档。
4.5.16.1. 测试准备工作
性能测试示意图:

在进行 蓝牙 性能测试前,请确保完成以下准备:
手机下载 Termux 终端: Termux 安卓下载地址:
https://github.com/termux/termux-app/releases
在手机上开启 蓝牙网络共享: 开启蓝牙
Android手机:路径通常在 设置 -> 个人热点 -> 蓝牙网络共享。
iOS的蓝牙共享通常仅限于苹果设备之间。如果你的测试环境是iPhone和Linux开发板,建议换用Android手机。

启用板端 蓝牙 功能: 确保开发板已开启 蓝牙并连接到手机,配对详细方法参照蓝牙配对连接。配对前注意区分模组进行初始化。
[bluetooth]# pair C4:2B:44:15:AD:FA Attempting to pair with C4:2B:44:15:AD:FA [horno30]# [CHG] Device C4:2B:44:15:AD:FA Connected: yes [horno30]# Request confirmation [agent] Confirm passkey 092258 (yes/no): [DEL] Device 5C:77:59:BF:8F:74 5C-77-59-BF-8F-74 [agent] Confirm passkey 092258 (yes/no): yes [horno30]# hci0 new_link_key C4:2B:44:15:AD:FA type 0x08 pin_len 0 store_hint 1 [horno30]# [CHG] Device C4:2B:44:15:AD:FA Bonded: yes [horno30]# [DEL] Device 6F:36:92:14:42:2F 6F-36-92-14-42-2F [horno30]# [CHG] Device C4:2B:44:15:AD:FA Modalias: bluetooth:v010Fp107Ed1436 [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 0000046a-0000-1000-8000-00805f9b34fb [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 00001105-0000-1000-8000-00805f9b34fb [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 0000110a-0000-1000-8000-00805f9b34fb [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 0000110c-0000-1000-8000-00805f9b34fb [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 00001112-0000-1000-8000-00805f9b34fb [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 00001115-0000-1000-8000-00805f9b34fb [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 00001116-0000-1000-8000-00805f9b34fb [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 0000111f-0000-1000-8000-00805f9b34fb [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 0000112f-0000-1000-8000-00805f9b34fb [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 00001132-0000-1000-8000-00805f9b34fb [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 00001200-0000-1000-8000-00805f9b34fb [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 00001800-0000-1000-8000-00805f9b34fb [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 00001801-0000-1000-8000-00805f9b34fb [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 0000fdd1-0000-1000-8000-00805f9b34fb [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 0000fe35-0000-1000-8000-00805f9b34fb [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 11c8b310-80e4-4276-afc0-f81590b2177f [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 8ce255c0-200a-11e0-ac64-0800200c9a66 [horno30]# [CHG] Device C4:2B:44:15:AD:FA UUIDs: 9664aa26-d76c-43ad-9775-d310f253a408 [horno30]# [CHG] Device C4:2B:44:15:AD:FA ServicesResolved: yes [horno30]# [CHG] Device C4:2B:44:15:AD:FA Paired: yes [horno30]# Pairing successful
这个 UUID 00001115-0000-1000-8000-00805f9b34fb 正是 PAN 网络接入点(NAP)服务的标准标识符
代表手机已经开启了蓝牙网络共享功能,并且向你的开发板广播了自己可以提供网络服务
使用 bt-network 连接到手机的 NAP: Network service is connected 代表连接成功,板端会有个bnep0网卡产生
root@buildroot:~# bt-network -c C4:2B:44:15:AD:FA nap & Network service is connected root@buildroot:~# ifconfig bnep0 bnep0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether b4:2f:03:31:56:51 txqueuelen 1000 (Ethernet) RX packets 0 bytes 8 (8.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2 bytes 44 (44.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
使用 udhcpc 共享手机 NAP: 自动获取ip后可以共享手机 NAP 网络,确保开发板可以通过NAP 网络通信。
root@buildroot:~# udhcpc -i bnep0 udhcpc: started, v1.35.0 udhcpc: broadcasting discover udhcpc: broadcasting discover udhcpc: broadcasting select for 192.168.44.234, server 192.168.44.1 udhcpc: lease of 192.168.44.234 obtained from 192.168.44.1, lease time 3600 deleting routers adding dns 192.168.44.1
明确服务器和客户端设备: 开发板既可以作为客户端,也可以作为服务器;对端设备可使用安卓手机。
以下是本测试的网络配置:
手机 NAP 作为服务器,IP 地址:192.168.44.1。
开发板作为客户端,IP 地址:192.168.44.234。
通过以下命令验证开发板与服务器之间的连接:
ping -I bnep0 192.168.44.1
执行结果:
PING 192.168.44.1 (192.168.44.1): 56 data bytes
64 bytes from 192.168.44.1: seq=0 ttl=128 time=32.009 ms
64 bytes from 192.168.44.1: seq=1 ttl=128 time=67.866 ms
64 bytes from 192.168.44.1: seq=2 ttl=128 time=14.513 ms
64 bytes from 192.168.44.1: seq=3 ttl=128 time=18.663 ms
4.5.16.2. 测试方法
步骤一:启动服务器
在安卓手机 上启动 iperf3 服务器:
1.打开 temux 终端下载并安装 iperf3,需要执行pkg install iperf3进行安装,如下图所示:

2.在 temux 终端,通过命令提示符(cmd)运行以下命令启动服务器:
iperf3 -s
服务器启动后的日志示例:
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
客户端连接成功后,服务器日志将显示:

步骤二:启动客户端
在开发板上启动 iperf3 客户端,连接到手机服务器并开始测试:
iperf3 -c 192.168.44.1 -u -t 10 -b 2M
命令参数说明:
-c:指定服务器的 IP 地址(此处为 192.168.44.1)。
-u:使用 UDP 协议进行测试。
-t:设定总运行时间(此处为 10 秒)。
-b:设置目标带宽(此处为 2 Mbits/sec)。
客户端运行日志如下图所示:

1.EVB为了保持接口和功能多样性,Bluetooth的 UART 接口并没有接流控,产品设计时建议接流控,不接流控可能导致蓝牙PAN等大流量数据传输时出现丢包。
4.5.16.3. 测试结果
关于 iperf3 输出日志中字段的含义及分析方法,请查阅 iperf3-测试结果分析 章节。
4.5.16.4. 性能标准
蓝牙吞吐量预期范围:
经典蓝牙 BR/EDR:理论最大 2.1 Mbps,实际通常 1.0-1.45 Mbps
干扰环境:因为wifi和蓝牙频段重叠,如果周围Wi-Fi信号多,吞吐量可能会有波动