Bluetooth HCI 学习

SSD201移植RTL8723du模块(蓝牙调试) 移植蓝牙驱动 由于USB是默认配置好的,那么我们只需要对模块单独配置就可以了。 1、将获取的RTL8723du模块驱动程序拷贝至kernel/drivers/bluetooth/rtl8723du/目录下 2、在rtl8723du目录下添加Kconfig #vi kernel/drivers/bluetooth/rtl8723du/Kconfig config BT_HCIBTUSB_RTLBTUSB tristate "Realtek HCI USB driver... 阅读详情

四种数据类型

指令分组,事件分组,数据分组。
其中数据分组又分为acl(异步无连接)数据分组和sco(同步面向连接)数据分组。

指令分组只从从主机发送到主机控制器。
事件分组只从主机控制器发送到主机,用以说明指令分组执行的情况。
数据分组在主机和主机控制器之间相互传输。

  • Command (0x1) 指令分组
    协议格式:
    Command 协议格式

  • ACL Data (0x2) 数据分组
    协议格式:
    ACL

  • SCO Data (0x3)
    协议格式

SCO

  • Event (0x4) 事件分组
    协议格式:

Event

HCI Command & Events

参考 Core_v5.2 Vol4 - Part E - P1929
HCI Comand & Event

HCI Command 格式
HCI command 占用两个bits。小端模式(低位在左,高位在右)。OCF + OGF,其中 OCF 占用10位 + OGF 占用6位。
0x3F 是保留给供应商调试使用。

常用指令操作组 组属性值

CommandOGF说明
Link Control0x1链路控制
Link Policy0x2链路策略
Controller & Baseband0x3主机控制器和基带
Infomational Parameters0x4属性参数
Status parameters0x5状态参数
Testing0x6测试

蓝牙主机控制器通信流程

  • 1 蓝牙模块自身初始化
  • 2 流量控制
  • 3 查询
  • 4 建立连接
  • 5 进行数据通讯
  • 6 断开连接
蓝牙模块自身初始化

Reset 指令: 属于 Controller & Baseband 操作组 (OGF:0x03)
reset command ocf
reset command event
示例:

  • Tx payload: 00000001 00000011 00001100 00000000
    在这里插入图片描述
  • Rx payload: 00000100 00001110 00000100 00000001 00000011 00001100 00000000
    在这里插入图片描述

代码:

  response = AWAIT_COMMAND(packet_factory->make_reset());
流量控制

Read Buffer Size
属于 Infomational params (OGF:0x04)

该指令返回的参数
ACL_Data_Packet_Length & Synchronous_Data_Packet_Length
主机发往主机控制器 ACL & SCO 数据分组最大的长度。

Total_Num_Acl_Data_Packets & Total_Num_Synchronous_Data_Packets 决定了主机控制器能接受ACL & SCO 数据总数组。
在这里插入图片描述
在这里插入图片描述

  • Tx payload : 00000001 00000101 00010000 00000000

在这里插入图片描述

  • Rx payload: 00000100 00001110 00001011 00000001 00000101 00010000 00000000 00000000 00000100 00111100 00000111 00000000 00001000 00000000
    在这里插入图片描述

Host Buffer Size command
Controller&Baseband 分组 (OGF : 0x03)
通知主机 控制器发往主机的ACL & SCO 数据指令最大尺寸,同时通知主机控制器在主机数据缓存区中能够存储的ACL & SCO 数据指令的数量。
在这里插入图片描述

【蓝牙专题】HCI协议解析 一、概念: 很多人接触蓝牙,是从HCI开始,因为HCI是主机控制接口协议(Host Controller Interface),蓝牙命令通过HCI来发送到Controller; 1、架构 如下图,HCI通过物理接口(USB、UART等)或虚拟接口,传递数据到Controller,Controller也通过同样的接口发送接收数据,这里注意到HCI层是在L2CAP层之下,LMP层之上; HCI 阅读详情

相关推荐

蓝牙 - HCI介绍

蓝牙里面的HCI是啥? 如上图,HCI就是HOST和Controller之间的通道。用来桥接Host和Controller Devices。 HCI是一个标准的蓝牙用的接口,用来Host发给Controller命令,HOST从controller接收events,和HOST发给Controller数据,和从HOST从Controller接收数据。 HOST就是指我们的主控芯片,Microcontroller/ MCU / μCON / MPU等,比如我正在使用的是iMX6U

guoqx的专栏 1万+

【CYW20189】七、HCI命令格式详解

需要特别注意,如果格式不对的话,CYW20819的BOOT会将数据过滤掉,会让你有一种UART通讯异常的错觉。

大白嵌入式 1114

Android下bluedroid、bluetooth apk介绍

前言本文档主要介绍android平台下bluetooth的应用层软件,先介绍bluetooth应用层的框架,接着分别介绍Bluedroid层软件、Bluetooth应用程序(Bluetooth.apk),Bluetooth framework层,最后完整分析一些蓝牙的操作流程。基于android 5.1的平台,涉及的bluetooth硬件为realtek的蓝牙。文档主要针对蓝牙的初学者,提供基础的学

