蓝牙耳机打电话流程hci.log解析

Ellisys 使用小技巧 空口抓包仪是蓝牙开发过程中非常有帮助的工具,开发人员可以根据现场抓到的空中包/HCI 更快发现问题所在。本文针对工作中用到的Ellisys抓包仪总结遇到的一些常用技巧以及注意事项。Ellisys抓包仪如下图所示几个型号,都提供一系列功能,实现对蓝牙技术的协议、性能和射频行为进行各种分析和特征描述,用于捕获和分析Wi-Fi、WPAN(IEEE 802.15.4)、主机控制器接口(HCI)标准以及几种有线协议。具体支持哪些协议需要根据实际需要购买,支持的功能不同设备的价格不同。 阅读详情

转载于https://www.jianshu.com/p/05cf5a8e8453

首先 通过工具打开btsnoop_hci.log文件
具体工具可自行搜素
我用的是这一款Frontline Protocol Analysis System

Frontline Protocol Analysis System下载地址

关于Headset信息操作部分可以直接看Hands-Free

先简述一下蓝牙接通电话的流程

蓝牙的音频连接是A2DP协议
语音通话走的是SCO线路
所以在接电话时会把A2DP转化为SCO
为什么需要转SCO呢
因为a2dp协议不支持边播放边上传
SCO全称Synchronous Connection Oriented
这里有一片关于A2DP和SCO的文章不错可以看看
蓝牙物理链路类型:SCO和ACL链路与A2DP

关于Master/Slave

因为HCI是手机侧生成的
Master手机端
Slave耳机端
有的显示为AG/HF
AG手机端
HF耳机端

 

image.png

 

Frame 535 RING 表示已经开始来电,响铃
Frame 538 ATA ATA是耳机同意接听的标志
Frame 539 这个OK是手机端回应耳机我已经知道你同意接听电话了

关于+CIEV, AG向HF汇报自身的状态

比较常见的是:
+CIEV:1,1 接听电话
+CIEV:2,0 当前没有等待的电话需要处理
+CIEV:2,2 拨打电话
+CIEV:2,3 已拨通

Frame 545 +CIEV:1,1 AG有一个电话事件,接听电话
Frame 546 +CIEV:2,0 AG已经没有等待的电话需要处理,意思就是处理完成了

这个时候手机和耳机已经处理完毕接听电话的动作了

下面开始处理语音问题

需要说明的是SCO有两种codec,mSBC和CVSD
Frame 547 +BCS AG向HF查询支持的SCO codec
Frame 554 HF返回支持的codec
Frame 555 AG收到HF回复

下一步就是开始建立SCO连接了

详细内容可以看HCI部分

image.png

Frame 556 设置SCO命令
下面开始执行event
Frame 560 建立 SCO 完毕

目前为止所有交互都已经完成 进入通话

最后挂断电话
Frame 588 HF发出AT命令 +CHUP 挂断电话
Frame 589 AG收到挂断消息
Frame 584 AG汇报自身状态 已经没有电话了
断开SCO在HCI Frame 602

 

disconnect SCO

以上就是整个接听到挂断HCI log流程



 

【蓝牙专题】HCI协议解析 一、概念: 很多人接触蓝牙,是从HCI开始,因为HCI是主机控制接口协议(Host Controller Interface),蓝牙命令通过HCI来发送到Controller; 1、架构 如下图,HCI通过物理接口(USB、UART等)或虚拟接口,传递数据到Controller,Controller也通过同样的接口发送接收数据,这里注意到HCI层是在L2CAP层之下,LMP层之上; HCI 阅读详情

相关推荐

安卓蓝牙日志的获取方法

有过蓝牙调试经历的同学们可能都知道,在安卓系统中,在手机的设置–>开发人员页面下有一个开启蓝牙HCI信息收集日志选项开关,如下图中标红处, 打开该开关,就可以收集本机发送和接收的蓝牙HCI包。蓝牙包的数据会保存在btsnoop_hci.log文件中。 图一 打开蓝牙HCI日志 那么这个文件生成后被放在哪里了呢? 这个不同的手机放的位置可不一样。那么怎么知道我的手机上该文件放在哪呢? 我们可以通过下面的方法来查看。 adb shell cat /etc/bluetooth/bt_stack.con

