0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

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

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

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

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

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

1抓取HCI log

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

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

wKgaomQaZy2AZk3aAARE5HvWJgc773.jpg

(圖1)

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

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

2、插上USB 藍牙適配器;

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

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

wKgaomQaZy2ASI97AAE2ulr_trA744.jpg

(圖2)

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

wKgaomQaZy2AWF1HAACrUgJUqp8942.jpg

(圖3)

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

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

2過濾HCI log

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

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

wKgZomQaZy2AcUz0AAFr78G_OKk302.jpg

(圖4)

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

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包,通過Core spec中描述的可知HCI數(shù)據(jù)包的前4個字節(jié)為ACL data packet的相關(guān)參數(shù)(圖6)。

wKgZomQaZy2AZmcPAAAljrf32jU748.jpg

(圖6)

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

wKgaomQaZy2ASJVFAABI1vN9IJg236.jpg

(圖7)

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

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

對于SPP的調(diào)試,可以通過如下方式進行:

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

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

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

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

wKgZomQaZy2Ac3c4AAAPyojrw8Q064.jpg

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

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

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

wKgaomQaZy2AQCbWAAH0-r9dC6k733.jpg

(圖8)

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

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

    關(guān)注

    60

    文章

    8150

    瀏覽量

    271106
  • 藍牙
    +關(guān)注

    關(guān)注

    116

    文章

    6042

    瀏覽量

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

    關(guān)注

    7

    文章

    608

    瀏覽量

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

    關(guān)注

    0

    文章

    16

    瀏覽量

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

    關(guān)注

    0

    文章

    29

    瀏覽量

    13237

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

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

收藏 人收藏
  • 浅浅池鱼1

評論

相關(guān)推薦
熱點推薦

解鎖LuatOS-log庫:全棧工程師的日志管理實戰(zhàn)課!

針對全棧開發(fā)者設(shè)計的實戰(zhàn)教程,本文聚焦LuatOS平臺log庫的高效使用,從基礎(chǔ)配置到高級調(diào)試策略,手把手教你搭建可擴展的日志系統(tǒng),提升項目維護效率。 今天,我們一起來認識LuatOS的log
的頭像 發(fā)表于 05-12 15:23 ?797次閱讀
解鎖LuatOS-<b class='flag-5'>log</b>庫:全棧工程師的日志管理實戰(zhàn)課!

三種藍牙架構(gòu)實現(xiàn)方案(藍牙協(xié)議棧方案)

藍牙架構(gòu)實現(xiàn)方案有哪幾種?我們一般把整個藍牙實現(xiàn)方案叫做藍牙協(xié)議棧,因此這個問題也可以這么闡述:藍牙協(xié)議棧有哪些具體的架構(gòu)方案?在藍牙協(xié)議棧
的頭像 發(fā)表于 04-08 15:35 ?550次閱讀
三種<b class='flag-5'>藍牙</b>架構(gòu)實現(xiàn)方案(<b class='flag-5'>藍牙</b>協(xié)議棧方案)

低功耗藍牙經(jīng)典藍牙,到底怎么選?

經(jīng)典藍牙(Bluetooth Classic)和低功耗藍牙(Bluetooth Low Energy),兩者有什么區(qū)別?為什么他們都叫“藍牙”?Bluetooth Low Energy
的頭像 發(fā)表于 04-07 16:01 ?519次閱讀
低功耗<b class='flag-5'>藍牙</b>和<b class='flag-5'>經(jīng)典</b><b class='flag-5'>藍牙</b>,到底怎么選?

藍牙運行不穩(wěn)定的原因?

/tty/ttymxc1/hci0/hci0:64(藍牙) 這些消息非常不穩(wěn)定地出現(xiàn) - 每隔幾秒鐘到每隔幾分鐘 我們已經(jīng)驗證了 bluetooth 模塊使用的 uart 沒有與其他內(nèi)容沖突。我們已嘗試禁用電源管理。根據(jù) dme
發(fā)表于 03-31 06:34

無法在imx8mm-c2板上啟動藍牙,為什么?

= GP_BT_ENABLE; max-speed = <3000000>; }; }; [ 186.437564] 藍牙HCI UART 驅(qū)動程序版本 2.3 [ 186.442064] 藍牙
發(fā)表于 03-31 06:07

低功耗藍牙(BLE)與經(jīng)典藍牙(BR/EDR):技術(shù)對比與應(yīng)用場景解析

