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

蓝牙5.0广播包PDU字段逐行解读:从ADV_IND到AUX_CHAIN_IND,新手也能看懂的报文拆解

蓝牙5.0广播包PDU字段逐行解读从ADV_IND到AUX_CHAIN_IND在物联网设备开发中蓝牙低功耗BLE技术因其低功耗和简单连接特性而广受欢迎。但对于刚接触BLE协议的开发者来说最头疼的莫过于理解那些晦涩的协议文档和复杂的报文格式。本文将用最直观的方式带您逐行拆解蓝牙5.0广播包中的PDU字段让您不仅能看懂协议更能实际应用到项目开发中。1. BLE广播基础概念蓝牙设备的发现和连接都始于广播。一个BLE设备通过发送广播包向周围宣告自己的存在和能力。广播包的核心是协议数据单元PDU它包含了设备的关键信息和状态。广播包PDU主要分为以下几类传统广播PDU兼容蓝牙4.x及以下版本ADV_IND可连接、可扫描的非定向广播ADV_DIRECT_IND可连接的定向广播ADV_NONCONN_IND不可连接的非定向广播ADV_SCAN_IND可扫描的非定向广播扩展广播PDU蓝牙5.0新增ADV_EXT_IND主通道上的扩展广播指示AUX_ADV_IND辅助通道上的扩展广播AUX_SYNC_IND周期性广播AUX_CHAIN_IND广播数据链广播通道的选择也很关键。BLE协议定义了3个主广播通道37、38、39和37个次广播通道。主通道用于发送广播指示和简单数据而次通道则用于传输更大量的数据。2. PDU字段逐字节解析让我们以一个典型的ADV_IND广播包为例拆解其PDU结构| 1字节头部 | 6字节广播地址 | 31字节广播数据 |2.1 PDU头部详解PDU头部包含多个关键信息字段位域长度名称说明0-34位PDU类型定义广播包的类型和用途41位RFU保留位必须为051位ChSel通道选择算法指示61位TxAdd发送地址类型71位RxAdd接收地址类型8-158位长度PDU有效载荷长度关键字段说明PDU类型决定了广播包的行为特性。例如0000(0x0)ADV_IND0001(0x1)ADV_DIRECT_IND0010(0x2)ADV_NONCONN_IND0110(0x6)ADV_EXT_INDTxAdd/RxAdd指示地址类型0公共地址1随机地址2.2 广播数据格式广播数据由一系列AD Structure组成每个AD Structure的格式如下| 1字节长度 | 1字节AD类型 | N字节AD数据 |常见的AD类型包括#define AD_TYPE_FLAGS 0x01 // 广播能力标志 #define AD_TYPE_UUID16_INC 0x02 // 16位UUID不完整列表 #define AD_TYPE_UUID16_COMP 0x03 // 16位UUID完整列表 #define AD_TYPE_NAME_SHORT 0x08 // 短设备名 #define AD_TYPE_NAME_COMP 0x09 // 完整设备名 #define AD_TYPE_TX_POWER 0x0A // 发射功率 #define AD_TYPE_MANUFACTURER 0xFF // 厂商自定义数据3. 实战解析广播包示例假设我们捕获到以下广播包数据十六进制02 01 06 03 03 AA FE 0A 09 54 65 73 74 44 65 76 69 63 65逐字节解析如下第一个AD Structure长度0x022字节类型0x01Flags数据0x06二进制00000110位0LE Limited Discoverable Mode位1LE General Discoverable Mode位2BR/EDR Not Supported第二个AD Structure长度0x033字节类型0x0316位UUID完整列表数据0xAA 0xFE自定义UUID 0xFEA第三个AD Structure长度0x0A10字节类型0x09完整设备名数据0x54 0x65 0x73 0x74 0x44 0x65 0x76 0x69 0x63 0x65ASCII TestDevice4. 蓝牙5.0扩展广播解析蓝牙5.0引入了扩展广播能力允许设备在次通道发送更大的数据量。扩展广播PDU如AUX_ADV_IND的结构如下| 2字节头部 | 6字节广播地址 | 0-254字节广播数据 |扩展广播头部新增了以下字段AdvMode广播模式0传统1扩展AdvDataInfo指向辅助PDU的指针EventType事件类型普通广播、周期性广播等一个典型的扩展广播流程设备在主通道发送ADV_EXT_IND指示扩展广播的存在扫描设备在主通道发送AUX_SCAN_REQ请求更多数据广播设备在次通道回复AUX_ADV_IND或AUX_CHAIN_IND包含完整数据5. 常见问题与调试技巧在实际开发中广播包的配置和解析常会遇到以下问题问题1设备无法被发现检查Flags字段是否正确设置至少设置LE Limited或LE General Discoverable Mode确认广播间隔设置合理建议20ms-10.24s问题2广播数据被截断传统广播最大31字节超出部分需使用Scan Response或扩展广播合理组织AD Structure顺序关键信息如设备名放在前面调试工具推荐nRF Connect功能全面的BLE调试APPWireshark配合BLE嗅探器抓包分析bluetoothctlLinux下的命令行工具# 示例使用Python解析广播数据 from bleak import BleakScanner def detection_callback(device, advertisement_data): print(fDevice {device.address}:) print(f RSSI: {device.rssi}) print(f Local Name: {advertisement_data.local_name}) print(f Service UUIDs: {advertisement_data.service_uuids}) print(f Manufacturer Data: {advertisement_data.manufacturer_data}) async def scan(): scanner BleakScanner(detection_callback) await scanner.start() await asyncio.sleep(5.0) await scanner.stop()理解广播包PDU的每个字段不仅能帮助开发者快速定位连接问题还能优化设备的发现和连接性能。比如通过调整广播间隔可以在功耗和响应速度之间取得平衡合理组织广播数据可以提高设备被发现的几率。

