Android HCI日志分析案例2

案例1--蓝牙音箱电量用完后,配对一直失败,提示PIN码不正确

基于MTK平台,通过MTKLogger开启保存HCI日志

问题定位分析

Android日志查看logcat 搜索到关键log

01-20 10:07:55.403760   978  1075 V bt_stack: [VERBOSE2:btm_inq.cc(2032)] BDA 74:a3:4a:0f:e3:2b
01-20 10:07:55.403878   978  1075 V bt_stack: [VERBOSE2:btm_inq.cc(2035)] Inquire BDA 74:a3:4a:0f:e3:2b
01-20 10:07:55.403948   978  1075 V bt_stack: [VERBOSE1:btm_inq.cc(951)] BTM_InqDbRead: bd addr 74:a3:4a:0f:e3:2b
01-20 10:07:55.403981   978  1075 D bt_btm  : btm_find_dev_type - device_type = 1 addr_type = 0
01-20 10:07:55.404019   978  1075 I bt_btm  : btm_sec_rmt_name_request_complete
01-20 10:07:55.404041   978  1075 D bt_btm  : btm_acl_resubmit_page
01-20 10:07:55.404081   978  1075 I bt_btm  : btm_sec_rmt_name_request_complete PairState: GET_REM_NAME  RemName:   status: 19 State:0  p_dev_rec: 0x9ffc9000 
01-20 10:07:55.404137   978  1075 I bt_btm  : btm_sec_rmt_name_request_complete() continue bonding sm4: 0x0000, status:0x13
01-20 10:07:55.404160   978  1075 I bt_btm  : btm_sec_change_pairing_state()  Old: GET_REM_NAME
01-20 10:07:55.404181   978  1075 I bt_btm  : btm_sec_change_pairing_state()  New: IDLE pairing_flags:0x1
01-20 10:07:55.404336   978  1075 V bt_stack: [VERBOSE1:btm_inq.cc(951)] BTM_InqDbRead: bd addr 74:a3:4a:0f:e3:2b
01-20 10:07:55.404381   978  1075 D bt_btm  : btm_find_dev_type - device_type = 1 addr_type = 0
01-20 10:07:55.404414   978  1075 D bt_btif : btif_transfer_context event 3, len 280
01-20 10:07:55.404527   978  1018 D bt_btif : btif task fetched event a001
01-20 10:07:55.404553   978  1018 D bt_btif : btif_context_switched
01-20 10:07:55.404574   978  1018 I bt_btif : btif_dm_upstreams_evt: ev: BTA_DM_AUTH_CMPL_EVT
01-20 10:07:55.404596   978  1018 D bt_btif : btif_dm_auth_cmpl_evt: bond state=1, success=0, key_present=0
01-20 10:07:55.404619   978  1018 D bt_btif :  btif_dm_auth_cmpl_evt() Authentication fail reason 19

关键日志

01-20 10:07:55.404081   978  1075 I bt_btm  : btm_sec_rmt_name_request_complete PairState: GET_REM_NAME  RemName:   status: 19 State:0  p_dev_rec: 0x9ffc9000

01-20 10:07:55.404619   978  1018 D bt_btif :  btif_dm_auth_cmpl_evt() Authentication fail reason 19

HCI定位分析

根据这些信息,配对是链路层的行为,即在 HCI中搜索

进行搜索

一目了然,看到对端主动断开连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/192003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Stream

什么是Stream? 也叫Stream流,是jdk8开始新增的一套API,可以用来操作集合或者数组的数据 优势:Stream流大量的结合了Lambda的语法风格来编程,提供了一种更加强大,更加简单的方式操作集合或数组中的数据&am…

详解Spring工厂是如何获取Aop中的代理对象的

😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…

Ext4文件系统解析(一)

1、前言 熟悉Linux操作系统的都应该或多或少的了解或者使用过Ext4文件系统。 接下来,会简单介绍Ext4文件系统的一些特性和工作原理。 2、常用概念 在介绍Ext文件系统之前,先简单描述一些相关概念。 块(Block):Ext文件系统存储分配的基本单…

【探索Linux】—— 强大的命令行工具 P.19(多线程 | 线程的概念 | 线程控制 | 分离线程)

阅读导航 引言一、 Linux线程概念1. 什么是线程2. 线程的概念3. 线程与进程的区别4. 线程异常 二、Linux线程控制1. POSIX线程库2. 创建线程 pthread_create() 函数(1)头文件(2)函数原型(3)参数解释&#x…

Spring MVC学习随笔-控制器(Controller)开发详解:控制器跳转与作用域(一)

学习视频:孙哥说SpringMVC:结合Thymeleaf,重塑你的MVC世界!|前所未有的Web开发探索之旅 第五章、SpringMVC控制器开发详解 三 5.1 核心要点 3.流程跳转 5.2 JavaWeb中流程跳转的核心回顾 5.2.1 JavaWeb中流程跳转的核…

网络入门---网络编程初步认识和实践

目录标题 前言准备工作udpserver.hpp成员变量构造函数初始化函数(socket,bind)start函数(recvfrom) udpServer.ccudpClient.hpp构造函数初始化函数run函数(sendto) udpClient.cc测试 前言 在上一篇文章中我们初步的认识了端口号的作用,ip地址和MAC地址在网络通信时…