藍牙技術(shù)自1994年由愛立信提出以來,已成為無線通信領(lǐng)域的核心技術(shù)之一。隨著物聯(lián)網(wǎng)(IoT)和可穿戴設(shè)備的興起,藍牙技術(shù)分化為兩大分支:經(jīng)典藍牙(Bluetooth Classic B
的頭像 發(fā)表于 03-27 16:06 ?2541次閱讀
低功耗<b class='flag-5'>藍牙</b>(BLE)與<b class='flag-5'>經(jīng)典</b><b class='flag-5'>藍牙</b>(BR/EDR):技術(shù)對比與應(yīng)用場景解析

HarmonyOS NEXT 原生應(yīng)用/元服務(wù)-ArkTS代碼調(diào)試Evaluate and log

Evaluate and log復(fù)選框,并在下方輸入框輸入要打印的表達式。 啟動調(diào)試,使斷點命中,切換到調(diào)試的 Console 窗口,表達式的打印結(jié)果將在這里展示。 本文主要參考與引用自HarmonyOS官方文檔。
發(fā)表于 03-14 16:49

恩智浦解讀Zephyr log系統(tǒng)的使用 Zephyr的shell和log功能介紹

之前 我們從 0 開始新建了一個簡單的 Zephyr 應(yīng)用- 從0開始打造屬于自己的HelloWorld ,本期就 帶著大家熟悉一下 Zephyr 的 shell 和 log 系統(tǒng)。 首先給大家介紹
的頭像 發(fā)表于 02-27 09:19 ?1036次閱讀
恩智浦解讀Zephyr <b class='flag-5'>log</b>系統(tǒng)的使用 Zephyr的shell和<b class='flag-5'>log</b>功能介紹

LOG200評估模塊

電子發(fā)燒友網(wǎng)站提供《LOG200評估模塊.pdf》資料免費下載
發(fā)表于 11-09 14:23 ?0次下載
<b class='flag-5'>LOG</b>200評估模塊

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

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

用U盤記錄系統(tǒng)LOG信息的簡單步驟和方法

? # 01 前言 MCU 組成的系統(tǒng)在實際應(yīng)用中,經(jīng)常需要記錄系統(tǒng) LOG 信息,可以是系統(tǒng)不同任務(wù)執(zhí)行情況的 LOG 信息,也可以是內(nèi)核寄存器等便于維護調(diào)試的信息,或者是傳感器的信息等。 上述
的頭像 發(fā)表于 07-31 10:22 ?1242次閱讀
用U盤記錄系統(tǒng)<b class='flag-5'>LOG</b>信息的簡單步驟和方法

什么是藍牙芯片?

傳輸、數(shù)據(jù)傳輸、位置服務(wù)和設(shè)備網(wǎng)絡(luò)等多個領(lǐng)域,極大地簡化了現(xiàn)代通信設(shè)備之間的通信過程,使數(shù)據(jù)傳輸更加迅速高效。 二、分類與特性 根據(jù)藍牙傳輸標(biāo)準(zhǔn),藍牙芯片主要可分為經(jīng)典藍牙芯片和低功耗
的頭像 發(fā)表于 07-17 16:49 ?2667次閱讀

經(jīng)典藍牙協(xié)議PAN詳解

藍牙 Profile定義了藍牙設(shè)備之間如何進行通信以及實現(xiàn)特定的功能和應(yīng)用場景。正是由于各種Profile的存在拓展出了藍牙豐富的應(yīng)用場景,例如A2DP、HFP、HID等。PAN Profile便提供了
的頭像 發(fā)表于 07-17 09:25 ?5335次閱讀
<b class='flag-5'>經(jīng)典</b><b class='flag-5'>藍牙</b>協(xié)議PAN詳解

經(jīng)典藍牙到低功耗藍牙藍牙音頻設(shè)備將專注于雙模式操作

電子發(fā)燒友網(wǎng)報道(文/莫婷婷)2023年,全球藍牙設(shè)備的出貨量達到50億臺,預(yù)計到2028年將達到75億臺,五年復(fù)合年增長率為8%。藍牙技術(shù)聯(lián)盟表示,過去五年大多數(shù)藍牙設(shè)備都采用雙模式,同時支持
的頭像 發(fā)表于 06-28 01:20 ?4512次閱讀

如何利用經(jīng)典藍牙的bt_spp_acceptor實現(xiàn)藍牙透傳功能?

利用經(jīng)典藍牙的bt_spp_acceptor實現(xiàn)藍牙透傳功能?
發(fā)表于 06-24 07:53

電子發(fā)燒友

中國電子工程師最喜歡的網(wǎng)站

  • 2931785位工程師會員交流學(xué)習(xí)
  • 獲取您個性化的科技前沿技術(shù)信息
  • 參加活動獲取豐厚的禮品