0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用HCI log調(diào)試經(jīng)典藍(lán)牙?

泰凌微電子 ? 來(lái)源:泰凌微電子 ? 作者:泰凌微電子 ? 2023-03-22 10:24 ? 次閱讀

泰凌TLSR9系列芯片支持經(jīng)典藍(lán)牙和低功耗藍(lán)牙5.3 各項(xiàng)核心規(guī)范,目前開(kāi)發(fā)者可以基于泰凌提供的協(xié)議棧和參考設(shè)計(jì),開(kāi)發(fā)各種音頻相關(guān)產(chǎn)品,其中包括:雙模低延時(shí)TWS耳機(jī)、雙模低延時(shí)頭戴式耳機(jī),雙模藍(lán)牙音響,雙模藍(lán)牙手表和穿戴類產(chǎn)品等。本文以泰凌雙模低延時(shí)頭戴式耳機(jī)為例,介紹開(kāi)發(fā)產(chǎn)品時(shí)如何抓取、過(guò)濾、分析經(jīng)典藍(lán)牙相關(guān)Profile(以SPP為例),其他Profile也可通過(guò)類似分析SPP的方法進(jìn)行分析。

在調(diào)試開(kāi)發(fā)經(jīng)典藍(lán)牙相關(guān)產(chǎn)品的時(shí)候,往往需要分析Profile流程是否正確,發(fā)出的數(shù)據(jù)包格式是否正常。而市面上抓取BR/EDR數(shù)據(jù)的儀器往往比較昂貴,不像LE可以使用普通的Sniffer抓取。此時(shí)我們可以通過(guò)BT master 設(shè)備成生的HCI log 調(diào)試經(jīng)典藍(lán)牙。

1抓取HCI log

不同系統(tǒng)獲取HCI log的方式有差異,手機(jī)可直接在調(diào)試模式下生成。本文主要介紹在Windows 環(huán)境下通過(guò)USB 藍(lán)牙適配器抓取HCI log的方法。建議使用外部USB 藍(lán)牙適配器,在禁用主板上的藍(lán)牙適配器后,再使用Wire shark抓取外部的USB 藍(lán)牙適配器。

為方便演示,我們?cè)诰幾g雙模低延時(shí)Headset工程前(以下統(tǒng)稱Headset),需要先使能 MY_BT_SPP_ENABLE,再將SPP的Service class ID設(shè)置為 0x1101(修改為圖1所示即可)。

wKgaomQaZy2AZk3aAARE5HvWJgc773.jpg

(圖1)

修改完成后,將生成好的固件燒錄到EVB(C1T213A20_V1.3),再進(jìn)行如下動(dòng)作:

1、打開(kāi)Wire shark,將USBPcap1 設(shè)置為“Capture from newly connected device”;

2、插上USB 藍(lán)牙適配器;

*注意:這兩步很關(guān)鍵,否則可能抓取的數(shù)據(jù)無(wú)法解析,或者解析不完整。

執(zhí)行完如上兩步,可以看到藍(lán)牙適配器已枚舉完成(圖2)。

wKgaomQaZy2ASI97AAE2ulr_trA744.jpg

(圖2)

此時(shí)我們?cè)匐p擊 EVB上的SW5讓Headset成為可發(fā)現(xiàn)狀態(tài),在藍(lán)牙的搜索界面中,可以發(fā)現(xiàn)一個(gè)“Game Headset”的耳機(jī)設(shè)備。 連接完成后就可以在藍(lán)牙設(shè)置中看到 Game Headset “Telink Serial_Port Service”(如圖3)。

wKgaomQaZy2AWF1HAACrUgJUqp8942.jpg

(圖3)

在連接上設(shè)備,枚舉到SPP串口后,可使用串口助手進(jìn)行數(shù)據(jù)收發(fā)包。 對(duì)應(yīng)的串口號(hào)為上(圖3)所示COM8。

在進(jìn)行音頻播放、錄音等一系列操作后,可以通過(guò)Wire shark 獲取到完整的HCI log。 在正常使用時(shí),一般是直接導(dǎo)出手機(jī)中的HCI log,此處僅為演示方便。

2過(guò)濾HCI log

抓取到HCI log后,使用Wire shark查找對(duì)應(yīng)Profile的日志,我們可以用到Wire shark的過(guò)濾器過(guò)濾Profile。 常用的過(guò)濾關(guān)鍵字有 bta2dp、btatt、btavctp、btavdtp、btavrcp、bthfp、btsdp、btspp 等。