相关文章:

蓝牙5.0广播包PDU字段逐行解读:从ADV_IND到AUX_CHAIN_IND,新手也能看懂的报文拆解

蓝牙5.0广播包PDU字段逐行解读:从ADV_IND到AUX_CHAIN_IND 在物联网设备开发中,蓝牙低功耗(BLE)技术因其低功耗和简单连接特性而广受欢迎。但对于刚接触BLE协议的开发者来说,最头疼的莫过于理解那些晦涩的协议文档和复…...

UE5 VSCode头文件跳转失效的根因与解决方案

1. 这不是VSCode配置问题,是UE5工程结构和编译系统在“悄悄改规则” 你有没有试过:在VSCode里打开一个刚生成的UE5 C项目,CtrlClick某个UObject子类,光标纹丝不动?或者输入 UStaticMesh:: 后,智能提示里…...

Camunda流程版本管理避坑指南:从Version Tag查询到迁移验证,这些细节决定成败

Camunda流程版本管理实战精要:从精准查询到安全迁移的全链路策略 在企业级流程自动化领域,Camunda作为领先的工作流引擎,其版本管理机制直接影响着业务系统的稳定性和迭代效率。本文将深入剖析版本管理的核心痛点,提供一套覆盖全…...

如何快速实现无人机合规飞行:基于ESP32的完整远程识别解决方案

如何快速实现无人机合规飞行:基于ESP32的完整远程识别解决方案 【免费下载链接】ArduRemoteID RemoteID support using OpenDroneID 项目地址: https://gitcode.com/gh_mirrors/ar/ArduRemoteID 在FAA和欧盟无人机法规日益严格的背景下,远程识别已…...

2026毕业季硕士论文AIGC检测率合格标准全汇总(20%还是15%)

2026年硕士论文答辩前,AIGC检测已经和查重一样成了必过流程。但各校对硕士论文AIGC检测率的合格标准并不统一——有的学校要求20%以下,有的15%以下,个别学校甚至要求10%以下。 你的学校硕士论文AIGC检测率多少算合格?超标了怎么快…...

CentOS 7上编译glibc 2.28踩坑全记录:从gcc、make升级到最终成功

CentOS 7编译glibc 2.28实战:从工具链升级到系统兼容性破解 当你在CentOS 7服务器上部署最新开发工具时,突然弹出/lib64/libc.so.6: version GLIBC_2.28 not found的报错,这就像一记闷棍——系统基础库已无法满足现代软件需求。本文将带你经…...

OpenHarmony芯片解决方案:从硬件抽象到编译配置实战指南

1. 项目概述:从零理解OpenHarmony芯片解决方案如果你正在或准备踏入OpenHarmony的硬件开发领域,那么“芯片解决方案”这个概念,就是你绕不开的第一道门槛。它不像写一个纯应用层的“Hello World”程序那么简单,而是连接你手中那块…...

