蓝牙地址问题

[DESCRIPTION]
对蓝牙地址的作用及使用,我们常会有一些疑惑,下面是对其常见问题的汇总。[Branch & Version]下文涉及的NVRAM LID和蓝牙地址均与具体蓝牙芯片有关,请注意区别
[SOLUTION]
蓝牙地址长度为6bytes, 每台蓝牙设备都应有一个唯一的蓝牙地址。目前,蓝牙地址的使用需要向IEEE申请授权使用。
1. 蓝牙芯片的地址怎样获取?
蓝牙地址保存在NVRAM_EF_BTRADIO_MT6601_LID/NVRAM_EF_BTRADIO_MT6611_LID中。当蓝牙Poweron后,NVRAM中的蓝牙地址会读入到蓝牙芯片当中,这样蓝牙芯片就获取了蓝牙地址。
2. xxxxxxxx6601这样的蓝牙地址有可能出现重复
首先需要声明的是xxxxxxxx6601这种默认生成的蓝牙地址是MTK内部测试使用。
蓝牙地址正确的获取途径是向IEEE申请授权使用, 在Download新的BIN档后, 可以通过相应的工具将申请蓝牙地址写入.
但是由于众多厂家没有申请蓝牙地址,或者还申请了但还没有正式写入, 针对这种情况, 我们会给出一个默认的地址,方便内部测试。默认地址具体生成的过程是这样:在第一次蓝牙PowerOn的时候, 如果判断NVRAM中的蓝牙地址的前2个bytes为0x01, 0x66或0x11, 0x66,系统会认为厂家并没有写入自己的蓝牙地址,这时候系统会将蓝牙地址中剩下的4bytes用一组随机数来代替.
这样我们会在Bluetooth->about下看到这样的蓝牙地址xxxxxxxx6601或xxxxxxxx6611.由于随机生成,还是有可能出现地址重复。
3. 蓝牙地址反序
输入的蓝牙地址会以与输入相反的顺序显示,常称反序,这不是系统的BUG.蓝牙地址的显示是遵循Bluetooth的规范(GAP Profile Section 3.2.1)。蓝牙地址6bytes,分为LAP,UAP,NAP三部分,输入时,是从LSB->MSB(LAP UAP NAP),而显示时则为MSB->LSB(NAP UAP LAP).如输入1234567890ab,显示则为ab:90:78:56:34:12.如果需要将蓝牙地址以与输入方式一致的方式显示,可以参考mmi_bt_entry_about函数中蓝牙地址的显示方式(NAP, UAP, LAP),修改为(LAP,UAP,NAP).
4. 蓝牙地址的作用?
蓝牙地址是整个蓝牙系统的基础,它在很多地方会应用到。蓝牙设备间在连接时,蓝牙地址会与输入的PIN组和一起生成Link key;Master的蓝牙地址会用来决定整个Piconet的Physical Channel和Hopping Sequence;在每个Packet前面加入的Access Code,也是来源于蓝牙地址LAP部分。
5.为什么在Meta工具中,使用Mediatek BT Tool修改蓝牙地址后,重启开机,进入Bluetooth->About查看,蓝牙地址没有改变?
a). 在手机的Bluetooth->About 里的蓝牙地址是保存在NVRAM中。蓝牙PowerOn,蓝牙芯片的地址会从NVRAM中对应的LID获取。
b). Meta的Mediatek BT Tool写蓝牙地址不是写到NVRAM,而是直接通过HCI命令写到蓝牙芯片。这样做法是临时改变蓝牙地址。目的是方便蓝牙芯片测试。因为如果该NVRAM,要使蓝牙地址生效,必须是改之后,去Power OFF BT,下次PowerOn的时候又从NVRAM中去读取,才是改之后的地址,这样太复杂。
因此通过Mediatek BT Tool不能永久修改蓝牙地址。
6.怎样永久修改蓝牙地址?
目前有以下方法:
a)AT+EMBT:具体使用方法请参考AT_Command_Full.pdf。
ex. 
• 请用如下AT命令实现蓝牙地址的修改:
• AT+EMBT=1 //poweron bt chip 
• ok
• AT+EMBT=0,bt,1234567890ab //写地址
• ok
• AT+EMBT=2 //退出测试模式
• ok
• AT+EMBT=5 //读取地址 0xab9078563421
b)SN Station Tool(For Production Line). 怎样使用请参考User Manu。
展开阅读全文

没有更多推荐了,返回首页