bluez

byte轻骑兵4 天前
linux·人工智能·bluez·电脑蓝牙·嵌入式蓝牙
【BlueZ 】Linux 内核蓝牙子系统入门:hci_core 模块与 BlueZ 的交互蓝牙技术在现代操作系统中扮演着至关重要的角色,从无线键鼠到音频传输,从物联网设备到车联网应用,无处不在。Linux 内核作为开源操作系统的典范,提供了完整的蓝牙协议栈实现——从底层的硬件驱动到高层的应用接口。本文聚焦于 Linux 蓝牙子系统的核心枢纽:hci_core 模块与 BlueZ 用户态协议栈的交互机制。
byte轻骑兵5 天前
linux·人工智能·bluez·电脑蓝牙·嵌入式蓝牙
【BlueZ 】input 模块:蓝牙鼠标/键盘等输入设备的基础适配逻辑BlueZ 作为 Linux 平台上的官方蓝牙协议栈,其 input 模块承担着蓝牙 HID(Human Interface Device,人机接口设备)协议栈的用户态实现。本文将深度拆解 BlueZ 5.x input 模块的源码实现,涵盖经典蓝牙 HIDP 协议和 BLE HOG 协议的完整适配逻辑,为蓝牙输入设备的开发提供实战参考。
byte轻骑兵7 天前
linux·人工智能·bluez·电脑蓝牙·嵌入式蓝牙
【BlueZ 】sdp 模块:服务发现协议的用户态实现基础在 Bluetooth 经典蓝牙(BR/EDR)体系中,SDP(Service Discovery Protocol,服务发现协议) 扮演着"服务目录"的核心角色。任何蓝牙设备若想对外提供可发现的服务(如串口、文件传输、音频播放等),都必须通过 SDP 在服务数据库中注册相应的服务记录;而想要使用远端设备服务的客户端,也必须通过 SDP 查询远端设备的服务信息。
byte轻骑兵8 天前
linux·人工智能·bluez·电脑蓝牙·嵌入式蓝牙
【BlueZ】 log 模块:日志系统的实现与自定义日志输出配置在 BlueZ 5.x 的架构中,log 模块是整个蓝牙守护进程(bluetoothd)的"听诊器"。它不仅承担着传统的调试输出功能,还实现了基于 HCI 日志通道的远程日志传输,让开发者可以通过 btmon 工具实时捕获蓝牙协议栈的运行时日志。这种双路日志输出架构(syslog + HCI Logging Channel)使得 BlueZ 在嵌入式蓝牙开发场景下具有极强的可观测性。
byte轻骑兵12 天前
linux·人工智能·bluez·电脑蓝牙·嵌入式蓝牙
【BlueZ 】util 模块:通用工具函数,源码中高频复用的基础组件在 BlueZ 5.x 庞大的源码体系中,util 模块扮演着"幕后英雄"的角色。它不是直接处理蓝牙协议栈核心逻辑的主角,却是支撑所有模块运转的基础设施。从 HCI 命令封包的字节序处理、设备地址的格式转换,到 GATT 服务 UUID 的可读化显示、调试日志的十六进制输出,几乎每一个模块都在高频复用 util 模块提供的通用工具函数。
byte轻骑兵14 天前
linux·人工智能·bluez·电脑蓝牙·嵌入式蓝牙
【BlueZ 】hci 模块:用户态 HCI 层的核心封装与消息处理在 BlueZ 5.x 整体架构中,HCI(Host Controller Interface)层是连接 内核蓝牙协议栈 与 用户态蓝牙守护进程 bluetoothd 的核心枢纽。它向下通过 HCI Socket 与 Linux 内核 net/bluetooth/ 下的 HCI 协议栈交互,向上为 adapter、device、profile等模块提供统一的指令发送/事件接收/数据收发能力。
byte轻骑兵19 天前
linux·人工智能·bluez·电脑蓝牙·嵌入式蓝牙
【BlueZ 】Adapter 模块:蓝牙适配器(主设备)的初始化与核心逻辑BlueZ adapter模块是整个蓝牙守护进程 bluetoothd 的中枢神经。它管理系统中所有蓝牙控制器(HCI 设备)的生命周期,从硬件识别、初始化配置到运行时状态维护,贯穿蓝牙通信的每一个环节。
byte轻骑兵22 天前
linux·人工智能·bluez·电脑蓝牙·嵌入式蓝牙
【BlueZ 】用户态入口:main.c 核心函数与程序启动流程BlueZ 的用户态守护进程 bluetoothd 是整个蓝牙协议栈的核心控制中心,负责:管理蓝牙适配器
byte轻骑兵1 个月前
linux·人工智能·bluez·电脑蓝牙·嵌入式蓝牙
【BlueZ 】蓝牙配对/绑定基础:BlueZ 中安全机制的入门级源码解析在蓝牙技术的应用场景中,从无线耳机传输音频、智能手表同步健康数据,到 IoT 设备控制家居,数据传输的安全性至关重要。蓝牙安全机制主要解决以下问题:
byte轻骑兵1 个月前
linux·bluez·电脑蓝牙·嵌入式蓝牙
【BlueZ 】蓝牙地址与 UUID:BlueZ 源码中核心标识的定义与使用蓝牙技术中,蓝牙地址(BD_ADDR)和UUID(Universally Unique Identifier)是两个最核心的标识符。地址用于唯一标识蓝牙设备,UUID用于标识蓝牙服务和特征。理解这两类标识符的定义、生成、绑定和使用,是深入掌握 BlueZ 协议栈的关键。
byte轻骑兵1 个月前
linux·bluez·电脑蓝牙·嵌入式蓝牙
【BlueZ 】BLE 与经典蓝牙的差异:BlueZ 中双模式的源码区分设计蓝牙技术发展至今,已形成经典蓝牙(BR/EDR)和低功耗蓝牙(BLE)两大核心分支。经典蓝牙侧重高带宽数据传输,BLE 侧重超低功耗和快速连接。BlueZ 作为 Linux 官方蓝牙协议栈,通过精妙的双模式兼容架构,实现了两种协议的统一管理与差异化处理。
byte轻骑兵1 个月前
linux·人工智能·bluez·电脑蓝牙·嵌入式蓝牙
【BlueZ 】蓝牙 SDAP 协议入门:BlueZ 中设备服务发现的基础逻辑SDAP(Service Discovery Application Profile)是蓝牙协议栈中负责设备服务发现的核心协议。当两个蓝牙设备建立连接后,如何知道对方提供了哪些服务(如串口服务、音频服务、文件传输服务)?SDAP 就是答案。它基于 SDP(Service Discovery Protocol)实现服务的查询、注册和匹配。本文基于蓝牙核心规范与 BlueZ 5.x 源码,深入浅出地讲解 SDAP 协议原理与源码落地,彻底理解蓝牙服务发现的完整机制。
byte轻骑兵1 个月前
linux·网络·网络协议·bluez·嵌入式蓝牙
【BlueZ 】蓝牙 L2CAP 协议核心:BlueZ 中基础数据传输的源码落地L2CAP(Logical Link Control and Adaptation Protocol)是蓝牙协议栈中承上启下的关键协议层,负责将上层协议数据适配到下层链路层。它是蓝牙数据传输的基石,所有 Profile(如 SDP、RFCOMM、ATT、AVCTP)的数据都必须通过 L2CAP 信道传输。本文基于蓝牙核心规范与 BlueZ 5.x 全套源码,深入剖析 L2CAP 协议原理与源码实现,揭示从协议帧到 socket 操作的完整映射关系。
byte轻骑兵1 个月前
linux·蓝牙·bluez·电脑蓝牙·嵌入式蓝牙
【BlueZ 】核心设计理念:模块化 + DBus 通信的底层逻辑本文基于 BlueZ 5.87 源码深度剖析,从源码层面揭示 BlueZ 的模块化架构设计思想与 DBus 通信机制的底层原理。
byte轻骑兵2 个月前
linux·架构·bluez·电脑蓝牙·嵌入式蓝牙
BlueZ 5.x 整体架构总览:用户态 + 内核态分层设计核心逻辑本文深入剖析 BlueZ 5.x 的整体架构设计,从用户态到内核态逐层拆解核心组件、源码逻辑与运行机制。通过对比 BlueZ 4.x 与 5.x 的架构差异,揭示 Management Interface 引入的革命性变化。结合源码细节,详细解析适配器管理、设备管理、Profile 框架、插件系统、D-Bus 抽象层、IO 抽象层等核心模块的交互逻辑与数据流转,为蓝牙开发从业者提供系统化的架构认知和源码阅读指南。
byte轻骑兵2 个月前
linux·arm开发·蓝牙·bluez·电脑蓝牙
如何定制BlueZ编译:开启/关闭BLE/音频模块的编译参数配置在BlueZ二次开发中,90%的开发者陷入了三个致命误区:①直接全量编译导致体积臃肿(bluetoothd可达3.2MB);②不知道BLE与音频模块的依赖关系,单独关闭某模块引发编译报错;③不清楚哪些参数互斥、哪些必须联动,盲目裁剪导致功能失效。本文基于BlueZ 5.87的configure.ac源码,系统解析所有编译参数的工作原理、依赖关系、裁剪效果,彻底掌握BlueZ编译裁剪体系,实现最小化定制编译。
byte轻骑兵2 个月前
linux·arm开发·蓝牙·bluez·电脑蓝牙
BlueZ源码编译环境配置全指南:Linux桌面原生编译 + 嵌入式ARM交叉编译 + 定制裁剪与调试实战网上大部分BlueZ教程停留在apt install bluez的层面,真正需要在嵌入式平台落地、做Profile定制、定位协议栈问题的工程师,绕不开源码编译这一关。本文将完整编译体系、交叉编译依赖层级处理、最小系统裁剪、全阶段排错方法论一次性讲透,目标是直接落地解决工作中的编译、移植、裁剪问题。
赖small强1 年前
linux·蓝牙·bluez·bluetoothctl·dbus-monitor·central·peripheral
【蓝牙】BLE 数据收发实战指南(手机 App ↔ 嵌入式 Linux/BlueZ)本文面向在手机 App(Android/iOS)与嵌入式 Linux(BlueZ)之间实现 BLE(Bluetooth Low Energy)数据收发的工程实践,涵盖基础概念、接口映射、两类典型拓扑的完整流程、命令与验证、常见问题与排查,以及上线建议。
静止了 所有的花开1 年前
蓝牙·glib·gatt·bluez·gatt server·d‑bus
BlueZ 学习之GATT Server开发Linux下,使用C语言开发一个简单的GATT Server,我的Ubuntu上跑的BlueZ版本是5.79,使用的GLib库版本是2.85.2,这里我直接使用GLib里的D‑Bus来实现与BlueZ通信。BlueZ 官方推荐通过 D-Bus 进行通信和控制,如果是要使用原始的hci接口来实现,可以参考BlueZ源码目录下的 tools/btgatt-server.c 文件。
我是有底线的