> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.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-prod/PyJ823JBh-_RDtS4/Technologies/Bluetooth/media/qli-bt/bluez-architecture.png?fit=max&auto=format&n=PyJ823JBh-_RDtS4&q=85&s=25dae5e5dda53936c9c3cf3d9a4d0c89" 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 系统。
