打開藍牙debug hci log


 

 

Android4.2之前抓取hci log都是通過hcidump命令完成的,但是Android4.2 Bluetooth引入了Bluedroid,這是一個新的藍牙協議棧。所以抓取hci log的方法也改變了。

在我的Bluetooth計划里,本來是沒打算寫這篇blog的,但是在留言里看見有人問,所以寫出來分享給那些目前還不會的。

Android 4.2之后, Bluetooth控制hcidump 的寫開關和默認保存的hci log的路徑,以及各種級別的log 開關是在/etc/bluetooth/bt_stack.conf 文件里. 如果你需要hci log,那你首先需要從手機把這個文件adb pull出來,然后修改這個文件的內容,然后adb push回去。文件里你修改的BtSnoopFileName這個值就是你需要的hci log文件路徑。

bt_stack.conf的文件內容如下

# Enable BtSnoop logging function
# valid value : true, false
BtSnoopLogOutput=true //默認是false,如果需要抓取hcidump 的話,改成 true

# BtSnoop log output file
BtSnoopFileName=/sdcard/btsnoop_hci.log //默認寫hcidump 的路徑,btsnoop_hci.log 就是hcidump的log。可以按照你自己的需要修改。



# Trace level configuration
#   BT_TRACE_LEVEL_NONE    0    ( No trace messages to be generated )
#   BT_TRACE_LEVEL_ERROR   1    ( Error condition trace messages )
#   BT_TRACE_LEVEL_WARNING 2    ( Warning condition trace messages )
#   BT_TRACE_LEVEL_API     3    ( API traces )
#   BT_TRACE_LEVEL_EVENT   4    ( Debug messages for events )
#   BT_TRACE_LEVEL_DEBUG   5    ( Full debug messages )
#   BT_TRACE_LEVEL_VERBOSE 6    ( Verbose messages ) - Currently supported for TRC_BTAPP only.

//下面默認值是2,哪個模塊需要抓取更多的log,可以把值改成你想要的.

比如說,你想看各個模塊的log,你就全改成5 Full debug messages
TRC_BTM=5
TRC_HCI=5
TRC_L2CAP=5
TRC_RFCOMM=5
TRC_OBEX=5
TRC_AVCT=5
TRC_AVDT=5
TRC_AVRC=5
TRC_AVDT_SCB=5
TRC_AVDT_CCB=5
TRC_A2D=5
TRC_SDP=5
TRC_GATT=5
TRC_SMP=5
TRC_BTAPP=5
TRC_BTIF=5

 

 

 

 

這里介紹一種在Android上捕獲藍牙數據包的方法

1. 前提

首先你要有一部Android手機 
然后你的Android系統版本要在4.4及以上

我沒有做過Android開發,不清楚開發者們是如何抓藍牙包的 
不過我知道可以使用hcidump來抓取藍牙數據包 
這里並不介紹這種方法(后續可能會去了解一下)

2. 開啟功能

在開發者選項中有一個功能
- [Enable Bluetooth HCI snoop log/啟用藍牙 HCI 信息收集日志]
開啟它

3. 抓包

然后你可以進行各種藍牙操作,結束后的抓包文件就在 
/sdcard/btsnoop_hci.log

將它拷貝出來放在電腦上,就可以用Wireshark直接看了

可以使用比如bthci_acl, btl2cap, bthfp等過濾器來過濾數據包查看你所關心的協議


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM