【问题标题】:Optimize Bluetooth LE L2CAP throughput between Linux running bluer l2cat and iOS优化运行 bluer l2cat 的 Linux 和 iOS 之间的蓝牙 LE L2CAP 吞吐量
【发布时间】:2023-01-31 21:07:41
【问题描述】:

在 Linux 和 iOS 之间通过蓝牙 LE L2CAP 传输原始数据流时,我得到的吞吐量约为。每秒 9 KB 有效负载。我希望能够转移大约。 25 字节/秒。

我如何调查和/或优化传输速率?

客户详情

L2CAP 客户端是运行 iOS 16 的 iPhone 13 Pro,在 PSM 0x95 上使用 "CBL2CAPChannel-Demo" 应用程序。

它本质上是在 CBPeripheral 中使用 Apple 的 open2LCAPChannel(_ PSM:) 方法。

据我所知,Apple 没有提供用于更改连接间隔、MTU 或类似内容的配置选项。这一切似乎都是自动的。

服务器详情

L2CAP 服务器是一台运行 Linux 5.10 的 Linux 计算机,使用蓝调蓝牙堆栈。

测试程序是Rust的命令l2catbluer-tools.

我已经使用btmon 来检查交换的数据包,它们的长度似乎通常为 188 或 243 字节。

根据 Apple 的建议,我尝试将连接间隔最小/最大设置为 15,如下所示:

echo 15 > /sys/kernel/debug/bluetooth/hci0/conn_min_interval
echo 15 > /sys/kernel/debug/bluetooth/hci0/conn_max_interval

它对吞吐量没有任何影响。

如何判断蓝牙模块使用的是 1Mbps PHY 还是 2Mbps PHY?

我已经在两种不同类型的硬件上测试了服务器:

  1. Raspberry Pi CM4 内置蓝牙模块和外置天线

  2. i.MX 8M 迷你计算机,带有 Intel WiFi 6 AX200 模块和外部天线

【问题讨论】:

    标签: bluetooth-lowenergy bluez l2cap


    【解决方案1】:
    • 验证在两个 Linux 系统之间传输数据时是否存在相同的带宽限制。
    • 检查 bluez 中可用的配置选项以优化传输速率。
    • 考虑使用允许更高数据速率的不同蓝牙配置文件,例如 A2DP 或 HFP。
    • 尝试使用允许更多自定义蓝牙设置的不同 iOS 应用程序。
    • 检查蓝牙硬件的规格,所使用的 PHY 类型通常可以在数据表中找到。您也可以尝试在 Linux 上使用 hciconfig 命令来查看蓝牙模块的功能。
    • 验证外部天线是否正确连接并提供更好的信号质量。
    • 考虑升级到支持蓝牙 5.x 的较新硬件,与以前版本的蓝牙相比,它提供更高的数据速率。

    【讨论】:

      猜你喜欢
      • 2017-04-27
      • 2015-11-12
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多