蓝牙双 LE 和经典模式标志

Posted

技术标签:

【中文标题】蓝牙双 LE 和经典模式标志【英文标题】:Bluetooth Dual LE and Classic Mode Flags 【发布时间】:2018-01-14 22:43:56 【问题描述】:

在 BLE 的广告部分,蓝牙 SIG 定义“标志”

其中有这些以及更多。

BR/EDR 不支持 将 LE 和 BR/EDR 同步到同一设备(控制器) 同时 LE 和 BR/EDR 到同一设备(主机)

我在不支持 GATT over BR/EDR 的 CSR 芯片组设计上遇到问题。

Apple 运行良好,因为它始终连接到 LE。

..但如果音频已经启动,android 设备会持续尝试通过 BR/EDR 连接 GATT;因此失败,因为 CSR 无法处理 GATT 的 BR/EDR 传输。

我认为这些标志是问题的核心。

在 CSR 的演示代码中,他们没有设置“任何”上述标志。通过设置“不支持”标志,我在某些手机上的问题取得了有限的成功。

问题是另外两个标志。控制器/主机与其他 LE 术语有何关系。例如 Central/Peripheral 或更高版本的 Master/Slave。

我不知道为我的用例设置什么标志。欢迎提出任何建议?

【问题讨论】:

BR/EDR Not Supported 并没有真正的帮助。一旦 Android 注意到还有第二个频道,它似乎就会忽略它。 【参考方案1】:

您可以对所有 LE 操作使用静态随机地址。这样一来,Android 设备就会认为它是与通过蓝牙经典通话时不同的设备,因为它使用公共 BD_ADDR。

或者,connectGatt 的一种变体采用 transport 参数,您可以将其设置为 TRANSPORT_LE 以强制通过 BLE 进行通信。

如果您的设备同时支持 BLE 和 BR/EDR,您应该设置这些标志:

BR/EDR Not Supported=0
Simultaneous LE and BR/EDR to Same Device Capable (Controller)=1
Simultaneous LE and BR/EDR to Same Device Capable (Host)=1

如果标志数据完全丢失,则等同于所有字段为零。

【讨论】:

谢谢,我想了解“主机”和“控制器”部分在这种情况下的含义。 通常您在外部芯片上有一个蓝牙控制器,然后是一台主机(您已将芯片插入主机)。我认为这个想法是第一个标志(控制器)是蓝牙芯片本身是否支持两者,第二个标志是主机上的软件是否支持同时处理。 可能是老了,但是如果BR/EDR not supported bit设置为0,基本上就表示确实支持BR/EDR了? @埃米尔 是的,因为反转逻辑。

以上是关于蓝牙双 LE 和经典模式标志的主要内容,如果未能解决你的问题,请参考以下文章

开启蓝牙 4.0 LE+经典(双模)

什么是双模蓝牙标准

如何从蓝牙 LE 设备获取数据

获取已连接的蓝牙 LE 设备列表

蓝牙 5 PHY 层(适用于所有 4 种模式)

蓝牙 LE 配件的 Airplay 和使用