- 博客(560)
- 资源 (18)
- 收藏
- 关注

原创 一篇文章足够你学习Bluez,提供史上最全的Bluez教程,让你告别Bluez从入门到放弃
Bluez是真的难,说“入门到放弃”真的毫不夸张,Bluez的学习曲线陡峭,要求对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度。
2024-10-01 17:46:45
969

原创 一篇文章足够你学习ESP32,提供史上最全的ESP32教程(驱动/蓝牙/Wi-Fi/LVGL/Arduino...)
本文章目的:1)针对单片机外设做详细的教程,丰富个人技能吃,彻底从原理+应用来写外设2)给广大蓝牙爱好者提供蓝牙应用方面的教程(结合我们的蓝牙协议栈会事半功倍)蓝牙协议栈教程点击我3)给广大Wi-Fi爱好者提供Wi-Fi方面的教程(结合我们的Wi-Fi协议栈会事半功倍)Wi-Fi协议栈教程点击我4)给广大GUI爱好者提供LVGL方面的教程LVGL教程点击我5)把各个技能池组合起来,举一反三,做炫酷的实例应用教程内容:我们的内容包括但不限于:1)IDF基础介绍
2022-04-04 14:46:19
147051
27

原创 一篇文章足够你学习蓝牙技术,提供史上最全的蓝牙技术(传统蓝牙/低功耗蓝牙)文章总结,文档下载总结(2024/10/02更新)
那由于学员反馈蓝牙精讲没有一个目录介绍,再次我整理一个目录。我们的蓝牙书以及优快云蓝牙系列的视频有以下计划:告知:初学蓝牙者暂时不要碰controller(蓝牙芯片)里面的协议,否则会看到你怀疑人生那我们就一一来列举下(持续更新次文章,每周一更这篇文章)第一篇:蓝牙综合介绍主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍,内容如下:章节 文章标题 文章链接 视频课程 第一章 蓝牙概述 1. 蓝牙的基本概念以及发展轨迹.
2020-08-03 08:09:52
111150
64
原创 剖析Linux蓝牙子系统来驱动USB接口的蓝牙(CSR8510蓝牙dongle)原理
CSR8510 是 Qualcomm(高通)旗下CSR公司推出的一款 蓝牙无线通信芯片,主要应用于蓝牙适配器(USB Dongle)或嵌入式设备中,支持蓝牙数据传输和音频传输功能
2025-04-04 10:41:27
27
原创 彻底吃透 蓝牙电话本访问(PBAP)协议
电话本访问协议Phone Book Access Profile (PBAP)用于访问电话本对象(通过Vcard形式),是基于客户端/服务器的模型,一般用于client从server下载电话本。这个协议为为HFP/SIM协议设计。
2025-03-29 14:19:57
739
原创 一文让你理解蓝牙安全管理协议SMP,附带视频
SMP(Security Manager Protocol)即安全管理协议。SMP 是蓝牙用来进行安全管理的,其定义了配对和 Key(可以理解成密钥)的分发过程的实现,以及用于实现这些方法的协议和工具。SMP 的内容主要是配对和 Key 的分发,然后用 Key 对链路或数据进行加密。这个 Key 至关重要,怎么生成、怎么由通信的双方共享,关系到加密的成败。因此蓝牙协议定义了一系列的复杂机制,用于处理和加密 Key 有关的操作。SMP 被用在 LE 单模设备或蓝牙双模(BR/EDR/LE)设备中。
2025-03-22 11:15:55
907
原创 ESP32 UART select解析json数据,上位机控制LED灯实验
本实验的目的主要是通过上位机通过UART来控制ESP32端的LED的点亮以及熄灭,整个项目逻辑比较简单,整体架构如下:上位机(PC)主要是跑在PC端的一个软件,主要作用包含:1)串口相关配置,串口号,波特率等配置,串口动态识别,打开,关闭串口等2)发送json指令来控制ESP32 LED等点亮跟熄灭3)显示ESP32吐出来的log下位机(ESP32)主要就是ESP32开发板,主要包含作用如下:1)LED灯的驱动2)UART select监听上位机发送的指令,从而来控制LED灯的点亮/熄灭。
2025-03-08 11:39:18
868
原创 一文理解蓝牙Core 6.0 channel sounding精确测距
在讨论Bluetooth LE 中的Bluetooth Channel Sounding 之前,本节将首先介绍该功能背后的一些基本理论。已经熟悉该主题的读者可跳至第 3 节Bluetooth Channel Sounding。Bluetooth Channel Sounding 为产品实现比以往更高精度的距离测量提供了可能。测量的精确度取决于环境条件以及应用层如何利用Bluetooth Channel Sounding 功能。
2025-02-15 15:54:46
1122
3
原创 首创,Android系统驱动ESP32蓝牙,原来ESP32可以这么玩
我们之前写了一系列的bluedroid文章,本次我们打算用Android bluedroid也驱动ESP32,在熟悉的ESP32的同时也增加Bluedroid的实践
2025-01-04 20:50:52
1178
1
原创 惊叹,Linux Bluez驱动ESP32教程来了,原来ESP32可以这么玩
相信很多朋友使用过ESP32,很多人觉得ESP32是一个Soc,也就是芯片带BT Controller/Host以及一些外设,并且附带一些其他的Wireless功能,我们本次使用的ESP32是带Wi-Fi 4功能!我们把这个也叫做Embedded mode,当然他同样可以当做一个transceiver(我一般把他叫做RF芯片),比如把他当做蓝牙的Controller来用,外部的AP(application processor)来充当蓝牙Host,也就是我们本文的Linux bluez驱动esp32
2025-01-04 14:53:22
1805
原创 通透!!一文读懂Android蓝牙BR/EDR inquiry,BLE scan流程
这个相比普通的搜索模式,会额外多一个RSSI来上报接收信号强度蓝牙协议栈HCI EIR(EXTENDED INQUIRY RESPONSE)扩展搜索响应_蓝牙eir-优快云博客。
2025-01-04 12:17:55
185
原创 太通透了,Android 流程分析 蓝牙enable流程(stack/hidl)
由于Bluedroid的介绍文档有限,以及对Android的一些基本的知识需要了(Android 四大组件/AIDL/Framework/Binder机制/JNI/HIDL等),加上需要掌握的语言包括Java/C/C++等,加上网络上其实没有一个完整的介绍Bluedroid系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度,学习曲线也相对较陡,所以我有了这个想法,专门对Bluedroid做一个系统性的介绍,尽可能的涵盖所有内容。
2024-12-28 09:32:44
307
原创 一文理顺 Bluedroid hci数据处理流程(system bt <-> hidl service)
C语言能直接调用到 HIDL Service 是通过 Android 的 Binder IPC (Inter-Process Communication) 机制实现的。Binder 是 Android 系统中核心的跨进程通信机制,它为 HIDL 提供了底层支持,使 C/C++ 程序可以方便地调用远程服务(例如 HIDL Service)
2024-12-16 23:45:00
308
原创 Android蓝牙Bluedroid理解bta_sys_sendmsg处理流程
在 Android 蓝牙系统中,bta_sys_sendmsg 的设计初衷是为了实现线程隔离和事件分发的统一管理
2024-12-16 23:30:00
164
原创 爆肝Android JNI - 延展Android蓝牙JNI学习
jni全称java native interface,我把它分为三部分,java代表java语言,native代表当前程序运行的本地环境,一般指windows/linux,而这些操作系统都是通过C/C++实现的,所以native通常也指C/C++语言,interface代表java跟native两者之间的通信接口,jni可以实现java和C/C++通信。它是java生态的特征,所以定义在jdk标准当中。
2024-12-07 15:35:58
395
原创 太通透了,Android 流程分析 蓝牙enable流程(应用层/Framework/Service层)
安卓蓝牙的初始化是最能反应架构的流程,其中会牵扯到应用程序Settings,Framework,蓝牙apk进程,蓝牙协议栈,蓝牙hidl,蓝牙vendor,通过了解使能可能就完全了解了整个android架构
2024-11-23 16:25:15
469
原创 Android Binder通信介绍
Binder 是 Android 系统中用于跨进程通信的一种机制,它允许一个进程中的组件与另一个进程中的组件进行通信,从而实现进程间通信 (IPC)。Binder 机制是基于 Linux 内核提供的进程间通信机制 (IPC) 实现的。
2024-11-23 16:17:12
146
1
原创 Android mk/bp构建工具介绍
Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名、引用的头文件目录、需要编译的.c/.cpp文件和.a静态库文件等。要掌握jni,就必须熟练掌握Android.mk的语法规范。Android.bp 文件首先是 Android 系统的一种编译配置文件,是用来代替原来的 Android.mk文件的
2024-11-23 16:14:17
318
原创 Android蓝牙架构,源文件目录/编译方式学习
介绍Android蓝牙功能模块的结构,包括Settings,framework,bluetoott process,system bt,hidl ,vendor的源文件目录以及编译方式
2024-11-23 16:05:36
626
原创 一文了解Linux内核I2C子系统,驱动苹果MFI加密芯片
由于苹果有一套MFI IAP2的蓝牙私有协议,这个协议是基于BR/EDR的RFCOMM自定义UUID来实现IAP2协议的通信,中间会牵扯到苹果加密芯片的I2C读取,所以我们借此机会来研究下Linux I2C子系统。
2024-11-02 11:59:13
1802
3
原创 bluez hid host介绍,连接键盘/鼠标/手柄不是梦,安排
蓝牙HID(Human Interface Device)和HOGP(HID over GATT Profile)都是蓝牙技术中用于传输人机接口设备(如键盘、鼠标、手柄等)数据的协议,但它们有一些显著的区别。蓝牙HID(Human Interface Device)概述: 蓝牙HID是经典蓝牙协议栈中的一个标准协议,用于连接键盘、鼠标、手柄等设备。它是蓝牙规范中的一个子集,主要用于短距离无线通信。
2024-10-26 16:50:38
563
原创 bluez免提协议hands-free介绍,全到无法想象,bluez hfp ag介绍
免提协议(HFP, Hands-Free Profile)是蓝牙标准中的一种协议,专门用于在移动设备(如智能手机)与免提设备(如蓝牙耳机、车载免提系统)之间进行音频通信和控制信令。HFP 主要用于电话功能,如接听、挂断、拨打电话等,也支持语音命令和其他音频操作。
2024-10-01 15:04:57
1281
原创 bluez sdptool的使用/源码介绍
sdptool 是一个用于管理 Bluetooth 服务发现协议 (SDP) 的命令行工具,隶属于 BlueZ 框架。SDP 是一种用于在设备之间发现可用服务的协议,sdptool 允许用户查询和管理蓝牙设备上注册的服务。
2024-10-01 14:59:44
514
原创 bluez蓝牙搜索功能一文通,分别介绍hcitool/btmgmt/bluetoothctl搜索蓝牙设备的方式的使用/源码/差异
我们在前面已经介绍了非常多的工具,可以做蓝牙搜索功能,比如btmgmt/bluetoothctl/hcitool等。而其中btmgmt/hcitool是通过socket直接跟kernel中hci socket通信,bluetoothctl是通过更上层的API通过dbus来通信使用蓝牙搜索功能。
2024-10-01 14:55:32
499
原创 蓝牙Bluez hcitool工具使用/源码介绍
hcitool 是一个命令行工具,用于在 Linux 系统上与 Bluetooth 设备进行交互。它主要用于配置和管理 Bluetooth 设备,并可以执行各种 Bluetooth 操作,比如扫描设备、获取设备信息、建立连接等
2024-10-01 14:50:59
379
原创 bluez dbus工具bluetoothctl使用/源码介绍
bluetoothctl 是一个命令行工具,用于管理和配置蓝牙设备。它是 BlueZ 蓝牙协议栈的一部分,提供了一个交互式命令行界面,允许用户扫描、配对、连接和管理蓝牙设备。bluetoothctl 是 Linux 系统中常用的蓝牙管理工具,特别适合在没有图形用户界面的环境下使用。
2024-10-01 14:47:42
460
原创 哇哇哇,bluez调试神器btmon介绍,辅助学习神器一文通!!
btmon 是一个用于监控和调试蓝牙通信的工具。它是 Linux 环境下用于捕获和分析蓝牙协议数据包的强大工具,通常与 BlueZ 蓝牙协议栈一起使用。对我们调试蓝牙来说是一个调试神器!!btmon 的主要功能包括:● 实时捕获蓝牙通信数据:btmon 可以实时捕获设备之间的蓝牙通信数据,并将其以易读的格式显示出来。这个还支持ellisys的injection!
2024-10-01 14:44:29
575
原创 bluez hciconfig工具使用/源码介绍
hciconfig 是一个命令行工具,用于配置和管理蓝牙设备的设置。它通常用于 Linux 系统上,特别是使用 BlueZ 蓝牙协议栈的系统。
2024-10-01 14:40:03
419
原创 bluez btmgmt工具使用/源码介绍
btmgmt 是一个用于管理 Bluetooth 控制器的命令行工具,它是 BlueZ 项目的一部分。btmgmt 提供了一种强大且灵活的方式来控制和配置本地蓝牙适配器(控制器),与蓝牙设备进行交互,以及管理蓝牙协议栈的各个方面。
2024-10-01 14:37:45
676
原创 linux dbus介绍,彻底懂linux bluez dbus
DBUS是一种高级的进程间通信机制(IPC)。DBUS支持进程间一对一和多对多的对等通信,在多对多的通讯时,需要后台进程的角色去分转消息,当一个进程发消息给另外一个进程时,先发消息到后台进程,再通过后台进程将信息转发到目的进程。DBUS后台进程充当着一个路由器的角色。 DBUS中主要概念为总线,连接到总线的进程可通过总线接收或传递消息,总线收到消息时,根据不同的消息类型进行不同的处理
2024-10-01 14:33:47
1100
原创 蓝牙bluez bluetoothd守护进程介绍
bluetoothd 是蓝牙协议栈 BlueZ 的主要守护进程,用于在 Linux 操作系统中管理和处理 Bluetooth(蓝牙)功能。BlueZ 是 Linux 系统上官方的蓝牙协议栈,提供对蓝牙设备的支持和管理,并且 bluetoothd 作为其核心组件之一,负责蓝牙设备的发现、配对、连接以及各种蓝牙协议的实现。
2024-10-01 14:27:52
712
原创 蓝牙Bluez hciattach ap6256蓝牙初始化方式介绍
蓝牙enable的三种方式,而其中之一就是hciattch就是在user space下载附件,然后触发kernel bt进行SIG HCI command的交互,来进行蓝牙使能的动作
2024-10-01 14:24:16
583
原创 蓝牙Bluez btattach蓝牙初始化方式介绍
蓝牙enable的三种方式,而其中之一就是btattach触发kernel进行特定芯片的驱动加载(下载fw)以及标准的kernel中bt进行SIG HCI command的交互,来进行蓝牙使能的动作
2024-10-01 14:01:29
577
原创 蓝牙bluez enable bcm私有模式(brcm_patchram_plus1)方式介绍
蓝牙enable的三种方式,还有一些芯片厂家自己的工具,不具有通用性,所以单独拎出来介绍,比如bcm的brcm_patchram_plus1工具,这个工具的作用是在user space下载蓝牙fw以及触发标准的kernel中bt进行SIG HCI command的交互,来进行蓝牙使能的动作
2024-10-01 11:28:38
742
stm32f1_mrvl88w8801应用笔记_20191220.pdf
2019-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人