当前位置: 首页 > news >正文

ATT层MTU大小

文章目录

    • 📊 不同蓝牙版本的MTU限制
    • 🔍 实际应用中的MTU
    • 🚀 如何利用大MTU提升效率
    • 🧪 操作建议

MTU是ATT层可以传输的最大数据包大小,MTU决定了一次传输中有效数据载荷的多少🎯。

📊 不同蓝牙版本的MTU限制

BLE的MTU最大值主要取决于你所使用的蓝牙协议版本以及设备的支持情况。下面的表格汇总了关键信息:

蓝牙版本理论ATT_MTU最大值 (字节)典型有效数据载荷 (约算)备注
BLE 4.0/4.12320默认值,有效数据为ATT_MTU减去3字节开销
BLE 4.2247244引入了DLE(数据长度扩展)功能
BLE 5.0+517 / 512512 (或更小)有效载荷增大,但实际支持度因设备而异
  • 有效数据载荷:ATT层传输的有效数据量通常为 ATT_MTU - 3 字节。这3字节开销包括1字节的OpCode(操作码)和2字节的Attribute Handle(属性句柄)。因此,即使MTU为23字节时,一次能发送的有效用户数据通常为20字节。

  • BLE 5.0+的说明:虽然协议上可以支持到512甚至517字节,但实际能达到的值需要终端设备(手机、从设备等)硬件和软件的支持。

🔍 实际应用中的MTU

理论上MTU可以很大,但在实际应用中,真正能使用的MTU大小由连接双方(中央设备如手机,和外围设备如手环)共同决定:

1.MTU交换过程:连接建立后,双方会通过一个“MTU交换”过程告知对方自己所能接收的最大MTU值。最终通信采用的MTU将是双方声明的最大值中较小的那个。这个过程更像是一个“通知”而非“协商”。

2.设备支持差异

  • iOS设备:通常自动使用双方支持的较大MTU,但其上限一般认为是185字节。开发者无法通过公开API请求更改一个更大的值。

  • Android设备:相对灵活,应用可以通过 BluetoothGatt.requestMtu(int mtu) 方法主动请求设置更大的MTU(例如512),但最终生效的值取决于手机硬件和外围设备是否支持

  • 外围设备:蓝牙芯片(从机)也需要支持并配置相应的MTU大小,才能响应主机的MTU交换请求。

3.默认与兼容性:在MTU交换完成之前,或者如果双方不支持更大的MTU,通信会使用默认的ATT_MTU,即23字节(有效数据20字节)

🚀 如何利用大MTU提升效率

若你希望提升BLE数据传输速率,可以考虑:

  • 确认设备支持:确保你的中央设备(如手机)和外围设备(如蓝牙模块)都期望的蓝牙协议版本(建议至少BLE 4.2以上)并且支持更大的MTU。

  • 主动请求MTU:在Android开发中,在建立连接并发现服务后,适时调用 requestMtu() 来尝试请求一个更大的MTU值。

  • 理解提升效果:增大MTU意味着单个连接事件内可以传输更多数据,减少了分包和协议开销,从而提高传输效率并可能降低整体功耗。

  • 平衡与兼容:设置过大的MTU可能会因某些设备不支持而导致连接问题。选择一个大小时,也要考虑兼容性。有资料提及,2020年后的手机很多能支持128字节或更大,但测试很关键。

🧪 操作建议

进行BLE应用开发时,若关心MTU:

1.查询设备能力:查阅手机等中央设备和你的外围设备的硬件规格,了解其支持的蓝牙协议版本及MTU能力。

2.在代码中请求并确认:对于Android,使用 requestMtu() 方法,并在 onMtuChanged() 回调中确认实际设置的MTU值。

3.进行实际测试:在不同设备上进行测试,以确定实际可达到的MTU大小和数据传输效果。


文章转载自:

http://qPE3v2lK.gygfx.cn
http://rkyy95v8.gygfx.cn
http://cGEKi9sO.gygfx.cn
http://fISCCfyu.gygfx.cn
http://y0q50nhr.gygfx.cn
http://ce5rZGA6.gygfx.cn
http://hhUSTyA2.gygfx.cn
http://PjFBOmhr.gygfx.cn
http://1Oj2RgVo.gygfx.cn
http://8zNMEqd5.gygfx.cn
http://pdlUGcjs.gygfx.cn
http://XAiH0tnK.gygfx.cn
http://HkJb6Bff.gygfx.cn
http://1MLK3xp6.gygfx.cn
http://9fD5kTUV.gygfx.cn
http://Plx1kRHU.gygfx.cn
http://yfmnNdqh.gygfx.cn
http://ZFM9Hy2s.gygfx.cn
http://IhhQYYQw.gygfx.cn
http://CvGX15NA.gygfx.cn
http://7MrYw4bA.gygfx.cn
http://UbV6tflN.gygfx.cn
http://b7wZjAxH.gygfx.cn
http://xHIA82Sb.gygfx.cn
http://Fca0VrhU.gygfx.cn
http://VIrCnUni.gygfx.cn
http://PgWX4UJG.gygfx.cn
http://HF4JPxYu.gygfx.cn
http://WNXax8EB.gygfx.cn
http://0W71nrIb.gygfx.cn
http://www.dtcms.com/a/367455.html

相关文章:

  • ML Kit - ML Kit 文字识别(ML Kit 概述、ML Kit 文字识别、文本提取、补充情况)
  • 项目历程—缓存系统V3
  • 【CMake】策略
  • [光学原理与应用-387]:ZEMAX -266nm 皮秒深紫外固态激光器设计,需要学习哪些光学理论和工程知识?
  • 【面试题】召回、排序哪个阶段最可能出问题?
  • 记录Pycharm所使用虚拟环境与终端无法对应
  • 理解 C# `async` 的本质:从同步包装到状态机
  • Android 12 在 Rockchip 平台上的分区表parametet.txt 自动生成机制解析
  • android View详解—View的刷新流程源码解析
  • 批量给文件夹添加文件v2【件批量复制工具】
  • 设计模式3 创建模式之Singleton模式
  • 【题解】洛谷 P4037 [JSOI2008] 魔兽地图 [树上背包]
  • 东土正创AI交通服务器再获北京市批量应用订单
  • Springboot集成Netty
  • 系统代理开启时,钉钉页面加载失败
  • 基于STM32的除臭杀菌等多功能智能健康鞋柜设计
  • 在 PyCharm 里怎么“点鼠标”完成指令同样的运行操作
  • 学习PaddlePaddle--环境配置-PyCharm + Conda​
  • 彻底搞懂面向对象分析(OOA)
  • 遇享会—金湾读书会—第四期—你好,陌生人——20250823
  • Drawdb与cpolar:数据库设计的远程协作解决方案
  • 【CS32L015C8T6】配置单片机时基TimeBase(内附完整代码及注释)
  • 深度剖析 DC - DC 转换器在新能源汽车中的关键应用
  • 【RNN-LSTM-GRU】第二篇 序列模型原理深度剖析:从RNN到LSTM与GRU
  • Scikit-learn Python机器学习 - 特征预处理 - 归一化 (Normalization):MinMaxScaler
  • [光学原理与应用-386]:ZEMAX -1064nm SESAM光纤种子源设计,需要学习哪些光学理论和工程知识?
  • @Autowired原理(四)
  • Mongo的增删改查
  • 裸签、Attach、Detach及其验签方式
  • 「数据获取」中国科技统计年鉴(1991-2024)Excel