4.5.16. 蓝牙 性能测试

  1. 本文档介绍如何使用 iperf3 工具,通过 蓝牙PAN 协议对芯片经典蓝牙性能进行测试。

  2. 通过蓝牙PAN协议,开发板与开启网络共享的手机(NAP)建立IP连接,然后使用 iperf3 工具进行数据传输,从而评估蓝牙的实际性能。

蓝牙 性能测试的关注点:

在测试蓝牙性能时,主要关注以下几个方面:

  1. 带宽和吞吐量: 蓝牙BR/EDR的理论最大净吞吐量约为2.1 Mbps,测试时应设置合理的带宽上限。

  2. 延迟: 蓝牙跳频特性可能导致短时波动,需多次测试取平均值。

  3. 丢包率: 蓝牙使用跳频技术,但受干扰(如Wi-Fi同频)或距离影响仍可能丢包。iperf的UDP模式可精确统计丢包率。

  4. 信号强度和覆盖范围: 由于蓝牙天线设计,设备相对方位可能影响信号质量,测试过程中保持设备相对位置固定。

本章节提供使用iperf3工具进行 蓝牙 性能测试的详细步骤与指南。关于 iperf3 的使用说明,请参考其官方文档。

4.5.16.1. 测试准备工作

性能测试示意图:

image-20241212-152024

在进行 蓝牙 性能测试前,请确保完成以下准备:

  1. 手机下载 Termux 终端: Termux 安卓下载地址:https://github.com/termux/termux-app/releases

    image-20241212-152024

  2. 在手机上开启 蓝牙网络共享: 开启蓝牙

    • Android手机:路径通常在 设置 -> 个人热点 -> 蓝牙网络共享。

    • iOS的蓝牙共享通常仅限于苹果设备之间。如果你的测试环境是iPhone和Linux开发板,建议换用Android手机。

    image-20241212-152024

  3. 启用板端 蓝牙 功能: 确保开发板已开启 蓝牙并连接到手机,配对详细方法参照蓝牙配对连接。配对前注意区分模组进行初始化。

    [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)服务的标准标识符

    • 代表手机已经开启了蓝牙网络共享功能,并且向你的开发板广播了自己可以提供网络服务

  4. 使用 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
    
  5. 使用 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
    
  6. 明确服务器和客户端设备: 开发板既可以作为客户端,也可以作为服务器;对端设备可使用安卓手机。

以下是本测试的网络配置:

  • 手机 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进行安装,如下图所示:

image-20241212-152024

2.在 temux 终端,通过命令提示符(cmd)运行以下命令启动服务器:

iperf3 -s

服务器启动后的日志示例:

-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

客户端连接成功后,服务器日志将显示:

image-20241212-152024

步骤二:启动客户端

在开发板上启动 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)。

客户端运行日志如下图所示:

image-20241212-152024

注意:
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信号多,吞吐量可能会有波动