Linux蓝牙之核外协议栈BlueZ架构分析

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
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

。。。 。。。


更多请关注我的博客:https://notes.z-dd.online/

或我的:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值