SACKings的博客 1万+

Android 蓝牙log抓取

注意事项:如果生成的log文件是空的,那么可能是未配置 log 输出。LoggingVModule 这个需要是打开状态,如果是被注释的,将文件修改下push进去替换后,重新抓下蓝牙log即可。高通目前路径是: data/misc/bluetooth/logs/btsnoop_hci.log (仅供参考)3、生成的 btsnoop_hci.log 文件在data目录下(不确定的可以直接在data目录下find下)MTK目前路径是: /data/log/bt/btsnoop_hci.log(仅供参考)

tq501501的博客 6627

【HCI log实战】小米手机蓝牙日志抓取全流程解析

本文详细解析了在小米手机上抓取蓝牙HCI log的全流程。通过开启开发者选项中的蓝牙日志开关,并使用工程代码`*#*#5959#*#*`控制记录,最终可在指定目录获取关键的`btsnoop_hci.log`文件。该日志是蓝牙问题排查的终极武器,能清晰记录所有底层通信命令与事件,帮助开发者精准定位连接失败、音频断续等疑难杂症。

weixin_29268331的博客 762

Bluetooth

蓝牙回连问题的分析_Neoway0401的博客-优快云博客 https://blog.csdn.net/neoway0401/article/details/86661031 蓝牙核心技术概述(四):蓝牙协议规范(HCI、L2CAP、SDP、RFOCMM)(转载) - 焦少 - 博客园 https://www.cnblogs.com/shaobojiao/p/7883536.html htt...

YuhangZeng_的博客 873

【HCI log实战】无需Root!Google Pixel蓝牙问题排查全指南

本文提供了一份无需Root权限的Google Pixel蓝牙问题排查实战指南。详细介绍了如何通过开发者选项启用蓝牙HCI日志捕获,并使用ADB工具导出btsnoop_hci.log文件。通过Wireshark等工具分析日志中的错误事件与协议数据,帮助用户精准定位连接失败、音频卡顿、频繁断开等常见问题的根源,实现自主诊断。

weixin_29174013的博客 459

小米手机蓝牙HCI日志抓取与Wireshark分析实战指南

蓝牙协议栈层次复杂,连接失败、音频断续等问题常需深入HCI层排查。HCI作为主机与控制器间的标准接口,完整记录所有蓝牙交互,是定位协议层问题的关键。通过抓取btsnoop_hci.log并用Wireshark解析,可清晰还原扫描、配对、连接及数据传输全流程,快速识别错误码与参数异常。该技术广泛应用于蓝牙App开发、外设兼容性测试及车机互联等场景。本文以小米手机为例,详解从开发者选项开启日志、复现问题、导出文件到Wireshark分析的完整实操,并分享常见问题排查技巧。

weixin_34413103的博客 330

蓝牙耳机连不上手机?Android HFP连接失败排查指南(附Logcat分析技巧)

本文提供了一份Android手机蓝牙耳机HFP连接失败的深度排查指南。文章从用户界面到硬件驱动,系统性地解析了连接流程的各个层级,并重点介绍了如何利用Logcat日志分析、ADB命令以及HCI日志抓取等专业技巧,精准定位从权限拒绝到协议栈状态卡死等各类问题的根源,帮助用户和开发者高效解决蓝牙通话连接难题。

weixin_29268331的博客 240

Android蓝牙HFP音频连接机制解析与实战优化

本文深入解析了Android系统中蓝牙HFP音频连接的完整机制与实战优化方案。文章从一次典型的蓝牙通话无声故障切入,详细剖析了从应用层到底层协议栈的完整调用链、状态机模型以及异步回调过程。针对开发中常见的连接失败、超时、无声等问题,提供了基于源码和日志的排查思路与深度优化策略,帮助车载系统与蓝牙耳机开发者彻底掌握HFP音频连接技术,提升产品兼容性与用户体验。

