基于snooplog分析蓝牙连接过程,进一步学习蓝牙协议栈

一:什么是BT snoop log

首先问题:
1.为什么远端发来的消息没有收到?
2.为什么搜索不到设备
3.为什么连不上?
4.。。。。。。
总之,研发过程中会遇到很多奇奇怪怪的问题,我们无法通过现象去分析原因,也不可能再过一遍代码吧,这时候需要再某些代码节点设置信息打印(万能的printf),当程序代码走到这一步,要打印个信息出来告知:老子执行到这里了;到我这里执行不下去,出错了。。。

这些就是log,回到正题,除了开发自定义的打印信息,Android蓝牙中有一个很重要的debug方式就是btsnoop.log,这个log是蓝牙协议栈自己生成的,只列出了协议栈收发的消息,如果是其他的原因如丢包,涉及空口,则需要sniff log来分析,具体大家自行看下Ellisys的抓包分析

这个log记录的是host和controller的通信内容,也就是HCI层面(下面再讲)的东西,不涉及到其他层
Host:就相当与上层的应用层,协议栈
Controller:就相当于底层的芯片部分了
所以这部分的log就是类似:上面的APP要做什么事情比如相机要打开摄像头,他要跟底层的通信,告诉下面的硬件,然后硬件答复OK,这时候摄像头就打开了
–Are you OK?
–I’m fine thanks!and you

**

二:怎么抓取snoop log

**
Android手机进入开发者选项,打开蓝牙HCI日志,就会生成log,操作下蓝牙配对连接、放歌通话,log会持续打印,生成一份snooplog,一般mtk芯片的手机都放在根目录下的mtklog文件夹里面,高通的就不太好找,如果都找不到,可以用以下命令
adb shell cat /etc/bluetooth/bt_stack.conf
就能找到btsnoop_hci.log/btsnoop_hci.caf的保存路径
在这里插入图片描述

三:分析log

1.工具
(1)Wireshark
下载:https://www.wireshark.org/download.html
(2)Frontline 的Capture File Viewer
下载:https://www.fte.com/products/default.aspx
偏好Frontline

2.导入文件
在这里插入图片描述
等待一下加载完成,点击第二给放大镜图标
然后就进入了如图:
在这里插入图片描述
左边这部分就是封包的内容信息,右边就是各种包,准确讲应该叫协议帧
工具还区分了各种协议

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值