【发布时间】: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?
我已经在两种不同类型的硬件上测试了服务器:
-
Raspberry Pi CM4 内置蓝牙模块和外置天线
-
i.MX 8M 迷你计算机,带有 Intel WiFi 6 AX200 模块和外部天线
【问题讨论】:
标签: bluetooth-lowenergy bluez l2cap