nft7creator的博客 863

HFP 建立流程

首先我们应该要知道 蓝牙HFP协议中,根据功能分了两个角色, 一个是AG、一个是HF,AG(Audio Gateway side): 通话音频输入和输出的总管家。简单理解就是能独立通话的设备,例如:手机、平板 (备注:这里说的是普遍设备哈, 其实车机也可以作AG, 但是需要更改蓝牙部分协议开关宏,这种属于特殊修改了)HF(Hand-Free): AG通话音频的输出、输入接口,也可以控制AG, 简单理解就是不能独立进行通话的设备,只能作为通话数据(sco)的输入源和输出口。

qq_65822895的博客 160

车载蓝牙通话链路全解析:从HFP协议到音频路由排查

蓝牙技术已成为智能座舱的核心通信基础,其中车载蓝牙通话链路涉及多个协议与音频路由的协同工作。HFP(免提协议)负责通话连接与指令交互,A2DP承载媒体音频,SCO/eSCO通道则保障实时语音传输。理解这些协议的分工与协作,是排查通话异常的关键。在行车场景中,可靠的通话链路直接影响安全与体验,音频焦点管理、麦克风增益、eSCO链路稳定性都是工程实践的重点。通过抓取HCI日志、检查HeadsetService状态、控制音频路由,开发者和车主都能快速定位“接通无声音”“对方听不清”等常见故障。本文从蓝牙协议原理出

weixin_34262482的博客 403

android 16 蓝牙源码分析

本文分析了Android 16系统中蓝牙开启的完整调用链路,从应用层到硬件驱动的详细流程。当应用调用BluetoothAdapter.enable()后,请求依次经过Framework层、Service层、JNI层、HAL层,最终到达蓝牙协议栈和HCI层。关键步骤包括:BluetoothManagerService处理状态转换,AdapterService初始化蓝牙协议栈,通过JNI调用底层接口,HciHalImpl与硬件交互完成上电。整个过程涉及多线程协作、异步回调、状态机管理等机制,最终通过stack_

zjy764219923的专栏 379

Realtek蓝牙Android10.0移植结束后的基本测试和常见问题分析

Realtek蓝牙Android10.0移植结束后的基本测试当发现问题时候,有对应现象LOG分享可以做排除,常见问题分析

QQ42142951的专栏 1626

车载蓝牙开发避坑指南:从HFP/A2DP到音频路由的实战解析

在无线通信与智能座舱技术快速演进的背景下,蓝牙协议作为连接手机与车机的核心桥梁,其技术实现远不止“连接成功”这么简单。HFP与A2DP分别定义了电话音频和媒体音频的传输通道,而SCO链路的建立质量直接决定了通话是否清晰。理解这些协议的分工与协作原理,是解决车载场景下电话无声、音频切换卡顿、多设备回连异常等难题的基础。本文从Android开发视角切入,介绍蓝牙连接状态监听、SCO通道申请、音频焦点管理及路由决策的关键实现,并结合典型问题给出排查路径与工程优化建议。无论是车机应用开发者、蓝牙外设厂商,还是智能座

weixin_34409357的博客 412

车载蓝牙开发避坑指南:HFP/A2DP/AVRCP等六大协议协同实战

蓝牙技术在智能座舱中远不止配对连接,其本质是一套多协议协同工作的通信系统。HFP保障低延迟语音通话,A2DP承载高保真音频流,AVRCP实现远程控制,PBAP同步联系人,MAP收发短信,BLE连接车载传感器——这些Profile共享HCI底层资源,存在时序依赖、带宽抢占与状态冲突。在Android车载环境中,系统负载、厂商ROM定制、温度EMI干扰及权限模型升级(如BLUETOOTH_CONNECT)进一步放大稳定性风险。本文聚焦真实车机场景下的协议协同机制、HAL层兼容性陷阱与API级绕过方案,覆盖从冷启

