# 验证 Fluoride 协议栈的功能

Source: [https://docs.qualcomm.com/doc/80-70015-13SC/topic/bluetooth_usecases.html](https://docs.qualcomm.com/doc/80-70015-13SC/topic/bluetooth_usecases.html)

蓝牙 Fluoride 协议栈支持定制，并提供高级功能以提高性能和改进用户体验。

要在套件上启用 Fluoride 协议栈，执行以下操作：

1. 应用以下补丁：
    - 补丁 1：

            diff --git a/recipes-products/packagegroups/packagegroup-qcom-multimedia.bb b/recipes-products/packagegroups/packagegroup-qcom-multimedia.bb
            index ef98b0b..197724b 100644
            --- a/recipes-products/packagegroups/packagegroup-qcom-multimedia.bb
            +++ b/recipes-products/packagegroups/packagegroup-qcom-multimedia.bb
            @@ -19,6 +19,7 @@
             
             RDEPENDS:${PN}:append:qcom-custom-bsp = "\
                 packagegroup-qcom-audio \
            +    packagegroup-qcom-bluetooth \
                 packagegroup-qcom-camera \
                 packagegroup-qcom-display \
                 packagegroup-qcom-fastcv \
            Copy to clipboard
    - 补丁 2：

            diff --git a/conf/machine/qcm6490-idp.conf b/conf/machine/qcm6490-idp.conf
            index 120ae42..da6084b 100644
            --- a/conf/machine/qcm6490-idp.conf
            +++ b/conf/machine/qcm6490-idp.conf
            @@ -19,13 +19,13 @@
             # Additional dtbo to overylay on top of kernel devicetree files
             KERNEL_TECH_DTBOS[qcm6490-addons-idp] = " \
                 qcm6490-graphics.dtbo qcm6490-display.dtbo \
            -    qcm6490-camera-idp.dtbo \
            +    qcm6490-camera-idp.dtbo qcm6490-bt.dtbo \
                 qcm6490-wlan-rb3.dtbo qcm6490-video.dtbo \
                 qcm6490-wlan-upstream.dtbo \
                 "
             KERNEL_TECH_DTBOS[qcm6490-addons-idp-amoled] = " \
                 qcm6490-graphics.dtbo qcm6490-display-idp-amoled.dtbo \
            -    qcm6490-camera-idp.dtbo \
            +    qcm6490-camera-idp.dtbo qcm6490-bt.dtbo \
                 qcm6490-wlan-rb3.dtbo qcm6490-video.dtbo \
                 qcm6490-wlan-upstream.dtbo \
                 "
            @@ -35,6 +35,7 @@
             KERNEL_TECH_DTBO_PROVIDERS:qcom-base-bsp = ""
             
             KERNEL_TECH_DTBO_PROVIDERS = "\
            +    btdevicetree \
                 cameradtb \
                 displaydevicetree \
                 graphicsdevicetree \
            diff --git a/conf/machine/qcm6490.conf b/conf/machine/qcm6490.conf
            index 2e3de70..f318ba5 100644
            --- a/conf/machine/qcm6490.conf
            +++ b/conf/machine/qcm6490.conf
            @@ -23,22 +23,23 @@
                                   "
             
             # Additional dtbo to overylay on top of kernel devicetree files
            -KERNEL_TECH_DTBOS[qcm6490-addons-idp] = "qcm6490-graphics.dtbo qcm6490-display.dtbo qcm6490-camera-idp.dtbo qcm6490-wlan-idp.dtbo qcm6490-video.dtbo qcm6490-wlan-upstream.dtbo"
            -KERNEL_TECH_DTBOS[qcm6490-addons-idp-amoled] = "qcm6490-graphics.dtbo qcm6490-display-idp-amoled.dtbo qcm6490-camera-idp.dtbo qcm6490-wlan-idp.dtbo qcm6490-video.dtbo qcm6490-wlan-upstream.dtbo"
            -KERNEL_TECH_DTBOS[qcs6490-addons-rb3gen2] = "qcm6490-graphics.dtbo qcm6490-wlan-rb3.dtbo qcm6490-display-rb3.dtbo qcm6490-video.dtbo qcm6490-wlan-upstream.dtbo"
            -KERNEL_TECH_DTBOS[qcs6490-addons-rb3gen2-video-mezz] = "qcm6490-graphics.dtbo qcm6490-camera-rb3.dtbo qcm6490-display-rb3.dtbo qcm6490-wlan-rb3.dtbo qcm6490-video.dtbo qcm6490-wlan-upstream.dtbo"
            -KERNEL_TECH_DTBOS[qcs6490-addons-rb3gen2-vision-mezz] = "qcm6490-graphics.dtbo qcm6490-camera-rb3.dtbo qcm6490-display-rb3.dtbo qcm6490-wlan-rb3.dtbo qcm6490-video.dtbo qcm6490-wlan-upstream.dtbo"
            +KERNEL_TECH_DTBOS[qcm6490-addons-idp] = "qcm6490-graphics.dtbo qcm6490-display.dtbo qcm6490-camera-idp.dtbo qcm6490-bt.dtbo qcm6490-wlan-idp.dtbo qcm6490-video.dtbo qcm6490-wlan-upstream.dtbo"
            +KERNEL_TECH_DTBOS[qcm6490-addons-idp-amoled] = "qcm6490-graphics.dtbo qcm6490-display-idp-amoled.dtbo qcm6490-camera-idp.dtbo qcm6490-bt.dtbo qcm6490-wlan-idp.dtbo qcm6490-video.dtbo qcm6490-wlan-upstream.dtbo"
            +KERNEL_TECH_DTBOS[qcs6490-addons-rb3gen2] = "qcm6490-graphics.dtbo qcm6490-wlan-rb3.dtbo qcm6490-display-rb3.dtbo qcm6490-bt.dtbo qcm6490-video.dtbo qcm6490-wlan-upstream.dtbo"
            +KERNEL_TECH_DTBOS[qcs6490-addons-rb3gen2-video-mezz] = "qcm6490-graphics.dtbo qcm6490-camera-rb3.dtbo qcm6490-display-rb3.dtbo qcm6490-wlan-rb3.dtbo qcm6490-bt.dtbo qcm6490-video.dtbo qcm6490-wlan-upstream.dtbo"
            +KERNEL_TECH_DTBOS[qcs6490-addons-rb3gen2-vision-mezz] = "qcm6490-graphics.dtbo qcm6490-camera-rb3.dtbo qcm6490-display-rb3.dtbo qcm6490-wlan-rb3.dtbo qcm6490-bt.dtbo qcm6490-video.dtbo qcm6490-wlan-upstream.dtbo"
             KERNEL_TECH_DTBOS[qcs6490-addons-rb3gen2-ptz-mezz] = ""
             KERNEL_TECH_DTBOS[qcs6490-addons-rb3gen2-ia-mezz] = ""
            -KERNEL_TECH_DTBOS[qcs5430-fp1-addons-rb3gen2] = "qcs5430-graphics.dtbo qcm5430-camera-rb3.dtbo qcs5430-wlan-rb3.dtbo qcm6490-display-rb3.dtbo qcm6490-video.dtbo qcs5430-wlan-upstream.dtbo"
            -KERNEL_TECH_DTBOS[qcs5430-fp1-addons-rb3gen2-vision-mezz] = "qcs5430-graphics.dtbo qcm5430-camera-rb3.dtbo qcs5430-wlan-rb3.dtbo qcm6490-display-rb3.dtbo qcm6490-video.dtbo qcs5430-wlan-upstream.dtbo"
            -KERNEL_TECH_DTBOS[qcs5430-fp1p5-addons-rb3gen2] = "qcs5430-graphics.dtbo qcm5430-camera-rb3.dtbo qcs5430-wlan-rb3.dtbo qcm6490-display-rb3.dtbo qcm6490-video.dtbo qcs5430-wlan-upstream.dtbo"
            -KERNEL_TECH_DTBOS[qcs5430-fp1p5-addons-rb3gen2-vision-mezz] = "qcs5430-graphics.dtbo qcm5430-camera-rb3.dtbo qcs5430-wlan-rb3.dtbo qcm6490-display-rb3.dtbo qcm6490-video.dtbo qcs5430-wlan-upstream.dtbo"
            -KERNEL_TECH_DTBOS[qcs5430-fp2-addons-rb3gen2] = "qcs5430-graphics.dtbo qcm5430-camera-rb3.dtbo qcs5430-wlan-rb3.dtbo qcm6490-display-rb3.dtbo qcm6490-video.dtbo qcs5430-wlan-upstream.dtbo"
            -KERNEL_TECH_DTBOS[qcs5430-fp2-addons-rb3gen2-vision-mezz] = "qcs5430-graphics.dtbo qcm5430-camera-rb3.dtbo qcs5430-wlan-rb3.dtbo qcm6490-display-rb3.dtbo qcm6490-video.dtbo qcs5430-wlan-upstream.dtbo"
            +KERNEL_TECH_DTBOS[qcs5430-fp1-addons-rb3gen2] = "qcs5430-graphics.dtbo qcm5430-camera-rb3.dtbo qcs5430-wlan-rb3.dtbo qcm6490-bt.dtbo qcm6490-display-rb3.dtbo qcm6490-video.dtbo qcs5430-wlan-upstream.dtbo"
            +KERNEL_TECH_DTBOS[qcs5430-fp1-addons-rb3gen2-vision-mezz] = "qcs5430-graphics.dtbo qcm5430-camera-rb3.dtbo qcs5430-wlan-rb3.dtbo qcm6490-bt.dtbo qcm6490-display-rb3.dtbo qcm6490-video.dtbo qcs5430-wlan-upstream.dtbo"
            +KERNEL_TECH_DTBOS[qcs5430-fp1p5-addons-rb3gen2] = "qcs5430-graphics.dtbo qcm5430-camera-rb3.dtbo qcs5430-wlan-rb3.dtbo qcm6490-bt.dtbo qcm6490-display-rb3.dtbo qcm6490-video.dtbo qcs5430-wlan-upstream.dtbo"
            +KERNEL_TECH_DTBOS[qcs5430-fp1p5-addons-rb3gen2-vision-mezz] = "qcs5430-graphics.dtbo qcm5430-camera-rb3.dtbo qcs5430-wlan-rb3.dtbo qcm6490-bt.dtbo qcm6490-display-rb3.dtbo qcm6490-video.dtbo qcs5430-wlan-upstream.dtbo"
            +KERNEL_TECH_DTBOS[qcs5430-fp2-addons-rb3gen2] = "qcs5430-graphics.dtbo qcm5430-camera-rb3.dtbo qcs5430-wlan-rb3.dtbo qcm6490-bt.dtbo qcm6490-display-rb3.dtbo qcm6490-video.dtbo qcs5430-wlan-upstream.dtbo"
            +KERNEL_TECH_DTBOS[qcs5430-fp2-addons-rb3gen2-vision-mezz] = "qcs5430-graphics.dtbo qcm5430-camera-rb3.dtbo qcs5430-wlan-rb3.dtbo qcm6490-bt.dtbo qcm6490-display-rb3.dtbo qcm6490-video.dtbo qcs5430-wlan-upstream.dtbo"
             
             # Recipe providers of above dtbo files.
             KERNEL_TECH_DTBO_PROVIDERS = "\
            +    btdevicetree \
                 cameradtb \
                 displaydevicetree \
                 graphicsdevicetree \
            diff --git a/conf/machine/qcs6490-rb3gen2-core-kit.conf b/conf/machine/qcs6490-rb3gen2-core-kit.conf
            index 9ddbb37..1013df6 100644
            --- a/conf/machine/qcs6490-rb3gen2-core-kit.conf
            +++ b/conf/machine/qcs6490-rb3gen2-core-kit.conf
            @@ -27,15 +27,16 @@
             # Additional dtbo to overylay on top of kernel devicetree files
             KERNEL_TECH_DTBOS[qcs6490-addons-rb3gen2] = " \
                 qcm6490-graphics.dtbo qcm6490-wlan-rb3.dtbo \
            -    qcm6490-display-rb3.dtbo \
            +    qcm6490-display-rb3.dtbo qcm6490-bt.dtbo \
                 qcm6490-video.dtbo qcm6490-wlan-upstream.dtbo \
                 "
             KERNEL_TECH_DTBOS[qcs6490-addons-rb3gen2-hsp] = " \
                 qcm6490-wlan-rb3-hsp.dtbo \
            +    qcm6490-bt-rb3-hsp.dtbo \
                 "
             KERNEL_TECH_DTBOS[qcs5430-fp1-addons-rb3gen2] = " \
                 qcs5430-graphics.dtbo qcm5430-camera-rb3.dtbo \
            -    qcs5430-wlan-rb3.dtbo \
            +    qcs5430-wlan-rb3.dtbo qcm6490-bt.dtbo \
                 qcm6490-display-rb3.dtbo qcm6490-video.dtbo \
                 qcs5430-wlan-upstream.dtbo \
                 "
            @@ -43,7 +44,7 @@
                 "
             KERNEL_TECH_DTBOS[qcs5430-fp2-addons-rb3gen2] = " \
                 qcs5430-graphics.dtbo qcm5430-camera-rb3.dtbo \
            -    qcs5430-wlan-rb3.dtbo \
            +    qcs5430-wlan-rb3.dtbo qcm6490-bt.dtbo \
                 qcm6490-display-rb3.dtbo qcm6490-video.dtbo \
                 qcs5430-wlan-upstream.dtbo \
                 "
            @@ -69,6 +70,7 @@
             KERNEL_TECH_DTBO_PROVIDERS:qcom-base-bsp = ""
             
             KERNEL_TECH_DTBO_PROVIDERS = "\
            +    btdevicetree \
                 cameradtb \
                 displaydevicetree \
                 graphicsdevicetree \
            diff --git a/conf/machine/qcs6490-rb3gen2-industrial-kit.conf b/conf/machine/qcs6490-rb3gen2-industrial-kit.conf
            index 84180d7..5de238c 100644
            --- a/conf/machine/qcs6490-rb3gen2-industrial-kit.conf
            +++ b/conf/machine/qcs6490-rb3gen2-industrial-kit.conf
            @@ -19,6 +19,7 @@
             KERNEL_TECH_DTBO_PROVIDERS:qcom-base-bsp = ""
             
             KERNEL_TECH_DTBO_PROVIDERS = "\
            +    btdevicetree \
                 cameradtb \
                 displaydevicetree \
                 graphicsdevicetree \
            diff --git a/conf/machine/qcs6490-rb3gen2-vision-kit.conf b/conf/machine/qcs6490-rb3gen2-vision-kit.conf
            index 7c6cbef..f47c198 100644
            --- a/conf/machine/qcs6490-rb3gen2-vision-kit.conf
            +++ b/conf/machine/qcs6490-rb3gen2-vision-kit.conf
            @@ -31,21 +31,22 @@
             KERNEL_TECH_DTBOS[qcs6490-addons-rb3gen2-video-mezz] = " \
                 qcm6490-graphics.dtbo qcm6490-camera-rb3.dtbo \
                 qcm6490-display-rb3.dtbo qcm6490-wlan-rb3.dtbo \
            -    qcm6490-video.dtbo \
            +    qcm6490-bt.dtbo qcm6490-video.dtbo \
                 qcm6490-wlan-upstream.dtbo \
                 "
             KERNEL_TECH_DTBOS[qcs6490-addons-rb3gen2-vision-mezz] = " \
                 qcm6490-graphics.dtbo qcm6490-camera-rb3.dtbo \
                 qcm6490-display-rb3.dtbo qcm6490-wlan-rb3.dtbo \
            -    qcm6490-video.dtbo \
            +    qcm6490-bt.dtbo qcm6490-video.dtbo \
                 qcm6490-wlan-upstream.dtbo \
                 "
             KERNEL_TECH_DTBOS[qcs6490-addons-rb3gen2-vision-mezz-hsp] = " \
                 qcm6490-wlan-rb3-hsp.dtbo \
            +    qcm6490-bt-rb3-hsp.dtbo \
                 "
             KERNEL_TECH_DTBOS[qcs5430-fp1-addons-rb3gen2-vision-mezz] = " \
                 qcs5430-graphics.dtbo qcm5430-camera-rb3.dtbo \
            -    qcs5430-wlan-rb3.dtbo \
            +    qcs5430-wlan-rb3.dtbo qcm6490-bt.dtbo \
                 qcm6490-display-rb3.dtbo qcm6490-video.dtbo \
                 qcs5430-wlan-upstream.dtbo \
                 "
            @@ -53,7 +54,7 @@
                 "
             KERNEL_TECH_DTBOS[qcs5430-fp2-addons-rb3gen2-vision-mezz] = " \
                 qcs5430-graphics.dtbo qcm5430-camera-rb3.dtbo \
            -    qcs5430-wlan-rb3.dtbo \
            +    qcs5430-wlan-rb3.dtbo qcm6490-bt.dtbo \
                 qcm6490-display-rb3.dtbo qcm6490-video.dtbo \
                 qcs5430-wlan-upstream.dtbo \
                 "
            @@ -78,6 +79,7 @@
             KERNEL_TECH_DTBO_PROVIDERS:qcom-base-bsp = ""
             
             KERNEL_TECH_DTBO_PROVIDERS = "\
            +    btdevicetree \
                 cameradtb \
                 displaydevicetree \
                 graphicsdevicetree \Copy to clipboard
2. 重新编译整个镜像并按照 *[Qualcomm Linux 编译指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-254/introduction.html)*中所述刷写该映像。

在 Qualcomm Linux 中，使用 btapp 示例测试应用程序验证 Fluoride 协议栈的蓝牙功能。使用此应用程序演示了每个 profile 的蓝牙测试程序和用例。Qualcomm® RB3 Gen 2 开发套件用作测试的硬件参考设备。 
Note: 由于 btapp 是命令行可执行文件，因此在 SSH 中以命令的形式输入具体内容。

以下蓝牙 profile 的功能在 btapp 中以菜单选项的形式提供：

- **[通用访问 Profile](https://docs.qualcomm.com/doc/80-70015-13SC/topic/gap_operation.html)**  

低功耗蓝牙的 GAP 是现有 BR/EDR GAP 的扩展。
- **[串行端口 Profile](https://docs.qualcomm.com/doc/80-70015-13SC/topic/set_up_bluetooth_in_spp.html)**  

SPP 是一种可通过虚拟串行端口实现设备之间的无线通信的蓝牙 profile。
- **[通用属性 Profile](https://docs.qualcomm.com/doc/80-70015-13SC/topic/set_up_ble_gatt.html)**  

GATT 是一种服务框架，该框架使用 ATT 发现设备并读/写对等设备的特征值。
- **[高级音频传输 Profile](https://docs.qualcomm.com/doc/80-70015-13SC/topic/set-up-a2dp.html)**  

A2DP 定义了如何通过蓝牙连接将多媒体音频从一个设备流式传输到另一个设备。这种机制也称为蓝牙音频流。
- **[Hands-Free Profile](https://docs.qualcomm.com/doc/80-70015-13SC/topic/set-up-hfp.html)**  

HFP 定义了音频网关设备如何连接到免提设备以实现远程控制和音频连接等功能。

Last Published: Nov 20, 2024

[Previous Topic
执行蓝牙 MAP 客户端功能](https://docs.qualcomm.com/bundle/publicresource/80-70015-13SC/topics/bluez-perform-bluetooth-map-client-functions.md) [Next Topic
通用访问 Profile](https://docs.qualcomm.com/bundle/publicresource/80-70015-13SC/topics/gap_operation.md)