Linux蓝牙之核外协议栈BlueZ架构分析 | DD'NotesLinux蓝牙之核外协议栈BlueZ架构分析 工程名称: BlueZ — 官方 Linux Bluetooth 协议栈代码仓库: git://git.kernel.org/pub/scm/bluetooth/bluez.git协议: GPL-2.0-or-later (核心) / LGPL-2.1-or-later (lib)代码规模: ~525,695 行 C 代码, 803 个 C 源文件核心
https://notes.z-dd.online/2026/05/18/Linux%E8%93%9D%E7%89%99%E4%B9%8B%E6%A0%B8%E5%A4%96%E5%8D%8F%E8%AE%AE%E6%A0%88BlueZ%E6%9E%B6%E6%9E%84%E5%88%86%E6%9E%90/
Linux蓝牙之核外协议栈BlueZ架构分析
工程名称: BlueZ — 官方 Linux Bluetooth 协议栈
代码仓库: git://git.kernel.org/pub/scm/bluetooth/bluez.git
协议: GPL-2.0-or-later (核心) / LGPL-2.1-or-later (lib)
代码规模: ~525,695 行 C 代码, 803 个 C 源文件
核心维护者: Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz
本报告基于 BlueZ(v5.86) git commit 0fdf34b17
目录
项目概述
功能全景
架构总览
核心模块详解
D-Bus 接口体系
核心流程分析
关键子系统
工具生态
配置与存储
体系结构图
1. 项目概述
BlueZ 是 Linux 内核官方 Bluetooth 子系统的用户态实现,提供完整的蓝牙协议栈支持,涵盖:
经典蓝牙 (BR/EDR): 传统蓝牙 2.0/2.1/3.0
低功耗蓝牙 (BLE): 蓝牙 4.0/4.1/4.2/5.0/5.1/5.2/5.3
双模 (Dual Mode): 同时支持 BR/EDR 和 LE
BlueZ 通过 D-Bus 系统总线向用户态应用提供标准化的蓝牙服务接口,是 Linux 桌面和嵌入式系统中蓝牙功能的事实标准实现。
2. 功能全景
2.1 核心蓝牙功能
功能域 支持技术 说明
设备发现 BR/EDR Inquiry + LE Scanning 支持主动/被动扫描
连接管理 BR/EDR SCO/eSCO + LE Connection 多设备并发连接
配对/绑定 SSP, LE Legacy, LE Secure Connections Just Works, Passkey, OOB
广播 LE Advertising (Legacy + Extended) 支持 Periodic Advertising
GATT GATT Client + Server 支持缓存、通知、MTU协商
SDP BR/EDR 服务发现协议 兼容模式已标记废弃
2.2 音频/媒体支持 (A2DP/AVRCP/HFP)
Profile 角色 文件位置
A2DP Source/Sink profiles/audio/a2dp.c
AVRCP Controller/Target profiles/audio/avrcp.c
AVDTP 流媒体传输出层 profiles/audio/avdtp.c
HFP HF/AG profiles/audio/hfp-hf.c / hfp-ag.c
ASHA 助听器音频流 profiles/audio/asha.c
BAP LE Audio (Basic Audio Profile) profiles/audio/bap.c
VCP Volume Control Profile profiles/audio/vcp.c
MCP Media Control Profile profiles/audio/mcp.c
CCP Coordinated Set Identification profiles/audio/ccp.c
CSIP Coordinated Set Identification Profile profiles/audio/csip.c
TMAP Telephony and Media Audio Profile profiles/audio/tmap.c
GMAP Generic Media Audio Profile profiles/audio/gmap.c
MICp Microphone Control Profile profiles/audio/micp.c
RAP Rendering Adjustment Profile src/shared/rap.c
2.3 输入设备 (HID)
Profile 说明 文件
HID/HOG 键盘/鼠标/游戏手柄 profiles/input/hog.c
Sixaxis Sony PS3/PS4 手柄支持 profiles/input/sixaxis.h
UHID 用户态 HID 驱动 src/shared/uhid.c
2.4 网络服务 (PAN)
Profile 说明 文件
PAN 个人局域网 profiles/network/server.c
BNEP 蓝牙网络封装协议 profiles/network/bnep.c
NAP 网络访问点 profiles/network/connection.c
2.5 LE Audio (下一代)
Profile 说明 文件
LC3 Codec LE Audio 强制编解码器 src/shared/bap.c
Broadcast Audio 广播音频 profiles/audio/bap.c
BASS 广播音频扫描服务 profiles/audio/bass.c
2.6 OBEX/拨号/信息
功能 说明 文件
OBEX 对象交换服务器 obexd/src/
OPP 对象推送 obexd/plugins/opp.c
FTP 文件传输 obexd/plugins/ftp.c
PBAP 电话簿访问 obexd/plugins/pbap.c
MAP 信息访问 obexd/plugins/mas.c
2.7 Mesh 网络
组件 说明 文件
Mesh Node 蓝牙 Mesh 节点实现 mesh/mesh.c
Provisioning 配置协议 (PB-ADV) mesh/prov-acceptor.c, prov-initiator.c
Configuration 配置模型服务器 mesh/cfgmod-server.c
Friendship Friend/LCFN 节点 mesh/friend.c
3. 架构总览
作者: Shell
链接: https://notes.z-dd.online/2026/05/18/Linux%E8%93%9D%E7%89%99%E4%B9%8B%E6%A0%B8%E5%A4%96%E5%8D%8F%E8%AE%AE%E6%A0%88BlueZ%E6%9E%B6%E6%9E%84%E5%88%86%E6%9E%90/
来源: DD'Notes
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
。。。 。。。


2009

被折叠的 条评论
为什么被折叠?



