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

安卓蓝牙如何查看和分析btsnoop.log 在做BLE的过程中好多人遇到这些问题:1)为什么远端设备发给我的消息我没收到?2)为什么远端设备发给我的消息和我接收到的不一样?3)为什么我的消息发布出去?等等。想要知道为什么,除了经典的logd(万能的printf)之外,Android蓝牙中有一个很重要的debug方式就是btsnoop.log.这个log记录了host与controller通信的全部内容,列出了蓝牙协议栈的各个层的消息通信图谱。 阅读详情
AI摘要

本文详细讲解了Android蓝牙中的btsnoop.log抓取与分析,涉及log原理、如何通过Wireshark和Frontline工具解析,以及蓝牙连接流程、角色转换、SCO链路和Profile服务的执行。

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

【蓝牙协议栈】精讲btsnoop.log概念及作用 `btsnoop.log` 是一个专门用于记录 蓝牙通信数据包的日志文件,它捕获设备中发生的蓝牙协议相关的通信信息。 BTSnoop:这个名称来源于"Bluetooth Snoop"(蓝牙嗅探),表示它通过监听蓝牙堆栈的活动记录所有蓝牙通信数据包。 阅读详情

相关推荐

高通平台实时抓取蓝牙btsnoop的工具及方法说明

高通平台实时抓取蓝牙btsnoop的工具及方法说明,配合Frontline Test System使用。在高通625平台开发板及小米手机上验证可用。

EDSR图像超分辨程序复现(踩坑及解决记录)

EDSR图像超分辨程序复现(踩坑及解决记录)

Sunny_Coder的博客 3642

linux虚拟机和电脑ping通(可上网)

linux虚拟机(Ubuntu)和电脑ping通。

观则明的博客 4117

ArcGIS Pro MCP 开源:自然语言驱动的 AI 制图与分析

人工智能与大模型的快速发展,正推动专业软件从“手动操作”走向“自然语言控制”。模型上下文协议(MCP)作为连接 AI 与外部工具的标准接口,类似为 AI 安装的“USB 接口”,让大模型可以通过统一协议调用 GIS 软件能力。基于 ArcPy 构建的 ArcGIS Pro MCP 项目,将复杂的地图制图与空间分析封装为 112 个可被 AI 调用的工具,使文本指令直接驱动软件完成数据加载、符号化、出图乃至叠加统计等任务。对 GIS 工程师、数据分析师与测绘规划从业者而言,该开源项目显著降低专业软件使用门槛,

weixin_29054195的博客 274

随机森林模型及案例(Python)

1 集成模型简介 集成学习模型使用一系列弱学习器(也称为基础模型或基模型)进行学习,并将各个弱学习器的结果进行整合,从而获得比单个学习器更好的学习效果。 集成学习模型的常见算法有Bagging算法和Boosting算法两种。 Bagging算法的典型机器学习模型为随机森林模型,而Boosting算法的典型机器学习模型则为AdaBoost、GBDT、XGBoost和LightGBM模型。 1.1 Bagging算法简介 Bagging算法的原理类似投票,每个弱学习器都有一票,最终根据所有弱学习器的投

qq_42433311的博客 4万+

史上最小白之RNN详解

1.前言 网上目前已经有诸多优秀的RNN相关博客,但是我写博客的出发点主要是为了加深和巩固自己的理解,所以还是决定自己再进行一下总结和描述,如有不正确的地方欢迎指正~ 2.区分RNN 循环神经网络(Recurrent Neural Network),递归神经网络(Recursive Neural Network),你有没有发现他们的缩写都是RNN,那他们两个是同一回事儿吗?网上有一些博客把这两就当...

Tink1995的博客 4万+

UWB定位进阶:如何利用DW1000的CIR数据做NLOS信号识别?

本文深入探讨了如何利用DW1000芯片的信道脉冲响应(CIR)数据进行非视距(NLOS)信号识别,以提升UWB定位精度。通过分析CIR数据的核心价值、预处理方法、特征提取技术以及机器学习模型构建,为研究人员和工程师提供了实用的解决方案,帮助克服室内定位中的NLOS挑战。

weixin_28729205的博客 474

Hermes Agent 彩蛋大盘点:藏在终端里的浪漫

本文主要介绍了Hermes Agent 彩蛋大盘点:藏在终端里的浪漫,希望能对使用Hermes Agent的同学们有所帮助。 文章目录 1. 前言 2. Spinner 动画 3. Kawaii 表情 4. 思考动词 THINKING_VERBS 5. 皮肤主题 6. 启动 Banner 7. 工具 Emoji 8. 内置人格 9. SOUL.md —— Agent 的灵魂 10. BOOT.md —— 启动自动执行 11. 随机 Tips 12. 统计总览

weixin_43178406的博客 7万+

C#上位机面试必问30题:机器视觉+工业通信+性能优化(含答案解析)

工业通信:围绕“稳定性”展开,重点答异常处理、断线重连、资源释放;机器视觉:围绕“精度+速度”展开,重点答预处理、ROI、参数优化;性能优化:围绕“UI不卡、内存不泄、效率不低”展开,重点答异步、限流、资源复用;面试加分项:结合实际项目案例(如“我在XX项目中用信号量解决了多设备并发卡顿问题”)。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1509

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

下一篇: Wireshark抓包分析WLAN连接过程
多吃青菜少说爱
博客等级 码龄6年 27粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值