以HFP為例,當(dāng)需要查看HFP中AG與HF的AT命令流程,可以通過(guò) “bthfp” 過(guò)濾。 如下(圖4)所示,在過(guò)濾器中輸入“bthfp”再回車,即可顯示“HFP”相關(guān)的所有數(shù)據(jù)包。

wKgZomQaZy2AcUz0AAFr78G_OKk302.jpg

(圖4)

由于HFP都是基于rfcomm的,如果我們也同時(shí)希望查看rfcomm 協(xié)議,只需要在過(guò)濾器里面將 HFP與rfcomm通過(guò) “||” 連接即可。 更詳細(xì)的使用方法可查看Wire shark的過(guò)濾器官方文檔說(shuō)明。

3分析HCI 數(shù)據(jù)包

Wire shark中所抓取的HCI CMD 、EVENT、 ACL、Synchronous 、ISO 等,都在 Core spec上有具體的規(guī)范(詳可參考BLUETOOTH CORE SPECIFICATION Version 5.2 | Vol 4, Part E ),以其中一條為例,如(圖5)所示:

wKgZomQaZy2AaUrWAAKGFnAVDwQ512.jpg

(圖5)

可以看到這是一包HCI ACL包,通過(guò)Core spec中描述的可知HCI數(shù)據(jù)包的前4個(gè)字節(jié)為ACL data packet的相關(guān)參數(shù)(圖6)。

wKgZomQaZy2AZmcPAAAljrf32jU748.jpg

(圖6)

而ACL packet Data部分的內(nèi)容為L(zhǎng)2CAP數(shù)據(jù)包,通過(guò) DATA packet format(如圖7)(BLUETOOTH CORE SPECIFICATION Version 5.2 | Vol 3, Part A page 1034 ) 可知HCI ACL data部分前兩個(gè)字節(jié)為L(zhǎng)ength,后兩個(gè)字節(jié)為Channel ID。Channel ID是在L2CAP Connect時(shí)分配的,可以看到Wire shark已提示這是建立的PSM為RFCOMM的L2CAP。而基于L2CAP的上層協(xié)議,Wire shark此時(shí)也已經(jīng)解析完整了。

wKgaomQaZy2ASJVFAABI1vN9IJg236.jpg

(圖7)

關(guān)于Core spec、Profile、Protocol相關(guān)的更多內(nèi)容可以通過(guò)如下鏈接獲取到相關(guān)文檔。

4使用HCI log 調(diào)試SPP

對(duì)于SPP的調(diào)試,可以通過(guò)如下方式進(jìn)行:

1、在電腦連接上Headset后,通過(guò)(圖3)得知SPP的串口號(hào)是 “COM8”;

2、使用串口工具打開(kāi)“COM8”,波特率可以選擇 1000000或115200;

3、使用串口工具發(fā)送幾次“Telink SPP HCI debug Demorn”;

同時(shí),我們也可以在TDB調(diào)試日志里面看到Headset收到的數(shù)據(jù)內(nèi)容為:

wKgZomQaZy2Ac3c4AAAPyojrw8Q064.jpg

這里的16進(jìn)制數(shù)據(jù)轉(zhuǎn)換為ASCII碼后就是如上字符串。

4、抓取完HCI數(shù)據(jù)包后,通過(guò) btrfcomm.channel == x 來(lái)過(guò)濾SPP包。這里的x是我們SPP的rfcomm channel,通過(guò)SDK代碼“#define SPP_CFG_SERVER_CHANNEL 0x04”得知 channel為4;

5、過(guò)濾后得到的數(shù)據(jù)如下(圖8)所示:

wKgaomQaZy2AQCbWAAH0-r9dC6k733.jpg

(圖8)

綜上,在對(duì)規(guī)范性文檔有一定了解的基礎(chǔ)上,配合HCI log,可以協(xié)助我們進(jìn)行藍(lán)牙協(xié)議相關(guān)的開(kāi)發(fā)工作。 最為簡(jiǎn)單的就是流程對(duì)比,如果通過(guò)流程對(duì)比無(wú)果,再利用規(guī)范文檔對(duì)流程進(jìn)行正確性判斷。 如何使用HCI log調(diào)試經(jīng)典藍(lán)牙的方法就講到這里,歡迎大家評(píng)論指正!

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7876

    瀏覽量

    263712
  • 藍(lán)牙
    +關(guān)注

    關(guān)注

    114

    文章

    5751

    瀏覽量

    169596
  • 調(diào)試
    +關(guān)注

    關(guān)注

    7

    文章

    571

    瀏覽量

    33872
  • Log
    Log
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    11304
  • HCI
    HCI
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    12931