RK3506 SPI Slave模式开发实战:从设备树配置到驱动调试全攻略

1. 项目概述与核心价值 最近在做一个物联网边缘数据采集的项目,需要将多个传感器节点采集到的数据,通过一个主控单元汇总后上传到云端。传感器节点用的是瑞芯微的RK3506,这颗芯片性价比高,功耗控制得也不错,非常适合这…...

深入浅出ASoC:用一张图看懂Machine、Platform、Codec在Android音频驱动中的分工与协作

深入浅出ASoC:用一张图看懂Machine、Platform、Codec在Android音频驱动中的分工与协作 在Android音频系统的开发中,ASoC(ALSA System on Chip)框架扮演着至关重要的角色。对于刚接触这一领域的开发者来说,理解Machine、…...

办公效率翻倍!OpenClaw AI 数字员工实操教程

适配系统:Windows 10 64位(新手专享版) 产品亮点: 零门槛安装:无需命令行操作,免去复杂环境配置即开即用:解压即安装,内置完整运行环境可视化操作:全程图形界面&#x…...

ARMv8内存访问指令STLUR与STLXP详解

1. ARMv8内存访问指令概述 在ARMv8架构中,内存访问指令构成了处理器与内存系统交互的基础设施。作为RISC架构的典型代表,ARMv8通过精简但功能明确的指令集实现了高效的内存操作。其中存储(Store)类指令负责将寄存器数据写入内存,而根据不同的…...

机场智慧化转型:室内外一体化定位技术如何破解运营与服务难题

1. 项目背景与核心痛点:一个大型机场集团的转型之困 在民航业干了十几年,我亲眼见证了机场从“大号候车室”到“智慧出行枢纽”的演变。今天想聊的,不是那些宏大的概念,而是一个非常具体的案例:陕西某大型机场集团如何…...

【独家首发】Midjourney 6.6+新增--depth-map指令实战手册:从单通道灰度图到可编辑景深层次(含Blender预处理模板)

更多请点击: https://codechina.net 第一章:Midjourney景深效果控制 景深(Depth of Field)是图像中清晰区域与虚化区域的过渡表现,在 Midjourney 中虽无原生 DSLR 式光圈参数,但可通过提示词工程、版本特性…...

Python机器学习管道:Scikit-learn Pipeline深度解析

Python机器学习管道:Scikit-learn Pipeline深度解析 引言 在Python开发中,机器学习管道是构建和部署机器学习模型的关键。作为一名从Rust转向Python的后端开发者,我深刻体会到Scikit-learn Pipeline在简化机器学习工作流方面的优势。Pipeline…...

从CT扫描到AI模型:避开DICOM体位信息这个‘隐形坑’,提升医学影像分析准确率

从CT扫描到AI模型:避开DICOM体位信息这个‘隐形坑’,提升医学影像分析准确率 在医疗AI模型的开发过程中,数据预处理环节往往被工程师们视为"脏活累活"——既没有模型调参的成就感,也不如算法设计那样引人注目。然而&…...

Transformer架构在6G网络中的关键技术应用与优化

1. Transformer技术基础与6G网络适配性 Transformer架构最初由Vaswani等人在2017年提出,其核心创新在于完全基于自注意力机制(Self-Attention)构建的编解码结构。与传统循环神经网络(RNN)相比,Transformer通…...

MLP-Mixer真的比CNN简单吗?深入拆解它的计算开销与内存瓶颈

MLP-Mixer真的比CNN简单吗?深入拆解它的计算开销与内存瓶颈 当谷歌研究院在2021年提出MLP-Mixer架构时,整个计算机视觉社区都为它的极简设计感到惊艳——没有注意力机制、没有卷积操作,仅用多层感知机(MLP)就实现了媲…...

110页PPT的大数据产品设计和应用,含整体方案和多个行业案例,满分PPT

📘【文档介绍】🌐《大数据应用型产品设计方法及行业案例介绍》PPT共110页可编辑文档,它将是你招投标、行业解决方案的重要参考资料。 🔑【掌握大数据,引领企业未来】 作为企业管理者,需要的不仅是管理智慧&…...

固定翼无人机遥控器对频与天线摆放:一个细节没做好,你的飞机可能就‘失联’了

