蓝牙地址的 NV 项是 447 项,蓝牙地址一般从 NV 读取,所以连接上 QXDM,修改 NV447 项就可以修改蓝牙的MAC地址。
最近在高通 QCM6125 平台上,通过 QXDM 修改 BT MAC(NV 447)的时候,发现可以成功修改,但是系统设置-关于手机里的蓝牙address 显示并没有变化,因此怀疑蓝牙 MAC 读取的时候并没有去 NV447 里读取,于是搜索资料看代码发现问题:没有设置 persist.vendor.bluetooth.modem_nv_support 属性,通过设置该属性为 true 可解决。
device/qcom/qssi/system.prop
#set reading BT MAC from NV
persist.vendor.bluetooth.modem_nv_support=true
1. 蓝牙mac地址格式
蓝牙设备地址(BD_ADDR)是一个48bit的唯一标识符,由LAP(24位地址低端部分)、UAP(8位地址高端部分)和NAP(16位无意义地址部分)组成,其格式如下所示:
LSB MSB
|0000 0001 0000 0000 0000 0000|0001 0010|0111 1011 0011 0101|
|<----------(24bit)---------->|<( 8bit)>|<----+(16bit)+---->|
| LAP | UAP | NAP |
NAP和UAP是蓝牙设备生产厂商的唯一标识码,由SIG分配给各个厂商;LAP则由厂商自行分配。
其中,bit40为组播地址标志位,其值为0:unicast(单播),其值为1:multicast(组播);bit