Bug你别跑:蓝牙无法连接

62 阅读2分钟

问题描述:主端蓝牙吸顶屏侧无法连接到前车机从端IVI蓝牙

调查方向:

1.是芯片问题?(连接耳机、遥控器无问题)---pass

2.是强上电问题?(蓄电池没电, 大电宝搭上启动, 吸顶屏是蓄电池供电) ---pass

3.加载驱动固件有问题?(怀疑: 加载固件patch没成功)----芯片那边怀疑是这问题基于此方向分析

蓝牙无法连接.png 日志btsonnp分析发现 Secure Connections = No

已知的---->前车机蓝牙要求必须支持 Secure Connections = Yes

吸顶屏蓝牙固件中的
HCI Read Local Extended Features -----> Secure Connections  “Yes” 【说明蓝牙加密走的是先进的加密方式】
						|
						|
					       变成
						|
						|
HCI Read Local Extended Features -----> Secure Connections  “No”  【说明蓝牙加密走的是落后的加密方式,默认值就是NO,兼容一些老设备、旧设备】	

拓展:

Secure Connections (安全连接)这是蓝牙4.2版本引入的一项至关重要的安全增强特性。

在Secure Connections出现之前,蓝牙使用的是称为“Legacy Pairing”的配对方式,其加密强度较弱,容易受到攻击。

Secure Connections 引入了:

a.更强大的加密算法:使用基于椭圆曲线密码学的FIPS兼容算法,大大增强了配对过程和后续连接的安全性。

b.抗中间人攻击能力:提供了更强的身份验证,使得中间人攻击变得极其困难。

c.更长的密钥长度:使用256位的椭圆曲线密钥,而旧方法只使用16-24位的PIN码派生密钥。

当你在HCI命令的响应中看到 Secure Connections -----> “Yes” 时,这意味着:你的蓝牙硬件控制器已经明确宣告:它支持蓝牙4.2或更高版本中定义的、更强大的“安全连接”协议。

问题分析:

现有项目table_patch.bin(蓝牙固件中的一个bin)中存在该Secure Connections属性值=Yes,在将这个bin加载到芯片后,蓝牙协议栈回读该属性值=No

深入分析bsp驱动侧在做wifi firmware log收集过程中对wifi&BT的固件做了卸载又加载的过程,然而正常的系统启动时也去将固件做加载动作,这两条线路是并行的,引起二次加载过程中出现向芯片中加载失败情况(当然发现这个情况过程有些曲折,此处忽略)

总结:a正在做x业务,同一时间,b也在做x业务; 这时容易出现问题 解决方案:串行执行a, b业务