Biu~笔记:高通蓝牙ADK(37)-- HCI log

       Bui~

       新的一年,新的,新的芯片,新的功能。

       Anyway,先来个新年快乐吧,红包的话,大家点右边按钮自己领哈。

      

       进入正题,在新的S3/S5以及往后新的平台上面,引入了一个新的调试功能。就是标题说的HCI log,他类似air trace那样用来分析蓝牙协议的,这样我们就可以很详细地找到通信协议之间哪个部分出了问题。以前我们都是通过抓包器抓air trace分析的,抓包器一个要几十万,学会这个功能就相当于省了几十万(* ̄︶ ̄)。目前只看到S3/S5及往后新的平台有这个功能,以前的平台也应该不会加了,但是我们也是可以从手机端拿HCI log的,但由于每个系统都有他自己的操作步骤,这部分不好给出一个详细的指导,所以有需要的可以联系我们,手把手教会比较可行(〃'▽'〃)

       以下教学都来着官方文档“80-48873-1”,我就翻译翻译哈(#^.^#)。

       首先有几个必备条件:

  1. 要用usb连接设备,并安装usb驱动(一般装bluesuite和toolkit都是默认安装的),需要打开usb debug功能(如果你能用usb烧录,就跳过这步,不行就参考Biu~笔记:高通蓝牙ADK6.x(2)-- 烧录调试驱动(文档也有介绍用uart来抓,但是小编觉得一般不会这么多此一举,感兴趣的看原文档)
  2. 安装最新的bluesuite或toolkit
  3. 使用ADK22.4或以上版本的代码
  4. 如果需要分析的话,要安装Wireless Protocol suite(WPS)(https://fte.com/support/WPSdownload.aspx?demo=X240&iid=X240)或Wireshark(https://www.wireshark.org/download.html);如果只是抓给别人分析就不需要装了。另外,这两软件是免费的。

       
       完成软件安装之后,就给板子烧录软件。接着,我们需要通过pydbg去使能这个功能,这个可以在MDE里面的pydbg输入

          apps1.fw.call.HciTapStream_ConnectToCDCDevice()

也可以自己调出pydbg去输入这个指令(使用方法可以参考我之前的博文Biu~笔记:高通蓝牙ADK(35)-- 如何让你的客户抓log),指令执行成功会返回TRUE。
       
        这时候我们需要打开电脑的设备管理器,然后查看有没有多出一个串口,没有的话就需要等一会,串口出来后,要记住他是com几。


接下来有两个抓取方式,一种是把抓取的数据直接保存成文件,后续用对应的软件打开即可;另一种是直接输出到分析软件。但是两种方法都需要用到一个程序hcitaplogger.exe(大小写可能不一样),他在bluesuite或toolkit目录下。使用时,运行cmd,输入对应指令。

保存文件方法的参考指令(com4, 2M波特率,保存到当前目录并命名为test):

        FrontLine(WPS):hcitaplogger.exe btsnoop -from \\.\com4 2000000 -to test.cfa

        Wireshark: hcitaplogger.exe pcap -from \\.\com4 2000000 -to test.pcap

输出到分析软件方法的参考指令(com4, 2M波特率):

        Wireshark: hcitaplogger.exe wireshark -from com4 -to testlog

这里单独说下FrontLine(WPS)的指令,因为他需要先打开WPS软件,点击Virtual Sniffing,进入界面之后在左上角点击start record



 

 

然后在WPS的安装目录下,找到liveimport.ini文件,复制他的路径,再输入下面指令

        hcitaplogger.exe liveimport -from \\.\com4 2000000 -to "C:\Program Files (x86)\Teledyne LeCroy Wireless\Wireless Protocol Suite 2.xx\liveimport.ini"

这些指令输入完后,就可以操作复现问题了,操作结束后都是需要在cmd窗口输入q然后回车去停止抓取,FrontLine(WPS)还需要在软件左上角点击stop record。板子停止就需要在pydbg输入apps1.fw.call.HciTapStream_Disconnect(),不会返回结果,但是com口会消失,这样就完成一次HCI log的抓取了。接下来就是对log的分析,这个就不展开说了。

另外还有些其他配置用来筛选数据的,这部分大家可以看原文档,用的最多应该会把设置提到最高,以抓取全部HCI log的等级,在pydbg输入以下指令:

        MySource=apps1.fw.env.var.hciTapPrivateData.src

        apps1.fw.call.SourceConfigure(MySource, 0x1500, 1)

 

        好了,以上是本期博文的全部内容,如有疑问就别在博文下方评论留言了,有什么疑问或想了解的当面和我说(如果你知道我是谁的话ヽ( ̄▽ ̄)و),我会尽量安排上(o´ω`o)و。谢谢大家浏览,我们下期再见。

 

简单是长期努力的结果,而不是起点

                                                 —— 不是我说的

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论