蓝牙btsnoop log,hci 连接流程详解

1.HCI(HOST CONTROLLER INTERFACE):主机控制层接口

        从字面意思不难理解,是沟通host和controller的接口,每个蓝牙设备都由host和controller组成,host为蓝牙协议栈,controller为厂商封装好的固件,host通过hci下发command给controller,controller返回固件自身信息或从远端controller接收到的信息通过event上报给host,两个设备之间的controller数据交互则为工作中常说的空中包,需要借助空包工具(ellisys frontline)抓取

2.开启蓝牙hci_reset,一般开启蓝牙的第一条command就是hci_reset ,如果不是将会打印hardware error,日常使用遇到蓝牙打不开的小伙伴,可以导出日志看下是不是硬件挂了

3.Command: HCI_Read_BD_ADDR 读取本机地址

4.Command: HCI_Read_Local_Version_Information 读取本机固件蓝牙版本信息

5. Command: HCI_Write_Inquiry_mode,设置inquiry模式 ,返回扫描结果的类型Inquiry_Mode: Inquiry Result with RSSI format or Extended Inquiry Result format,inquiry对于蓝牙来说是去扫描设备,inquiry scan是可以被其它设备扫描到

6.Command: HCI_Write_Page_Timeout 设置page timeout超时时间,page是去连接对方设备,page scan是可以被对方连接,连接失败常见page timeout,超时未连接成功


7. Command: HCI_Read_Local_Name         Command: HCI_Write_Local_Name读写本机设备名

8. Command: HCI_LE_Set_Extended_Scan_Parameters 设置LE设备扫描window和interval,设置中发起的扫描,window被拉满

9.        Command: HCI_Inquiry 发起扫描le和BR/EDR设备都会上报

10.    Event: HCI_LE_Extended_Advertising_Report le设备广播包上报

11.    Event: HCI_Extended_Inquiry_Result   传统设备EIR类型上报扫描结果

12.    Command: HCI_Inquiry_Cancel 取消扫描

13.    Command: HCI_Delete_Stored_Link_Key 取消配对删除link

14.    Command: HCI_Remote_Name_Request 读取对端蓝牙设备名称

15.    Command: HCI_Create_Connection 主动创建连接,主动发起连接的设备做master

16.    Event: HCI_Connection_Complete 连接完成,ACL建立成功,Connection_Handle为链路标识
 

17.        Command: HCI_Read_Remote_Version_Information         Event: HCI_Read_Remote_Version_Information_Complete  读取对端信息,event返回厂商,固件版本,蓝牙版本信息

18.        Command: HCI_Authentication_Requested 发起连接认证请求
19.        Event: HCI_Link_Key_Request                    请求是否有link

20.        Command: HCI_Link_Key_Request_Negative_Reply      手机端无link key

21.        Event: HCI_IO_Capability_Request   问询手机端io capability
22.        Command: HCI_IO_Capability_Request_Reply  手机端回复        IO_Capability: DisplayYesNo

 23.       Event: HCI_IO_Capability_Response 耳机端回复        IO_Capability: NoInputNoOutput

 24.       Event: HCI_User_Confirmation_Request  耳机端确认连接请求并生成pin码

25.        Command: HCI_User_Confirmation_Request_Reply 手机回复是否确认连接
26.        Event: HCI_Simple_Pairing_Complete  以simple pairing方式配对完成

 27.       Event: HCI_Link_Key_Notification 生成link key,不同于pin码,是蓝牙链路的加密key,可用于解析空包数据

 28.        Event: HCI_Authentication_Complete 蓝牙认证流程结束

后面整理下认证完成后a2dp从SDP开始到音频流建立完成的流程


 

  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
btsnoop_hci.log是一个用于分析蓝牙通信的日志文件。它记录了在Android设备与其他蓝牙设备之间进行的蓝牙通信活动。该日志文件可以用于调试和分析蓝牙连接问题,以及了解蓝牙设备之间的通信细节。 要下载btsnoop_hci.log文件,您需要具有使用ADB(Android调试桥)的权限和设备的root权限。以下是下载btsnoop_hci.log文件的步骤: 1. 首先,确保您的Android设备已连接到计算机上,并且具有root权限。 2. 在计算机上打开终端或命令提示符,并导航到ADB的安装目录(一般为Android SDK的安装目录)。 3. 输入以下命令来获取设备的列表,并确保您的设备正常连接: ``` adb devices ``` 4. 输入以下命令来切换到设备的shell模式: ``` adb shell ``` 5. 接下来,输入以下命令来停止蓝牙服务: ``` su hcitool cmd 0x03 0x0005 ``` 6. 然后,输入以下命令来启用btsnoop模式: ``` setprop persist.bluetooth.btsnooptrue ``` 7. 重新启动蓝牙服务: ``` service call bluetooth_manager 8 ``` 8. 现在,您可以按下Ctrl + C来停止当前adb shell会话。 9. 接下来,输入以下命令来复制btsnoop_hci.log文件到计算机上的指定目录(例如,桌面): ``` adb pull /sdcard/btsnoop_hci.log /path/to/destination/folder ``` 10. 等待文件复制完成后,您可以在目标文件夹中找到btsnoop_hci.log文件。 请注意,上述步骤中提到的命令可能因设备型号和系统版本而略有不同。此外,获取root权限和使用ADB工具需要一定的技术知识和风险,因此请谨慎操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值