QT 中 QProgressDialog 进度条窗口 备查

基础API //两个构造函数 QProgressDialog::QProgressDialog(QWidget *parent nullptr, Qt::WindowFlags f Qt::WindowFlags());QProgressDialog::QProgressDialog(const QString &labelText, const QString &cancelButtonText, int minimum, int maximum, QWidget *…

面试 Java 基础八股文十问十答第三期

面试 Java 基础八股文十问十答第三期 作者:程序员小白条,个人博客 ⭐点赞⭐收藏⭐不迷路!⭐ 21.说下Java8的Stream流的常用方法 答: forEach遍历、find、match进行匹配reduce进行归约,比如求和,乘,除聚合…

淘宝用户体验VOC标签体系

本专题共10篇内容,包含淘宝APP基础链路过去一年在用户体验数据科学领域(包括商详、物流、性能、消息、客服、旅程等)一些探索和实践经验。 在商详页基于用户动线和VOC挖掘用户决策因子带来浏览体验提升;在物流侧洞察用户求助时间与…

计算机组成原理笔记——存储器(静态RAM和动态RAM的区别,动态RAM的刷新, ROM……)

■ 随机存取存储器 ■ 1.随机存取存储器:按存储信息的原理不同分为:静态RAM和动态RAM 2.静态RAM(SRAM):用触发器工作原理存储信息,但电源掉电时,存储信息会丢失具有易失性。 3.存储器的基本单元…

springboot监听器模式源码精讲

1.前言 很多时候我们看源码的时候看不下去,其中一个原因是系统往往使用了许多设计模式,如果你不清楚这些设计模式,这无疑增加了你阅读源码的难度。 springboot中就大量使用了设计模式,本文主要介绍其中的一种监听器模式&#xf…

数学建模-基于BL回归模型和决策树模型对早产危险因素的探究和预测

整体求解过程概述(摘要) 近年来,全球早产率总体呈上升趋势,在我国,早产儿以每年 20 万的数目逐年递增,目前早产已经成为重大的公共卫生问题之一。据研究,早产是威胁胎儿及新生儿健康的重要因素,可能会造成死亡或智力体…

深度学习 -- 神经网络

1、神经网络的历史 2、 M-P模型 M-P模型是首个通过模仿神经元而形成的模型。在M-P模型中,多个输入节点对应一个输出节点y。每个输入x,乘以相应的连接权重w,然后相加得到输出y。结果之和如果大于阈值h,则输出1,否则输出0。输入和输出均是0或1。 公式2.1: …

Redis 安装部署

文章目录 1、前言2、安装部署2.1、单机模式2.1.1、通过 yum 安装(不推荐,版本老旧)2.1.1、通过源码编译安装(推荐) 2.2、主从模式2.3、哨兵模式2.4、集群模式2.5、其他命令2.6、其他操作系统 3、使用3.1、Java 代码 —…

神经网络中的 Grad-CAM 热图(Gradient-weighted Class Activation Mapping)

Grad-CAM(Gradient-weighted Class Activation Mapping)是一种用于可视化卷积神经网络(CNN)中特定类别的激活区域的方法。其基本思想是使用网络的梯度信息来获取关于特定类别的空间定位信息。 Grad-CAM 的具体公式如下&#xff1…

Python逐步打造惊艳的折线图

大家好,Matplotlib可以快速轻松地使用现成的函数绘制图表,但是微调步骤需要花费更多精力。今天本文将介绍如何使用Matplotlib绘制吸引人的图表,实现折线图的惊艳变身。 1.数据 为了说明方法,本文使用了包含过去50年各国GDP信息的…

QT 中 QTimer 类 备查

基础 // 指定了父对象, 创建的堆内存可以自动析构 QTimer::QTimer(QObject *parent nullptr);// 根据指定的时间间隔启动或者重启定时器, 需要调用 setInterval() 设置时间间隔 void QTimer::start();// 启动或重新启动定时器,超时间隔为msec毫秒。 void QTimer::…

韩语语法中에和로/으로区别,柯桥发音入门韩语培训学校

에和로/으로在行动的去向与到达或涉及的地点一致时,二者可以互换。 但是에表示到达或涉及的具体地点,而로/으로表示的时动作指向的方向或经过的地点。 在只表示去向而不表示具体地点时,只能用로/으로,而在只表示具体地点而不表示方…

2023.12.2 做一个后台管理网页(左侧边栏实现手风琴和隐藏/出现效果)

2023.12.2 做一个后台管理网页(左侧边栏实现手风琴和隐藏/出现效果) 网页源码见附件,比较简单,之前用很多种方法实现过该效果,这次的效果相对更好。 实现功能: (1)实现左侧边栏的手…

摩根士丹利:人工智能推动增长

摩根士丹利(NYSE:MS)将人工智能战略整合到其财富管理业务中,标志着竞争性金融格局迈出了变革性的一步。该公司的人工智能计划,包括与 OpenAI 合作开发人工智能聊天机器人,促进了其财富部门的显着增长。值得…