原文標(biāo)題:【技術(shù)專欄】如何使用HCI log調(diào)試經(jīng)典藍(lán)牙?

文章出處:【微信號(hào):telink-semi,微信公眾號(hào):泰凌微電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CC256x與HCI命令應(yīng)用說(shuō)明

    電子發(fā)燒友網(wǎng)站提供《CC256x與HCI命令應(yīng)用說(shuō)明.pdf》資料免費(fèi)下載
    發(fā)表于 09-11 09:37 ?0次下載
    CC256x與<b class='flag-5'>HCI</b>命令應(yīng)用說(shuō)明

    如何利用經(jīng)典藍(lán)牙的bt_spp_acceptor實(shí)現(xiàn)藍(lán)牙透?jìng)鞴δ埽?/a>

    利用經(jīng)典藍(lán)牙的bt_spp_acceptor實(shí)現(xiàn)藍(lán)牙透?jìng)鞴δ埽?/div>
    發(fā)表于 06-24 07:53

    esp32支持經(jīng)典藍(lán)牙嗎?

    kconfig里面經(jīng)典藍(lán)牙依賴IDF_TARGET_ESP32,只有esp32支持經(jīng)典藍(lán)牙嗎? \"depends_on\": \"
    發(fā)表于 06-13 06:54

    經(jīng)典藍(lán)牙的LMP的工作原理解析

    藍(lán)牙協(xié)議中,為了更加靈活以及容易實(shí)現(xiàn)多種特性,使用了多協(xié)議,多層級(jí)的設(shè)計(jì),LMP即link manager protocol(鏈路管理器協(xié)議)就是藍(lán)牙協(xié)議中的一個(gè)重要組成部分,本文將對(duì)經(jīng)典藍(lán)
    的頭像 發(fā)表于 06-12 09:01 ?1684次閱讀
    <b class='flag-5'>經(jīng)典</b><b class='flag-5'>藍(lán)牙</b>的LMP的工作原理解析

    ESP32-C6無(wú)法開(kāi)啟uart hci怎么解決?

    開(kāi)發(fā)板:ESP32-C6-DevKitM-1 board esp-idf:V5.2 我們想用esp-idf里的hci示例把ESP32-C6 的uart口作為hci io,來(lái)與pc傳遞hci
    發(fā)表于 06-06 06:16

    解析經(jīng)典藍(lán)牙設(shè)備連接過(guò)程

    隨著越來(lái)越多的經(jīng)典藍(lán)牙設(shè)備應(yīng)用在我們的生活和工作中,該類設(shè)備的使用場(chǎng)景和相關(guān)設(shè)計(jì)也更加豐富。與此同時(shí),泰凌微電子作為藍(lán)牙芯片的源頭廠商,在經(jīng)典藍(lán)牙
    的頭像 發(fā)表于 06-05 09:11 ?1845次閱讀
    解析<b class='flag-5'>經(jīng)典</b><b class='flag-5'>藍(lán)牙</b>設(shè)備連接過(guò)程

    如何使用支持標(biāo)準(zhǔn)藍(lán)牙HCI命令的定制BLE模塊(如 DA14531)來(lái)代替ModusToolbox支持的藍(lán)牙模塊?

    如何使用支持標(biāo)準(zhǔn)藍(lán)牙 HCI 命令的定制 BLE 模塊(如 DA14531)來(lái)代替 Modus Toolbox 支持的藍(lán)牙模塊? 我正在使用 Modus Toolbox 3.2 和 CY8C62x5 MCU 進(jìn)行開(kāi)發(fā)。
    發(fā)表于 06-03 07:05

    經(jīng)典藍(lán)牙模塊和BLE藍(lán)牙模塊點(diǎn)對(duì)點(diǎn)連接方式上的差異

    隨著科技的發(fā)展,藍(lán)牙技術(shù)已經(jīng)成為了我們生活中不可或缺的一部分。在眾多的藍(lán)牙模塊中,經(jīng)典藍(lán)牙模塊和BLE藍(lán)牙模塊是最常用的兩種。它們?cè)诤芏喾矫?/div>
    的頭像 發(fā)表于 05-28 11:58 ?1314次閱讀

    調(diào)試藍(lán)牙模塊時(shí),我們常說(shuō)的AT指令是什么?

    調(diào)試藍(lán)牙模塊時(shí),我們常說(shuō)的AT指令是什么?AT指令是藍(lán)牙模塊與電腦或其他設(shè)備進(jìn)行通信的一種方式,它是基于藍(lán)牙協(xié)議棧的命令集,用于控制藍(lán)牙設(shè)
    的頭像 發(fā)表于 05-24 15:01 ?1646次閱讀

    什么是經(jīng)典藍(lán)牙模塊?

    ? 什么是經(jīng)典藍(lán)牙模塊? 前面我們已經(jīng)就藍(lán)牙模塊的概念做了了解,隨著時(shí)間的推移,產(chǎn)品越來(lái)越智能,需要的藍(lán)牙模塊也就越來(lái)越廣泛,本篇文章我們就一起了解下什么是
    的頭像 發(fā)表于 05-24 14:52 ?424次閱讀
    什么是<b class='flag-5'>經(jīng)典</b><b class='flag-5'>藍(lán)牙</b>模塊?

    藍(lán)牙模塊選經(jīng)典藍(lán)牙還是低功耗藍(lán)牙?

    ? 經(jīng)典藍(lán)牙(classic Bluetooth)和低功耗藍(lán)牙(Bluetooth low energy,簡(jiǎn)稱BLE或者LE),兩者有什么區(qū)別?為什么他們都叫“藍(lán)牙”?Bluetoot
    的頭像 發(fā)表于 05-23 17:57 ?1019次閱讀
    <b class='flag-5'>藍(lán)牙</b>模塊選<b class='flag-5'>經(jīng)典</b><b class='flag-5'>藍(lán)牙</b>還是低功耗<b class='flag-5'>藍(lán)牙</b>?

    經(jīng)典藍(lán)牙的特性有哪些?泰凌微電子SoC芯片在經(jīng)典藍(lán)牙領(lǐng)域的應(yīng)用

    經(jīng)典藍(lán)牙技術(shù)的歷史可追溯到上世紀(jì)90年代,是一種成熟開(kāi)放的短距離無(wú)線通信技術(shù)。其基于藍(lán)牙技術(shù)聯(lián)盟定制的全球性規(guī)范,目前已經(jīng)發(fā)展到最新的藍(lán)牙5.4版本。
    的頭像 發(fā)表于 05-22 10:35 ?757次閱讀
    <b class='flag-5'>經(jīng)典</b><b class='flag-5'>藍(lán)牙</b>的特性有哪些?泰凌微電子SoC芯片在<b class='flag-5'>經(jīng)典</b><b class='flag-5'>藍(lán)牙</b>領(lǐng)域的應(yīng)用

    藍(lán)牙模塊CYW20706上下載應(yīng)用程序到串行閃存失敗了的原因?

    我嘗試在藍(lán)牙模塊CYBT-343026-01(CYW20706)上下載應(yīng)用程序到串行閃存,但失敗了。 第一步是按照 AIROC? HCI UART 控制協(xié)議文檔(見(jiàn)下文)的指示向模塊發(fā)送
    發(fā)表于 03-01 11:59

    鴻蒙開(kāi)發(fā)之【藍(lán)牙HCI藍(lán)牙hld】

    藍(lán)牙的命名來(lái)源于一個(gè)丹麥國(guó)王的名字。藍(lán)牙的核心是短距離無(wú)線電通訊,它的基礎(chǔ)來(lái)自于跳頻擴(kuò)頻(FHSS)技術(shù)。
    的頭像 發(fā)表于 01-30 17:37 ?1118次閱讀

    Realtek藍(lán)牙Android10.0移植結(jié)束后的基本測(cè)試和常見(jiàn)問(wèn)題分析

    同時(shí)提供對(duì)應(yīng)藍(lán)牙問(wèn)題報(bào)告下面的 log,否則可能會(huì)因?yàn)?log信息不足無(wú)法定位問(wèn)題.所以請(qǐng)務(wù)必學(xué)會(huì)抓取下列藍(lán)牙 log 的方法.
    發(fā)表于 11-28 10:58