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信号多,吞吐量可能波动

4.5.16.5. 常见问题

1. 执行 bt-network 后断开连接

root@buildroot:~# bt-network -c AC:45:CA:6E:AE:B4 nap &
[1] 1074
Network service is connected
Network service is disconnect
  • 原因分析:

    1. 手机没有开启 蓝牙网络共享。

    2. 配对需要注意是否包含服务 UUID 00001115-0000-1000-8000-00805f9b34fb。

    3. 确保配对连接蓝牙设备只有一个,如果蓝牙 watch 等,需要手机断开配对连接

  • 解决方法:

    1. 确保手机开启 蓝牙网络共享 功能。

    2. 手机断开其他蓝牙 watch 等设备配对连接。