android8.1系统连接不上BLE蓝牙设备问题解决

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
+//#ifndef BLE_PRIVACY_SPT
 #define BLE_PRIVACY_SPT TRUE
-#endif
+//#endif
 
 /*
  * Enables or disables support for local privacy (ex. address rotation)
  */
-#ifndef BLE_LOCAL_PRIVACY_ENABLED
-#define BLE_LOCAL_PRIVACY_ENABLED TRUE
-#endif
+//#ifndef BLE_LOCAL_PRIVACY_ENABLED
+#define BLE_LOCAL_PRIVACY_ENABLED FALSE
+//#endif

即保证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就可以。

如有疑问或觉得有不对的地方,欢迎指出,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值