简单的过客 1万+

linux hci0 进程,利用 hcitool 通过hci 命令与芯片交互

http://blog.chinaunix.net/uid-22415790-id-1774118.html1 read local name:hcitool cmd 0x03 0x00142 write local name:for example, set to name to "kreed", we need use the below command, please note: the l...

weixin_42620563的博客 1517

linux 蓝牙hci,实战Linux Bluetooth编程(三) HCI层编程

作者:Sam (甄峰) sam_code@hotmail.com(HCI协议简介,HCI在BlueZ中的实现以及HCI编程接口)1. HCI层协议概述:HCI提供一套统一的方法来访问Bluetooth底层。如图所示:从图上可以看出,Host ControllerInterface(HCI)就是用来沟通Host和Module。Host通常就是PC,Module则是以各种物理连接形式(USB,se...

weixin_30533301的博客 1424

如何获取并分析Bluetooth HCI层Command Packet和Event Packet包

本文以Ms-Stack为例,讲述了如何获取并分析Bluetooth HCI层Command Packet和Event Packet包

guopeixin的专栏 3899

Bluetooth技术学习笔记 ——HCI

HCI:Host and Controller Interface 1 HCI 模型 (1)Host-Controller模型 (2)蓝牙软件协议栈数据传输模型 2 HCI 流控 HCI流量控制是为了管理Host与Controller的有限资源并控制数据流量而设计的。 (1) Host到Controller的数据流控:基于packet的流控和基于数据块的流控。 如果BR/EDR/LE控制器支...

白萝卜 923

蓝牙开发调试不求人:手把手教你用Ellisys抓包仪搞定空口包与HCI Log分析

本文详细介绍了如何使用Ellisys抓包仪进行蓝牙开发调试,包括空口包与HCI Log分析的完整流程。通过实战案例演示,帮助开发者构建从现象到根源的问题排查体系,提升BLE设备调试效率。文章涵盖硬件连接配置、七步分析法、高级自动化技巧及典型问题模式库,是蓝牙协议分析的实用指南。

weixin_30338481的博客 161

蓝牙学习(3) Linux kernel部分Bluetooth HCI分析

在上文,https://blog.youkuaiyun.com/feiwatson/article/details/81712933中主要理解了在Kernel中USB adapter是如何实现USB设备驱动,以及HCI数据是通过不同的pipes和host通信的。 Control pipes are used to transport HCI commands. Interrupt pipes are r...

feiwatson的博客 1940

BLE 加密流程研究:从示例数据看低功耗蓝牙安全通信

在万物互联时代,低功耗蓝牙(BLE)设备的安全性至关重要。本文基于 Bluetooth 6.0 规范,通过完整的加密示例数据,深度解析 BLE 加密的技术细节,涵盖从密钥协商到数据传输的全流程。

byte轻骑兵的技术小窝 1687

Cherry Studio 新手必看:5分钟搞定MCP服务器配置(附常见问题解决)

本文为Cherry Studio新手提供了详细的MCP服务器配置指南。文章从核心概念入手,解释了Cherry Studio作为MCP客户端如何通过MCP协议安全、标准化地扩展AI助手能力。重点讲解了uv和Bun环境的安装与常见网络问题的解决方案,并演示了如何添加首个MCP服务器(如mcp-server-fetch),助你快速构建可扩展的智能工作流。

corn8的博客 595

蓝牙协议栈学习资料 - Bluetooth Core

蓝牙协议栈学习资料 - Bluetooth Core 去发现同类优质开源项目:https://gitcode.com/ 简介 本仓库提供了一份详尽的蓝牙协议栈学习资料,标题为“Bluetooth Core”。该资料专注于HCI(主机控制器接口)与GATT(通用属性配置文件)协议栈的学习,涵盖了蓝牙协议的各个层级,以及抓包分析等内容。 内容概述 协议层级解析:详细介绍了蓝牙协议栈的每一层,包括物理...

gitblog_06743的博客 314

WinDbg调试工具安装全攻略:从下载到配置的保姆级教程(Windows 10/11适用)

本文提供了一份详细的WinDbg调试工具安装与配置指南,适用于Windows 10/11用户。文章对比了WinDbg Preview独立版与SDK内置经典版的区别,并手把手指导从Microsoft Store或Windows SDK完成安装。核心部分重点讲解了如何配置符号文件路径与源代码路径,这是让WinDbg发挥强大调试功能的关键步骤,并针对常见安装问题提供了实用的排错方法。

hp777的博客 383

蓝牙协议栈学习资料-BluetoothCore:全面掌握蓝牙技术精髓

蓝牙协议栈学习资料-BluetoothCore:全面掌握蓝牙技术精髓 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在物联网和智能设备日益普及的今天,蓝牙技术已成为连接各类设备的重要桥梁。为了帮助开发者深入理解和掌握蓝牙协议栈,Bluetooth Core 提供了一份详尽的蓝牙协议栈学习资料。这份资料专注于HCI(主机控制器接口)与GATT(通用属性配置文件)协议栈的...

gitblog_06795的博客 803

QT触摸屏开发:如何通过重写事件处理实现精准按键长按检测

本文针对QT触摸屏开发中按键长按检测不精准的常见问题,深入剖析了传统信号机制失效的原因,并提供了通过重写事件处理函数(event)的解决方案。文章详细介绍了创建自定义TouchButton类、直接处理QTouchEvent以实现可靠长按检测的完整步骤与代码示例,并分享了进阶优化与避坑指南,帮助开发者实现跨平台一致的精准交互。

weixin_29207149的博客 94

Gemini 2.5 Pro国内免魔法直连教程:5分钟搞定专业级PPT图表(附折线图/柱状图案例)

本文详细介绍了如何利用Gemini 2.5 Pro快速生成专业级PPT图表,包括折线图和柱状图等常见商业图表。通过自然语言交互和智能图表生成功能,用户可以在5分钟内完成数据可视化,大幅提升工作效率。文章还提供了实战案例和高级技巧,帮助用户轻松应对各种商业场景需求。

weixin_30733003的博客 460

【Bluetooth-SIG】【CoreV6.2】【从 Core_v6.2 出发的系统学习计划】

本文阐述了蓝牙Core Specification与Profile Specification的区别与联系。Core Spec主要定义蓝牙系统的核心基础协议栈,包括无线物理层、链路层、连接管理、安全机制等底层功能,而HFP、A2DP、PBAP等具体应用协议属于独立的Profile规范。文章分析了为什么BLE相关内容在Core中显得更完整,指出这是由于BLE采用GATT-based模型,而BR/EDR应用协议体系相对分散。通过流程图对比了两种蓝牙技术架构的差异,并强调Core是蓝牙系统的"地基",Profil

奔跑吧 android 的博客 599

方差分析ANOVA、T检验、卡方检验的区别

T检验和ANOVA都是用来看样本之间均值是否相等,但是两者又有什么区别呢? 卡方检验是用来看分类变量之间有没有相关性。 自变量X类型 自变量X组数 因变量Y类型 分析方法 离散(类别) 仅仅2组 连续(均值) t检验 离散(类别) 2组及以上 连续(均值) ANOVA 离散(类别) 2组及以上 离散(类别) 卡方检验 进一步细分 方差分析 从理论上讲,方差分析有两个前提条件,一是因变量Y需要满足正态性要求,二是满足方差齐检验。 方差不齐时可使用‘非参数检验’,同时还可使用wel

itslifeng的博客 4万+

Bluetooth HCI介绍

Bluetooth HCI介绍 2014年06月23日 22:22:11hzl6255阅读数:3219 HCI, 主机控制接口(Host Controller Interface), 是蓝牙协议栈的重要部分, 相应的规范位于Core Version 4.1的vol 2:Part E和vol 4 HCI提供了对控制器的统一接口,用来沟通Host和Control,如下图所示 在规范中对H...

lizhibing115的博客 3920

硬件工程师入门基础知识(一)基础元器件认识(二)

我们的电路输入一般是只有两种状态,0V 或者是其它的高电平(1.8V,3.3V,5V 等),截止状态一般不用怎么考虑,因为如果让三极管的 Vbe=0,自然就截止了,重要的是饱和状态如何保证。也就是说只要 Rb

小幽余生不加糖 1万+

【JAVA】海康威视门禁机ISAPI接口开发,人脸上传更新接口

本文实现了一个HTTP工具类HTTPClientUtil,提供GET/POST/PUT/DELETE请求方法,支持摘要认证。工具类封装了Apache HttpClient,设置连接超时、最大连接数等参数,通过DeviceInfoDTO传递设备IP、端口和认证信息。文中还展示了两个应用示例:userInfoAdd()用于添加人员信息,FaceDataRecordAdd()用于添加人脸数据,均通过POST请求与设备ISAPI接口交互。该工具类简化了HTTP请求处理,支持设备管理系统的集成开发。

qq_27246521的博客 586

传统蓝牙HCI(Bluetooth HCI)的概念介绍

一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。 第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等 第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍,包括射频层(RF),基带层(baseband),链路管理层(LMP)等 第四篇:传统蓝牙host介绍,主要

朝气蓬勃 2万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

BLE DTM by HCI

1、背景介绍: 依据蓝牙技术规范core_v5.2,Classic Bluetooth(BR/EDR)经典蓝牙测试模式为Test Mode,是信令测试模式,Bluetooth Low Energy(BLE)低功耗蓝牙测试模式为Direct Test Mode(DTM),为非信令测试模式。DTM测试有两种方式实现,一是通过HCI,二是通过2-wire uart接口,在core_v5.2 Vol6 Part F有DTM这两种测试方式的介绍,如下图。 无论是通过HCI来进行DTM测试还是两线的方式,本

weixin_41889258的博客 5646

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: Android通过rc启动三方可执行文件
下一篇: 如何给三方App进行系统签名
leoStack
博客等级 码龄11年 16粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值