gpt4 book ai didi

android - 蓝牙 : Lower MTU value size(big difference) after MTU exchange

转载 作者:行者123 更新时间:2023-11-29 23:57:01 25 4
gpt4 key购买 nike

我是 BLE 开发的新手。我想通过 BLE 连接以最大吞吐量发送大量数据。

我有一个在 Linux 上运行的 GATT 服务器,以及一个在 Android 上作为应用程序运行的客户端。我创建了一个具有最大允许大小(512 字节)的自定义特征。我通过读取操作从应用程序请求它。每次我在服务器端收到读取请求时,我都会更改它的值,直到我完成所有数据(我知道这不是最好的方法,但现在这不是问题)。

至于使用 android 的 requestConnectionPriority(CONNECTION_PRIORITY_HIGH) 的连接参数,我可以看到他们正在尝试协商 7.5 毫秒的连接间隔,但由于某种原因,它更改为 15 毫秒并保持在那里。也许我的手机不支持它,但我不这么认为。

接下来的主要问题是 MTU。使用 hcidump,我可以看到他们开始协商 MTU,因为我可以看到来自客户端的值为 517(默认)的 MTU 请求和具有相同值的服务器响应。但是当我触发数据交换时,我可以看到(使用 Wireshark)数据包只包含 32 字节的有效负载。我不知道这是否是我的蓝牙适配器的限制。

最佳答案

一个 MTU 数据包可以包含许多 radio 数据包,而 32 字节的 radio 数据包有效载荷可能是您的蓝牙适配器中的一个限制。目前没有手机支持 7.5ms 的连接间隔。如果您的手机和设备支持,您还应该启用数据长度扩展。这将允许您在整个连接事件中传输多个 MTU。

关于android - 蓝牙 : Lower MTU value size(big difference) after MTU exchange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50255842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com