weixin_33835103的博客 301

杰理SDK开发-实现首次连接默认通话音量

本章详细讲解杰理SDK中实现首次配对连接后,首次通话时强制通话音量为,之后通话保持用户记忆音量功能。慢慢的干货!!!

李永奉的博客 489

btsnoop_hci.log

这个文件是BLE的HCI log,提供来进行BLE的协议分析,可以通过WireShark或者其他软件来进行分析

Android车载蓝牙六协议协同开发实战指南

蓝牙协议栈是移动与车载系统间通信的基础技术框架,其核心由HFP、A2DP、AVRCP、PBAP、MAP和BLE六大协议构成,分别承载通话、音频流、远程控制、联系人同步、消息收发及低功耗传感等关键功能。这些协议在Android系统中并非统一抽象,而是分层实现于Framework、HAL与Vendor层,各自拥有独立状态机、线程模型与权限边界。技术价值在于保障多协议并行下的时序一致性、资源隔离与错误恢复能力;典型应用场景涵盖智能座舱的语音交互、无感钥匙、胎压监测与多源媒体控制。本文聚焦Android 12+车规

weixin_33795743的博客 313

实战指南:轻松破解DataDome滑块验证码的关键步骤

本文详细介绍了破解DataDome滑块验证码的关键步骤,包括理解其工作原理、准备工作、参数获取与配置、完整破解流程及API调用。通过使用Capsolver服务和模拟真实用户行为,帮助开发者有效绕过这一反机器人机制,同时强调了法律与道德考量。

weixin_30415113的博客 481

Android蓝牙HFP漏洞CVE-2019-2225:从原理到PoC复现的攻防实战

蓝牙技术作为物联网设备无线连接的核心协议,其HFP(Hands-Free Profile)协议定义了音频网关与免提设备间的通信标准,广泛应用于耳机、车载系统等场景。然而,协议设计中对易用性的追求有时会与安全机制产生冲突,例如“Just Works”配对机制允许无屏幕设备免PIN码快速配对,这为潜在的攻击面埋下伏笔。在Android系统中,应用通过标准蓝牙API即可发起设备连接,若结合模糊的用户连接提示,攻击者可在用户无感知下建立HFP连接,进而利用AT命令实现远程拨号甚至通话窃听,这凸显了移动设备在协议栈实

weixin_33912638的博客 549

vue使用 APlayer+Meting实现音乐播放,支持多平台音乐:网易云、腾讯、虾米、酷狗、百度

  我之前写过一篇博客:使用 APlayer 实现音乐播放器,虽然 APlayer 让我实现了想要的音乐播放器效果,但是音频列表 audio 的音频链接、音频封面、歌词等,是需要自己去补充的。   那么这些数据从哪里来呢?   我昨天有发愁一会儿会儿,也去搜了获取音乐列表的接口,可以发请求去获取数据嘛。   也有瞅见MetingJS,A powerful plugin connect APlayer and Meting,一个连接APlayer和Meting的功能强大的插件,附上GitHub地址:https

小R.的博客 4798

Kaamel白皮书:Agent-to-Agent(A2A)隐私安全最佳实践

随着AI智能体架构从单体模型演化为多Agent协同系统,A2A协议为智能生态提供了强大的互操作能力。然而,能力越大,责任亦重。若无完备的隐私保护和安全防护体系,A2A将沦为数据泄露、滥权执行的温床。Kaamel作为专注于泛安全方向的Agent基础设施构建者,呼吁业界将“隐私工程”与“安全编排”作为A2A系统设计的核心前提,共建可信Agent生态,守护智能协同时代的数据主权与系统安全。未来,Kaamel计划发布一套“可信Agent协同蓝图”,涵盖:A2A协议适配Agent SDK工具集;

kaamelai的博客 1598
上一篇: 蓝牙物理链路类型:SCO和ACL链路与A2DP
下一篇: offsetof与container_of宏
小白study
博客等级 码龄12年 658粉丝 25原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值