精华内容
下载资源
问答
  • 蓝牙le和经典蓝牙区别At Propeller Health we develop products that help people with asthma or COPD manage their condition. One component of our platform is a sensor that attaches to a person’s inhaled ...

    蓝牙le和经典蓝牙区别

    At Propeller Health we develop products that help people with asthma or COPD manage their condition. One component of our platform is a sensor that attaches to a person’s inhaled medication and sends medication usage data to a connected device over Bluetooth Low Energy (BLE).

    在Propeller Health,我们开发可帮助哮喘或COPD患者控制病情的产品。 我们平台的一个组成部分是一个传感器,该传感器附着在一个人的吸入药物上,并通过蓝牙低功耗(BLE)将药物使用数据发送到连接的设备。

    BLE communication in Android can be finicky for many reasons, including inconsistencies in hardware such as Bluetooth adapters (radios), software such as the firmware the Bluetooth adapter is programmed with, and vendor implementations of the Android OS.

    由于许多原因,Android中的BLE通信可能很挑剔,包括蓝牙适配器(无线电)之类的硬件不一致,蓝牙适配器编程所用的固件之类的软件以及Android OS的供应商实现。

    What if you were asked to troubleshoot one of these finicky devices? Wouldn’t it be useful if you could see what is being transmitted between them? Well, thankfully there is packet capture, and Android provides a way to do this for BLE communication. Performing a BLE packet capture is a good way to inspect the data being transferred between central (e.g. an Android phone) and peripheral devices (e.g. a Propeller sensor). This can be useful to verify that the data transmitted between the devices is what is expected.

    如果要求您对这些挑剔的设备之一进行故障排除怎么办? 如果您能看到它们之间正在传输的内容,那将不会有用吗? 好了,幸好有数据包捕获,Android提供了一种方法来进行BLE通信。 执行BLE数据包捕获是检查在中央设备(例如Android手机)和外围设备(例如螺旋桨传感器)之间传输的数据的好方法。 这对于验证设备之间传输的数据是否是预期的很有用。

    蓝牙数据包捕获如何在Android上工作 (How Bluetooth packet capture works on Android)

    你需要什么 (What you’ll need)

    1. An Android device running Android 4.4 (KitKat) or greater to use as the central device

      运行Android 4.4(KitKat)或更高版本的Android设备用作中央设备
    2. A BLE device to use as the peripheral device

      用作外围设备的BLE设备
    3. A Windows, Linux or Mac workstation with the Android SDK tools installed

      安装了Android SDK工具的Windows,Linux或Mac工作站

    启用开发者选项 (Enable Developer Options)

    As previously mentioned, Developer options need to be enabled in order to intercept and store packets as they are being sent and received. In order to enable Developer options perform the following:

    如前所述,需要启用“开发人员”选项,以便在发送和接收数据包时对其进行拦截和存储。 为了启用开发人员选项,请执行以下操作:

    Image for post
    1. On stock Android open Settings > About phone > Build number

      安卓系统上打开打开设置>关于手机>内部版本号
    2. Tap Build number seven times. After the first few taps, you should see the steps counting down until you unlock the developer options. Once activated you’ll see a message that reads You are now a developer!

      点击内部版本号七次。 轻按前几下后,您应该看到倒数的步骤,直到解锁开发人员选项为止。 激活后,您将看到一条消息,提示您现在是开发人员!

    3. Go back to Settings > System > Advanced where you’ll now find a Developer options entry or use the search feature to search for “Developer options”

      返回设置>系统>高级,您现在可以在其中找到开发人员选项条目,或使用搜索功能搜索“开发人员选项”

    Note, it’s not recommended to leave Developer options enabled longer than necessary as device security is reduced. We are capturing and storing data meant to be transferred between the central and peripheral devices after all and that exposes some risk.

    请注意,由于设备安全性降低,因此不建议将开发人员选项的启用时间保持在不必要的时间。 毕竟,我们正在捕获和存储要在中央和外围设备之间传输的数据,这暴露了一些风险。

    启用蓝牙HCI监听日志 (Enable Bluetooth HCI snoop log)

    Now that we have Developer options enabled, we can enable the Bluetooth HCI snoop log. When the Bluetooth HCI snoop log is enabled, the Android framework will capture Bluetooth packets sent and received between central and peripheral devices and store them as part of a bug report. To enable the Bluetooth HCI snoop log:

    现在我们启用了开发人员选项,我们可以启用蓝牙HCI监听日志。 启用蓝牙HCI监听日志后,Android框架将捕获在中央和外围设备之间发送和接收的蓝牙数据包,并将其存储为错误报告的一部分。 要启用蓝牙HCI监听日志:

    Image for post
    1. On stock Android open Settings > System > Advanced > Developer options

      在Android上,打开设置>系统>高级>开发人员选项
    2. Tap Enable Bluetooth HCI snoop log

      点击启用蓝牙HCI监听日志
    3. Tap the Enable option on the dialog that displays

      在显示的对话框中点击“启用”选项

    After the Bluetooth HCI snoop log has been enabled you will need to restart the Bluetooth adapter which you can do by turning Bluetooth off and back on. All Bluetooth packets sent and received by the Bluetooth adapter will now be saved to the Bluetooth HCI snoop log.

    启用蓝牙HCI监听日志后,您将需要重新启动蓝牙适配器,这可以通过关闭和重新打开蓝牙来完成。 蓝牙适配器发送和接收的所有蓝牙数据包现在都将保存到蓝牙HCI监听日志中。

    启动BLE通信 (Initiate BLE communication)

    Now that we have our central device configured to capture Bluetooth traffic being transmitted we can initiate communication between the central and peripheral devices. One way to initiate communication for Propeller sensors is by performing a manual sync by pressing the auxiliary button on a sensor. When the auxiliary button is pressed Propeller sensors will send advertising packets at a much higher rate for a short period of time. When the central scanner receives the advertising packets the data will be logged to the Bluetooth HCI snoop log.

    现在我们已经将中央设备配置为捕获正在传输的蓝牙流量,我们可以启动中央设备与外围设备之间的通信。 发起螺旋桨传感器通信的一种方法是通过按下传感器上的辅助按钮执行手动同步。 当按下辅助按钮时,螺旋桨传感器将在短时间内以更高的速率发送广告包。 当中央扫描仪收到广告数据包时,数据将被记录到蓝牙HCI监听日志中。

    提取蓝牙HCI监听日志 (Extract the Bluetooth HCI snoop log)

    In order to extract the Bluetooth HCI snoop log from the Android device you need to connect the Android device to your workstation and use the adb command to generate a bug report:

    为了从Android设备提取Bluetooth HCI监听日志,您需要将Android设备连接到工作站并使用adb命令生成错误报告:

    adb bugreport bugreport

    adb bugreport bugreport

    This will extract the bug report to a zip file named bugreport.zip on your workstation. Unzip the bug report:

    这会将错误报告解压缩到工作站上名为bugreport.zip的zip文件中。 解压缩错误报告:

    unzip bugreport.zip

    解压缩bugreport.zip

    Locate the file named btsnoop_hci.log in the extracted files, this is the file which contains the packet capture.

    在提取的文件中找到名为btsnoop_hci.log的文件,这是包含数据包捕获的文件。

    禁用蓝牙HCI监听日志 (Disable Bluetooth HCI snoop log)

    After you’ve captured the traffic you’re interested in the Bluetooth HCI snoop log can be disabled. You can disable the Bluetooth HCI snoop log the same way it was enabled:

    捕获流量后,可以禁用对Bluetooth HCI监听日志感兴趣的流量。 您可以使用启用蓝牙的方式禁用蓝牙HCI监听日志:

    1. On stock Android open Settings > System > Advanced > Developer options

      在Android上,打开设置>系统>高级>开发人员选项
    2. Tap Enable Bluetooth HCI snoop log

      点击启用蓝牙HCI监听日志
    3. Tap the Disable option on the dialog that displays

      在显示的对话框中点击“禁用”选项

    Again, you must also toggle Bluetooth services in order to restart the Bluetooth adapter. Additionally, now may also be a good time to disable Developer options if you are done troubleshooting.

    同样,您还必须切换蓝牙服务才能重新启动蓝牙适配器。 此外,如果您已完成疑难解答,那么现在可能也是禁用开发人员选项的好时机。

    分析蓝牙HCI监听日志 (Analyze the Bluetooth HCI snoop log)

    Now that you have a packet capture you can load it into your favorite network protocol analyzer. A popular and well known network protocol analyzer is Wireshark. Understanding how to configure Wireshark display filters is outside the scope of this blog post, however if you know the mac address of the peripheral device you’ll find the following display filter useful:

    现在您有了数据包捕获,可以将其加载到您喜欢的网络协议分析器中。 Wireshark是一种流行且广为人知的网络协议分析器。 了解如何配置Wireshark显示过滤器超出了本博客文章的范围,但是,如果您知道外围设备的mac地址,则会发现以下显示过滤器很有用:

    bthci_evt.bd_addr == xx:xx:xx:xx:xx:xx || bthci_cmd.bd_addr == xx:xx:xx:xx:xx:xx || bluetooth.addr == xx:xx:xx:xx:xx:xx

    bthci_evt.bd_addr == xx:xx:xx:xx:xx:xx:xx || bthci_cmd.bd_addr == xx:xx:xx:xx:xx:xx:xx || bluetooth.addr == xx:xx:xx:xx:xx:xx:xx

    结论 (Conclusion)

    Troubleshooting BLE communication on an Android device can feel like working with a black box. You now have another tool in your arsenal to build a deeper understanding of the packets sent and received by peripheral devices. The next time you’re left wondering why your BLE device isn’t communicating properly, fire up the Bluetooth HCI snoop log, capture some packets and take a look at what your central and peripheral devices are saying to each other, you may be surprised at what you find!

    对Android设备上的BLE通信进行故障排除可能就像使用黑匣子一样。 现在,您的武库中有了另一个工具,可以更深入地了解外围设备发送和接收的数据包。 下次您不知道为什么BLE设备无法正常通信,启动Bluetooth HCI监听日志,捕获一些数据包并查看您的中央设备和外围设备在互相说什么时,您可能会感到惊讶根据您的发现!

    翻译自: https://medium.com/propeller-health-tech-blog/bluetooth-le-packet-capture-on-android-a2109439b2a1

    蓝牙le和经典蓝牙区别

    展开全文
  • 新推出的iEB110 IP产品包括射频(RF)电路、控制器软件和低功耗蓝牙协议栈,可以为那些打造从头戴式耳机到助听器等产品的制造商提供其所需的一切工具,以快的速度和的BOM成本帮助他们在快速发展的无线音频市场中...
  • 蓝牙5核心规格自2016年12月份推出至今,为推动物联网告诉发展,显著提升了蓝牙的传输 距离,速度和广播消息能力等方面,使得无线连接变得更加简单且安全。更高的宽带可以转化为 更高的速度,不仅增强了数据传输速度...
  • 蓝牙相关协议

    千次阅读 2018-12-19 15:33:32
    与开放系统互联(OSI)模型一样,蓝牙技术的协议体系也采用了分层结构,从底层到高层形成了蓝牙协议栈,各层协议定义了所完成的功能和使用数据分组格式,以保证蓝牙产品间的互操作性。 蓝牙协议主要有传输协议、...

    蓝牙协议是蓝牙设备间交换信息所应该遵守的规则。与开放系统互联(OSI)模型一样,蓝牙技术的协议体系也采用了分层结构,从底层到高层形成了蓝牙协议栈,各层协议定义了所完成的功能和使用数据分组格式,以保证蓝牙产品间的互操作性。

    蓝牙协议主要有传输协议、中介协议、应用协议;

    传输协议负责蓝牙设备间,互相确认对方的位置,以及建立和管理蓝牙设备间的物理链路,传输协议包括底层传输协议和高层传输协议。

    底层传输协议负责语言、数据无线传输的物理实现以及蓝牙设备间的联网组网,包括蓝牙射频协议、基带链路控制协议BLC、链路管理协议LMP。

    射频协议(RF)

    1. 工作在2400M~2483.5M频带
    2. 采用调频方式传输数据
    3. 采用GFSK(DQPSK和8DPSK)调制方式
    4. 信道间隔(1MHZ/EDR模式,2MHZ/BLE模式)
    5. 采用跳频扩谱技术主动的避免工作频段受干扰。
    6. 发射功率:一级功率100mW(20dBm);二级功率2.5mW(4dBm);三级功率1mW(0dBm); 
    7. 物理信道:由伪随机序列控制的79个跳频点构成,不同跳频序列代表不同的信道。
    8. 时隙:蓝牙跳频速率为1600次/s,每个时间为625uS(1S/1600)称为一个时隙;

    基带链路控制协议(BLC)

    1. 全双工,时分多路复用。
    2. 描述了完成低层链路建立维护和执行基带协议的链路控制器的规范
    3. 主要作用有跳频选择、蓝牙编址、链路类型、信道编码、收发规则、信道控制、音频规范、安全设置。
    4. 两个设备为了通信,使用共享信道,两者必须在同一时刻使用相同的频率。
    5. 发送数据时,基带部分将来自高层的数据进行信道编码,向下发给射频进行发送;
    6. 接收数据时,将解调恢复空中数据并上传给基带,基带进行信道编码传送给上层。
    7. master从奇数时间片开始传输,slave从偶数时间片开始传输,可以连续占用多个时间片
    8. 两种状态:Standby(包括四种子状态: inquiry,inquiry-scan,page,page scan)和Connection(包括四种类型:Active, Sniff, Hold, and Park. )
    9. 四种物理通道:基本pico网通道 、自适应pico网通道 、Page scan物理通道 、inquiryscan物理通道
    10. 五种逻辑传输:SCO 基于同步连接逻辑传输、ACL 异步逻辑传输、 ESCO扩展SCO 、ASB 活动Slave广播 、PSB  Parked Slave广播。

    链路管理协议(LMP)

    1. 用于链路的建立和控制,信号在链路管理层被解析和过滤,不会传递至上层。
    2. 协议由一系列的消息构成,这些消息通过ACL-C逻辑传输。
    3. 负责完成设备的功率管理、链路质量管理、链路控制管理、数据分组管理、链路安全管理。
    4. 用Link Manager Protocol (LMP)在两个设备的LM模块之间通信。
    5. 通过Data Medium rate (DM1) or Data Voice (DV) 发送控制消息。
    6. 比用户数据具有更高的优先级
    7. 连接控制:连接建立,断开,电源控制,自适应频率hopping,通道分类, 链路监控,通道质量驱动数据率变化,Qos,Paging参数,多slot包控制,EDR,LMP PDU封装。
    8. 安全:认证,配对,改变link key,改变当前link key类型,加密,请求加密keysize,简单安全配对。


    高层传输协议为高层应用屏蔽了跳频序列选择等底层传输操作,为高层程序提供有效、有利于实现数据分组格式,包括主机控制接口协议HCI 。

    主机控制接口协议 HCI

    1. 为上层协议提供一个独立于硬件实现统一的标准命令接口
    2. 流控制:Host到控制器以及控制器到Host数据流控制,基于包的数据流控制、基于块的数据流控制、命令流控
    3. HCI命令和事件:链路控制命令、链路策略命令、主机控制和基带命令、信息参数指令、状态指令参数、测试命令、LE控制器命令
    4. 为基带控制器、连接管理器、硬件状态和控制寄存器提供命令接口
    5. 主要包括在主机中运行的驱动程序和在硬件中运行的固件。两者之间通过UART、USB和PC card等方式通信。

    蓝牙主机-主机控模型 
    这里写图片描述

    蓝牙软件协议栈堆的数据传输过程: 
    这里写图片描述

    中介协议为在蓝牙逻辑链路上工作的高层应用协议或者程序提供必要的支持,为应用提供不同标准接口,包括逻辑链路控制与适配协议 L2CAP、服务发现协议SDP、串口仿真协议RFCOMM、电话控制协议TCS、AT指令集。

    逻辑链路控制与适配协议 L2CAP

    1. L2CAP位于基带之上,将基带的数据分组转换为便于高层应用的数据分组格式
    2. 支持分组、高层协议复用、数据包分段重组和服务质量QoS
    3. L2CAP只支持ACL数据传输,不支持SCO数据。
    4. L2CAP本身不提供加强信道可靠性和保证数据完整性的机制,其信道的可靠性依靠基带提供。

    服务发现协议SDP

    1. 发现可用的服务及服务的特征
    2. SDP有两种服务发现模式 服务搜索(查询具有特定服务属性的服务)和服务浏览(简单的浏览全部可用服务)。
    3. SDP的服务记录表对每一个服务进行描述,每条记录包含服务句柄和一组服务属性: 

    这里写图片描述

    串口仿真协议 RFCOMM

    1. RFCOMM提供L2CAP之上的串口仿真功能,为上层应用提供一个串口。
    2. 通过AT发送指令控制拨号上网、蓝牙耳机、耳麦、传真。
    3. 为建立在串口之上的传统应用提供环境接口,通过做比较少协议改动就可以在蓝牙无线通信链路上工作。

    两个蓝牙设备之间可以支持多达60多路仿真串口,多路串口仿真是RFCOMM的重要功能,通过多路复用器(multiplexer),一条L2CAP链路可以同时有多个串行应用。 两台设备间的串口仿真如图所示

    电话控制协议TCS_Binary
    TCS_Binary在蓝牙设备间建立语音与数据呼叫控制信令,是一种基于分组电话控制二进制编码指令集,位于L2CAP之上。实现蓝牙无绳电话、对讲机功能。 

    网络封装协议 BNEP

    BNEP (BluetoothNetworkEncapsulation Protocol) 网络封装协议,将来自不同网络的数据分组重新封装,通过L2CAP进行传输,使集成蓝牙技术的电脑、电话、PDA、家用电器等网络设备交换信息。BNEP支持Ipv4、Ipv6、IPX

    AVDTP(Audio/Video Distribution Transport Protocol)音视频分发传输协议

    这里写图片描述

    流stream:流是音视频传输的数据形式,单向传输,在AVDTP中被分为媒介分组。流有句柄HS统一标识。

    这里写图片描述

    AVCTP音视频控制传输协议

    可以使音视频设备同时支持多个应用框架,每个应用框架定义了各自相应的消息格式与应用规则。

    应用协议是指蓝牙协议栈之上的应用软件和所涉及到的协议,如:拨号上网、语言功能的应用程序。包括互操作协议IrDA、网络访问协议PPP、IP、TCP、UDP、

    互操作协议IrDA

    红外对象交互协议(IrOBEX 简称OBEX),使高层协议能够同时运作在蓝牙和红外的无线链路之上。主要操作指令有:连接操作(操作码0x80)、断开操作(操作码0x81)、Put操作(操作码0x82)、Get操作(操作码0x83)。

    这里写图片描述

    展开全文
  • 关于蓝牙LE灵敏度Per和Ber的关系

    千次阅读 2020-03-04 15:15:44
    关于蓝牙LE灵敏度Per和Ber的关系: 之前关于蓝牙LE接收灵敏度判据为Per≤30.8%的要求一直有疑问,为什么门限这么宽?直到在协议上看到这一段: 该段取自BT4.0-RF-PHY.TS.5.0.1规范协议,描述了Ber和Per的换算关系,...

    关于蓝牙LE灵敏度Per和Ber的关系:

    之前关于蓝牙LE接收灵敏度判据为Per≤30.8%的要求一直有疑问,为什么门限这么宽?直到在协议上看到这一段:
    在这里插入图片描述该段取自BT4.0-RF-PHY.TS.5.0.1规范协议,描述了Ber和Per的换算关系,简单明了,请大家参考

    展开全文
  • 蓝牙HCI协议

    千次阅读 2017-03-15 16:07:50
    HCI 层位于蓝牙高层协议和低层协议之间,提供了对基带控制器和链路管理器的命令以及访问蓝牙硬件的统一接口,它是我们实现自己的蓝牙设备要接触的第一个蓝牙协议,起着承上启下的作用。 HCI通过包的方式来传送数据、...

    这里写图片描述
    这里写图片描述
    HCI 层位于蓝牙高层协议和低层协议之间,提供了对基带控制器和链路管理器的命令以及访问蓝牙硬件的统一接口,它是我们实现自己的蓝牙设备要接触的第一个蓝牙协议,起着承上启下的作用。
    HCI通过包的方式来传送数据、命令和事件的,所有在主机和主机控制器之间的通信都以包的形式进行。包括每个命令的返回参数都通过特定的事件包来传输。HCI有数据、命令和事件三种包,其中数据包是双向的,命令包只能从主机发往主机控制器,而事件包始终是主机控制器发向主机的。主机发出的大多数命令包都会触发主机控制器产生相应的事件包作为响应。

    HCI 传输层

    《core4.0》V4-2017 传输层协议
    目前,HCI 的传输层主要有三种:USB,UART,三线串口、SD接口。
    不同传输层对HCI 事件处理没有影响。

    (1)USB 传输层在蓝牙硬件上使用USB 硬件接口(该硬件接口有两种嵌入方式:一种是作为USB 加/ 解密芯片,另一种是集成到PC 机主板上)[6]。这一种类编码要求不管使用哪一厂商生产的设备,都能加载 合适的驱动程序栈;同时它还保证了通过控制终端的HCI 指令和USB 指令有所区别。其缺点是软件协议复 杂,软件开销巨大。
    不同的事件分组通过不同的接口和端点进行区分。

    (2)UART 传输层跟RS-232 传输层类似,也是采用一个UART 的串行通信方式在主控制器与主机之间 进行数据传输。应用环境主要是针对主控制器和主机位于同一个电路板上,传输层假定UART 通信无线性错误。UART传输层方式比较灵活,其应用环境决定其连接错误相对较少,可以采用简单的复位恢复机制实现失步时的复步。由于主机和主控制器都处于同一块电路板上,因而传输层不需要规定电气信号,可以直接采用TTL、LV-CMOS 等IC端电压,应用较多。UART 传输层避开了RS-232 传输层要求的较繁琐的协商和同步机制。UART性能和数据吞吐率水平与USB接口相当,而传输协议却较为简单, 减少了软件开销,是一种更为经济高效的全硬件解决方案。
    同RS232一样,HCI不提供区分四种HCI包类型的能力。因此,如果经由公共物理接口(HCI)发送HCI分组必须根据下面的表添加分组指示符。

    HCI packet type HCI packet indicator
    HCI Command Packet 0x01
    HCI ACL Data Packet 0x02
    HCI Synchronous Data Packet 0x03
    HCI Event Packet 0x04

    所有四种HCI分组具有长度字段,其用于确定对于HCI分组预期多少字节。当已经接收到整个HCI分组时,期望下一个HCI分组指示符用于下一个HCI分组。
    这里写图片描述
    RTS / CTS流控制用于防止临时UART缓冲区溢出。
    它不应该用于HCI的流量控制,因为HCI有自己的HCI命令、事件和数据的流量控制机制。
    如果CTS为1,则允许主机/主机控制器发送。
    如果CTS为0,则不允许主机/主机控制器发送

    如果主机或主机控制器在通信中失去同步则需要复位。丢失同步标志是已检测到不正确的HCI包指示符,或者检测到的长度字段超出HCI数据包超出范围。
    在主机到主机控制器方向同步丢失后,主机控制器将发送一个硬件错误事件(HardwareErrorEvent)来告诉主机。然后主机控制器将等待主机发送(HCI_Reset_Command)以便执行复位。
    如果在主机控制器到主机方向发生同步丢失,则主机必须发送HCI_Reset 命令才能复位主机控制器。主机通过检查HCI复位命令的命令完成事件来重新同步。

    HCI分组格式

    • 指令分组(Command Packer)
      Host -> Slave,
    • 事件分组(Event Packet)
      Slave -> Host,响应主机命令的事件
    • 数据分组(Data Packet)
      Host <–> Slave,异步无连接(ACL),同步面向连接(SCO)数据分组

    分组参数原则

    《core4.0》V2-E5.2-671
    - 除非另有说明,否则所有值均为二进制和十六进制小端格式
    - 负值为2进制的补码
    - 数组参数使用以下符号指定:ParameterA [i]。如果指定了多于一组的数组参数(例如ParameterA[i],ParameterB [i]),则参数的顺序如下:ParameterA [0],ParameterB [0],ParameterA [1],ParameterB [ 1],ParameterA [2],ParameterB [2],…ParameterA [n],ParameterB [n]
    - 除非另有说明,否则以Little Endian格式发送和接收所有参数值(即,对于多个八位字节参数,首先发送最右侧)
    - 在指定字符串下,低位是右边,例如。 0是’10’中的低位。
    - 标记为未来使用保留的值或参数应设置为0,除非在传输时另有明确说明,并在接收时被忽略。实现不知道如何解释的参数值或操作码将被忽略,并且正在尝试的操作将使用正确的信令完成。由于接收到保留值,主机或控制器不应停止工作

    指令分组格式

    《core4.0》V2PE5-674
    这里写图片描述

    • 最大包长255,不含头部
    • OCF(6 bits):命令字段, 0x00-0x3F (0x3F reserved for vendor-specific debug commands)
    • OGF(10 bits): 组字段,0x0000-0x03FF。
    • Parameter Total Length:后续参数的长度

    事件分组格式

    《core4.0》V2PE5-680
    这里写图片描述

    • Event Code(8bit): 0x00-0xFF,0xFF为事件代码保留
      用于供应商特定的调试事件。

    数据分组格式

    ACL分组

    《core4.0》V2PE5-675
    这里写图片描述

    • Handle:范围:0x000-0xEFF(0xF00 - 0xFFF留作将来使用)
      Packet_Boundary_Flag(PB):
      这里写图片描述
      Broadcast_Flag(BC):
      这里写图片描述

    SCO分组

    这里写图片描述

    • Connection_Handle:用于传输同步数据分组或段。范围:0x0000-0x0EFF(0x0F00-0x0FFF保留供将来使用)

    这里写图片描述

    HCI 命令和事件

    具体命令参数含义和返回事件请查看,《core4.0》V2PE7-700

    HCI命令分类

    HCI命令分为几大类

    指令类型 OGF
    链路控制指令(Link Control commands) 0x01
    链路策略指令(Link Policy Commands) 0x02
    主机控制器与基带指令(HCI Control and Baseband Commands) 0x03
    信息参数指令(INFORMATIONAL PARAMETERS) 0x04
    状态指令参数(STATUS PARAMETERS) 0x05
    测试指令(TESTING COMMANDS) 0x06
    LE CONTROLLER COMMANDS 0x08

    HCI事件分类

    具体返回事件参数含义和请查看,《core4.0》V2PE7.7-961

    错误代码

    具体错误代码请查看,《core4.0》V2PD-589
    在返回事件中如果带有staus代码,这时候就可以返回错误代码,表面命令执行失败的原因。

    HCI流控制

    参考网站:
    http://blog.sina.com.cn/s/blog_4c02ba150101r23p.html
    http://blog.csdn.net/android_huber/article/details/7727512

    展开全文
  • blidino, 通过蓝牙LE项目实现 Arduino USB MIDI到 MIDI blidino通过蓝牙项目实现 Arduino MIDI MIDI 。 repo 基于苹果公司最近发布的MIDI协议,将USB类兼容MIDI设备的草图和指令传递给 ios/cer设备。完全模板化,...
  • 蓝牙LE Audio的关键-LC3技术

    千次阅读 2020-11-07 11:09:09
    LE Audio简介 在过去的二十年中,自成立以来,蓝牙技术已成为去到解决方案对于绝大多数的无线音频流应用。如果您曾经通过头戴式耳机或汽车的信息娱乐系统无线听音乐,那么您很可能已经使用了蓝牙技术。 蓝牙经典(BR...
  • 蓝牙相关协议解析

    2021-07-21 18:14:13
    1、ARM平台蓝牙协议栈移植详解: https://blog.csdn.net/gatieme/article/details/48751743 2、蓝牙协议栈各层功能简介: http://blog.chinaunix.net/uid-21411227-id-2780269.html 3、蓝牙广播通信相关技术分析...
  • 接口替代协议实现。 Peripheral连接, Service扫描, Service + Characteristic发现和Characteristic读取/写入的超时。 用于规范GATT配置文件的DSL。 特征配置文件类型封装了序列化和反序列化。 实现Central...
  • 所有消息均为 16 字节,低于蓝牙 LE 上单个消息有效负载的最大大小 20。 它们采用以下格式: 字节 部分 1 起始字节 1 消息编号 12 消息数据 1 奇偶校验字节 1 结束字节 开始和结束字节 起始字节为 0xAB 结束...
  • 蓝牙协议分析(10)_BLE安全机制之LE Encryption 作者:wowo 发布于:2017-3-28 11:52 分类:蓝牙 1. 前言 前面文章介绍了两种BLE的安全机制:白名单[4]和LL privacy[3]。说实话,在这危机四伏的年代,这两...
  • CC2640R2F BLE5.0 蓝牙协议LE 2M PHY功能

    千次阅读 2017-08-03 10:12:58
    LE 2M PHY LE 2M PHY功能使用与LE 1M PHY相同的发射功率,唯一的变化是PHY中数据的调制。使用LE 2M PHY,由于在相同的输出功率下进行更高的数据调制,能耗降低。下表列出了两个PHY之间的一些区别: 参数 比较 ...
  • 蓝牙BLE协议分析【附代码实例】

    千次阅读 2020-08-14 18:55:36
    目录0x01 蓝牙概述0x02 蓝牙技术分类Basic Rate(BR)/AMPLow Energy(LE)0x03 蓝牙架构0x04 蓝牙协议应用层(App Layer)L2CAP(Logical Link Control and Adaptation Protocol Layer)逻辑层(Logical Layer)...
  • 蓝牙BLE协议栈解析

    2019-04-28 08:59:04
    蓝牙BLE协议栈解析
  • 使用蓝牙LE网状网络的分布式聊天Messenger。 完全分散的架构,无需服务器或Internet连接 消息缓存,延迟传输 公共和私有端到端加密消息通道 语音留言,图像,文件和联系人附件 具有可配置节点,链接和更多功能的...
  • 近期Imagination Technologies发布了全新的iEB110 IP,这是一个基于蓝牙技术联盟(Bluetooth SIG)最新发布的 5.2规范的完整低功耗蓝牙(Bluetooth Low Energy)IP解决方案。新推出的iEB110 IP产品包括射频(RF...
  • 现在蓝牙低功耗被认为是“智能”蓝牙,但...波兰咨询公司SecuRing安全研究人员Slawomir Jasek在黑帽大会上指出他对10台蓝牙LE(技术上称为Bluetooth Smart,但通常被称为BLE)设备进行了检查,以查看它们是否使用了最...
  • 蓝牙协议学习笔记

    2020-12-25 10:49:42
    蓝牙协议包括两种技术:Basic Rate(简称BR)和Low Energy(简称LE)。这两种技术,都包括搜索(discovery)管理、连接(connection)管理等机制,但它们是不能互通的! 厂商要么实现这两种技术中的一种,这时就只能...
  • bluetooth5.2 官网协议规范 bluetooth5.2 官网协议规范 bluetooth5.2 官网协议规范 bluetooth5.2 官网协议规范 bluetooth5.2 官网协议规范 bluetooth5.2 官网协议规范
  • 我记得我看过一本书叫verilog HDL那些事,作者文笔轻松,文风有趣,不像那些传统的大牛文风严谨,看着就想睡觉,我在网上看了大牛关于蓝牙协议架构的博客、文章,因为协议本身就是一个枯燥乏味的东西,大部分内容...
  • 蓝牙协议简介

    2021-04-20 13:45:25
    从左到右依次为:经典蓝牙(BR/EDR)、双模蓝牙(同时支持BR/EDR/LE)和低功耗蓝牙(BLE)。其中经典蓝牙和低功耗蓝牙互不兼容。 其实看结构也可以看出双模蓝牙是经典蓝牙和低功耗蓝牙的合集。 (二)、蓝牙原理及...
  • 蓝牙协议分析_协议架构

    千次阅读 2018-05-01 17:47:01
    1. 前言本文是蓝牙协议分析的第二篇文章,在“蓝牙协议分析_基本概念”的基础上,从整体架构的角度,了解蓝牙协议的组成,以便加深对蓝牙的理解。2. 协议层次蓝牙协议是通信协议的一种,为了把复杂问题简单化,任何...
  • 开源蓝牙5.0协议栈NimBLE介绍

    千次阅读 2019-03-02 17:40:43
    开源蓝牙5.0协议栈NimBLE介绍 标签(空格分隔): NimBLE bluetooth 描述 NimBLE 是 Apache 基金会下一个开源的蓝牙5.0协议栈,具备完整的Host及Controller层。资源占用少,支持蓝牙5.0特性,也支持Mesh等功能...
  • GAP Bond管理和LE安全连接 GAP Bond Manager是一个可配置的模块,使用Bond manager后应用程序可以减少大部分安全机制。下表列出了术语。 术语 描述 配对(Pairing) 交换密钥的过程 加密(Encryption...
  • 蓝牙协议(1)-- 基本协议

    万次阅读 多人点赞 2018-11-30 11:56:36
    蓝牙协议分析(1)基本概念  蓝牙4.1,是一个大杂烩:BR/EDR沿用旧的蓝牙规范;LE抄袭802.15.4;AMP直接使用802.11。而这一切的目的,就是以兼容性和易用性为基础,在功耗和传输速率之间左右为难。 1.蓝牙技术的...
  • 蓝牙低功耗(Bluetooth Low Energy,或称Bluetooth LE、BLE,旧商标Bluetooth Smart)也称蓝牙低能耗、低功耗蓝牙,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运动健身、信标、安防、家庭...
  • 蓝牙5.2_协议规范.rar

    2020-06-19 11:58:54
    包含4个文档: 1)蓝牙协议规范5.2; 2)蓝牙5.2 overview; 3)增补 4)网络上摘超的3篇蓝牙5.2解读文档

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,061
精华内容 1,224
关键字:

蓝牙le协议