> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs-staging.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 蓝牙软件架构

<a id="bt_architecture_overview" />

蓝牙软件架构由开源软件和 Qualcomm 专有软件组成。

下图显示了用户空间和内核空间组件如何通过套接字接口进行交互。在用户空间中，示例测试应用程序与 BlueZ 蓝牙守护进程交互以运行蓝牙功能。

<Frame caption="图：蓝牙软件架构和组件">
  <img src="https://mintcdn.com/qualcomm-staging/uWQLnBcS9sxlZhgB/Technologies/Bluetooth/media/qli-bt/bluez-architecture.png?fit=max&auto=format&n=uWQLnBcS9sxlZhgB&q=85&s=cc1e5ffcb64780c900a4c7c6123a0d57" alt="蓝牙解决方案的软件架构和组件。" width="1070" height="1063" data-path="Technologies/Bluetooth/media/qli-bt/bluez-architecture.png" />
</Frame>

蓝牙软件架构由用户空间、内核空间和蓝牙控制器组成。

## 用户空间组件

用户空间包括以下蓝牙应用程序、守护进程和接口层。

<table>
  <thead>
    <tr><th>组件</th><th>描述</th></tr>
  </thead>

  <tbody>
    <tr><td>蓝牙守护进程（bluetoothd）</td><td><ul><li>中央守护进程。</li><li>包含面向用户界面和其他子系统的数据总线（DBUS）接口。</li><li>减少对底层细节的暴露。</li><li>可通过插件扩展。</li></ul></td></tr>
    <tr><td>bluetoothctl</td><td><ul><li>用于验证蓝牙功能的测试工具。</li><li>提供使用命令行界面（CLI）进行验证的选项。</li></ul></td></tr>
    <tr><td>mpris-proxy</td><td><ul><li>用于媒体播放器远程接口规范（MPRIS）的代理 DBUS 服务。</li></ul></td></tr>
    <tr><td>obexctl</td><td><ul><li>用于验证对象交换协议（OBEX）功能的测试工具。</li></ul></td></tr>
    <tr><td>OBEX 守护进程（obexd）</td><td><ul><li>OBEX 规范的守护进程。</li><li>包含面向用户界面的 DBUS 接口。</li></ul></td></tr>
    <tr><td>ofono</td><td><ul><li>为 HFP 提供测试应用程序。</li><li>搜索调制解调器，然后启用 HFP 音频网关角色。</li></ul></td></tr>
    <tr><td>ofono-tests</td><td>提供执行以下功能的选项：<ul><li>拨号</li><li>接听</li><li>创建多方通话</li><li>保持并接听</li><li>切换</li><li>挂断通话</li></ul></td></tr>
    <tr><td>PipeWire</td><td><ul><li>用于可移植操作系统接口（POSIX）的声音服务器。</li><li>便于对在应用程序和硬件之间传递的声音数据执行高级操作。</li></ul></td></tr>
  </tbody>
</table>

## 内核空间组件

内核空间包括以下核心组件和驱动程序。

<table>
  <thead>
    <tr><th>组件</th><th>描述</th></tr>
  </thead>

  <tbody>
    <tr><td>蓝牙管理（btmgmt）</td><td><ul><li>使用户空间能够控制内核操作。</li><li>支持 GAP 功能，例如适配器设置、设备发现和设备配对。</li></ul></td></tr>
    <tr><td>BlueZ 主机控制接口（HCI）核心</td><td><ul><li>通过原始套接字在用户空间 HCI 组件和 Qualcomm 蓝牙驱动程序之间发送和接收 HCI 命令/事件。</li></ul></td></tr>
    <tr><td>HCI</td><td><ul><li>蓝牙协议栈中的一层。</li><li>定义主机与蓝牙无线电控制器必须如何交互。</li></ul></td></tr>
    <tr><td>逻辑链路控制和适配协议（L2CAP）</td><td><ul><li>将大数据包拆分为较小的帧进行传输。目标组件重新组装这些帧。</li><li>处理服务质量（QoS）要求。</li></ul></td></tr>
    <tr><td>Qualcomm 蓝牙驱动程序</td><td><ul><li>处理蓝牙通用输入/输出（GPIO）配置。</li><li>启用或禁用稳压器以打开或关闭芯片。</li><li>在蓝牙开启序列期间处理蓝牙补丁和非易失性数据的下载。</li></ul></td></tr>
    <tr><td>射频通信（RFCOMM）</td><td><ul><li>创建可靠的基于流的通道。</li><li>拥有 30 个端口。相比之下，传输控制协议（TCP）拥有 65,535 个端口。</li><li>每个 RFCOMM 连接由一个 L2CAP 连接封装。</li></ul></td></tr>
    <tr><td>会话描述协议（SDP）</td><td><ul><li>为客户端应用程序提供发现服务器应用程序所提供现有服务的手段。</li><li>提供服务属性，包括所提供服务的类型或类别，以及使用该服务所需的机制或协议信息。</li></ul></td></tr>
    <tr><td>SLIMbus 蓝牙驱动程序</td><td><ul><li>为蓝牙音频用例配置、打开和关闭 SLIMbus 端口。</li></ul></td></tr>
    <tr><td>同步面向连接（SCO）</td><td><ul><li>蓝牙中的一种数据链路类型。</li><li>提供中央设备与单个外围设备之间点对点连接的链路。</li></ul></td></tr>
    <tr><td>通用异步收发器（UART）串行驱动程序</td><td><ul><li>电传打字机（TTY）串行驱动程序，便于与蓝牙控制器通信。</li></ul></td></tr>
  </tbody>
</table>

## 蓝牙控制器组件

蓝牙控制器组件包括链路管理协议（LMP）、链路控制器、基带以及连接芯片组的 RF 系统。
