OS:Android8.1
platform:px30
问题:在更换完wifi-bt模组进行工厂测试时,发现蓝牙可正常扫描连接经典蓝牙(手机等设备),但是扫描出来的BLE蓝牙设备却连接不上。
在与模组厂商沟通后,排查出应是BLE蓝牙安全机制导致连接失败。
在Android蓝牙协议栈层需调整两个宏的值: 在system/bt/include/bt_target.h中
@@ -660,16 +660,16 @@
* Toggles support for general LE privacy features such as remote address
* resolution, local address rotation etc.
*/
-#ifndef BLE_PRIVACY_SPT
+
#define BLE_PRIVACY_SPT TRUE
-#endif
+
-#ifndef BLE_LOCAL_PRIVACY_ENABLED
-#define BLE_LOCAL_PRIVACY_ENABLED TRUE
-#endif
+
+#define BLE_LOCAL_PRIVACY_ENABLED FALSE
+
即保证BLE_PRIVACY_SPT为TRUE ,BLE_LOCAL_PRIVACY_ENABLED为FALSE。
修改后,发现编译出错,查找原因。发现SDK还有一个地方定义了BLE_PRIVACY_SPT宏。 在device/rockchip/rk3326/bluetooth/bdroid_buildcfg.h中 定义了#define BLE_PRIVACY_SPT FALSE 。 这样验证后,才发现其实是因为在SDK定义了此宏为FALSE才导致连接不上BLE蓝牙设备。
修改有两种方式,第一种,去掉bdroid_buildcfg.h中的定义,直接修改system/bt/include/bt_target.h。 第二种,还原system/bt/include/bt_target.h的修改,通过bdroid_buildcfg.h去配置。 最后保证BLE_PRIVACY_SPT为TRUE ,BLE_LOCAL_PRIVACY_ENABLED为FALSE就可以。
如有疑问或觉得有不对的地方,欢迎指出,谢谢!
|