Thread 中讨论的其他器件: WL1835MOD
团队、
我的客户希望在~6ms 的范围内实现低蓝牙延迟。 但是、当使用 WL1837MOD 进行测试时、差异很大:
当我们寻求具有极低延迟的蓝牙通信时、我们使用 l2ping 命令来测量两个 WL1837MOD 之间消息的延迟。 因此、我们观察到、l2cap 回波请求不会立即发送、而是会延迟不同的时间。
这是从 Wireshark 导出 l2ping 的 hcidump:
|
时间[s] |
源 |
目的 |
协议 |
长度 |
方向 |
信息 |
|
0.689 |
本地主机() |
TexasIns_2c:90:63 (bluez 5.50) |
L2CAP |
57. |
已发送 |
已发送回波请求 |
|
0.695 |
控制器 |
主机 |
HCI_EVT |
8. |
接收到 |
接收已完成数据包的数量 |
|
0.697. |
TexasIns_2c:90:63 (bluez 5.50) |
本地主机() |
L2CAP |
57. |
接收到 |
接收回波响应 |
|
1.697. |
本地主机() |
TexasIns_2c:90:63 (bluez 5.50) |
L2CAP |
57. |
已发送 |
已发送回波请求 |
|
1.714 |
控制器 |
主机 |
HCI_EVT |
8. |
接收到 |
接收已完成数据包的数量 |
|
1.717. |
TexasIns_2c:90:63 (bluez 5.50) |
本地主机() |
L2CAP |
57. |
接收到 |
接收回波响应 |
|
2.718. |
本地主机() |
TexasIns_2c:90:63 (bluez 5.50) |
L2CAP |
57. |
已发送 |
已发送回波请求 |
|
2.725. |
控制器 |
主机 |
HCI_EVT |
8. |
接收到 |
接收已完成数据包的数量 |
|
2.727. |
TexasIns_2c:90:63 (bluez 5.50) |
本地主机() |
L2CAP |
57. |
接收到 |
接收回波响应 |
|
3.727. |
本地主机() |
TexasIns_2c:90:63 (bluez 5.50) |
L2CAP |
57. |
已发送 |
已发送回波请求 |
|
3.735 |
控制器 |
主机 |
HCI_EVT |
8. |
接收到 |
接收已完成数据包的数量 |
|
3.737. |
TexasIns_2c:90:63 (bluez 5.50) |
本地主机() |
L2CAP |
57. |
接收到 |
接收回波响应 |
|
4.737. |
本地主机() |
TexasIns_2c:90:63 (bluez 5.50) |
L2CAP |
57. |
已发送 |
已发送回波请求 |
|
4.764 |
控制器 |
主机 |
HCI_EVT |
8. |
接收到 |
接收已完成数据包的数量 |
|
4.767 |
TexasIns_2c:90:63 (bluez 5.50) |
本地主机() |
L2CAP |
57. |
接收到 |
接收回波响应 |
|
5.767 |
本地主机() |
TexasIns_2c:90:63 (bluez 5.50) |
L2CAP |
57. |
已发送 |
已发送回波请求 |
|
5.794 |
控制器 |
主机 |
HCI_EVT |
8. |
接收到 |
接收已完成数据包的数量 |
|
5.79 |
TexasIns_2c:90:63 (bluez 5.50) |
本地主机() |
L2CAP |
57. |
接收到 |
接收回波响应 |
据我们了解,数据包是在主机收到“已完成数据包的接收数量”事件之前发送的。 这是第一个回波请求发送后6ms、第二个回波请求发送后17ms、第三个回波请求发送后7ms、第四个回波请求发送后8ms、第五个回波请求发送后27ms、第六个回波请求发送后27ms。
这些是典型的时间。 在较长的测量中、我们观察到最小值为4.5ms、平均值为25ms、最大值为34.8ms。
这些值适用于 WLAN 接口关闭的情况。
您能告诉我们在发送 l2cap 数据包之前延迟的原因是什么? 是否有任何方法来配置 WL1837mod 蓝牙器件以更小的延迟发送数据包?
我们希望在99.99%的所有情况下实现小于10ms 的蓝牙延迟。
到目前为止、我们尝试配置深度睡眠和重传号码、但这些没有影响。 我还尝试配置流控制、但没有成功:似乎不支持保证的服务类型。
主机 CPU: NXP i.MX6
Linux 内核: 5.4.17
WL18x 固件: 8.9.0.0.79
蓝牙堆栈: bluez 5.50
谢谢、
Robert