固定翼无人机遥控器对频与天线摆放:一个细节没做好,你的飞机可能就‘失联’了 第一次操控固定翼无人机升空的时刻总是令人兴奋的,但在这之前,确保遥控系统可靠工作是关键中的关键。许多新手飞手往往将注意力集中在机身组装和动力调…...

PDF怎样转成JPG?3种方法对比与2026实用转换工具推荐

在日常办公和学习中,经常需要将PDF文件转换为JPG图片。无论是为了方便分享、编辑还是压缩存储,PDF转JPG的需求都很普遍。不同的转换方法各有特点,选择适合自己的方案能大幅提升工作效率。本文将为你详细介绍三种主流的PDF转JPG方法&#xff0…...

图片转Word怎么转?2026年图片转文档完整方法与工具对比

日常工作中,我们经常需要将拍摄的照片、截图或扫描的纸质文件转换成可编辑的Word文档。无论是转录会议笔记、整理手写资料,还是数字化办公文件,高效的转换工具能显著提升工作效率。本文将详细介绍多种图片转word文档的方法,帮你找…...

如何高效下载AnyFlip电子书:一键转换为PDF的完整指南

如何高效下载AnyFlip电子书:一键转换为PDF的完整指南 【免费下载链接】anyflip-downloader Download anyflip books as PDF 项目地址: https://gitcode.com/gh_mirrors/an/anyflip-downloader 你是否曾在AnyFlip上找到一本精彩的电子书,想要永久保…...

换平台就得重开发?低代码平台锁定的困局与破解

“想升级平台版本,原有应用全部不兼容;想换个厂商,花两年搭的系统完全作废,数据导不出来、流程没法迁移,只能推倒重来……”低代码平台的 “锁定效应”,让无数企业陷入 “用着难受、扔了可惜” 的两难困境。…...

2026年实用降AIGC软件:亲测AI率从90%降至4%的靠谱方案

一、前言:2026年毕业必过AIGC检测门槛 2026年国内高校对学术论文的AIGC疑似度审核全面收紧,绝大多数院校都发布了明确的AIGC检测数值要求:985、211院校规定本科论文AI率需低于20%,硕士论文AI率不得高于15%,普通高校也普…...

yolo11红外光伏板图像识别 光伏板缺陷检测系统

YOLOv11光伏板热缺陷检测系统是一种利用先进的YOLOv11算法进行太阳能光伏板缺陷识别的解决方案。这种系统通常会包含以下几个关键部分: 安装教程 1.安装minconda 2.pycharm 3.安装cuda(11.0)(下载链接:https://develop…...

OpenHTMLtoPDF:Java生态下的专业级HTML转PDF解决方案

OpenHTMLtoPDF:Java生态下的专业级HTML转PDF解决方案 【免费下载链接】openhtmltopdf An HTML to PDF library for the JVM. Based on Flying Saucer and Apache PDF-BOX 2. With SVG image support. Now also with accessible PDF support (WCAG, Section 508, PDF…...

FModel完整指南:解锁虚幻引擎游戏资源的终极工具

FModel完整指南:解锁虚幻引擎游戏资源的终极工具 【免费下载链接】FModel Unreal Engine Archives Explorer 项目地址: https://gitcode.com/gh_mirrors/fm/FModel 你是否曾好奇《堡垒之夜》中的炫酷皮肤是如何制作的?或者想提取《Valorant》中的…...

Midjourney材质质感翻车实录(金属发灰/皮革失真/玻璃无折射):基于1372组AB测试的材质Token黄金配比公式

更多请点击: https://kaifayun.com 第一章:Midjourney材质表现方法论总纲 Midjourney 作为以语义驱动的图像生成模型,其对材质(Texture)的表达并非依赖显式参数控制,而是通过提示词(Prompt&…...

AI识别+yolo11室内监控系统 AI办公室监控系统

办公室监控系统 一个基于 Flask 的 Web 应用程序,通过计算机视觉和 YOLO 对象检测来监控办公室工作区域。系统跟踪人员在不同工作区域的存在情况,并记录在每个区域停留的时间。 功能 使用 YOLOv8 实现实时人员检测和跟踪监控多个工作区域跟踪每个定义工…...

Wand-Enhancer终极指南:一键解锁WeMod完整功能

Wand-Enhancer终极指南:一键解锁WeMod完整功能 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod免费版的诸多限制而烦恼吗&#x…...