Android 8.0(oreo)は以下を参考にしてください。
https://mozy-ok.hatenablog.com/entry/2018/12/21/003226
Androud 10以降はこちらの記事を参考にしてください。
https://qiita.com/KentaHarada/items/42ed619e8f571d1de845
はじめに
Android端末でBluetoothのHCIのログを取得する方法をまとめました。
HCI(Host Controller Interface)はBluetoothのプロトコルの一種で
BluetoothプロトコルスタックとBluetoothのチップの間のプロトコルです。
環境
- Galaxy feel(Android 7.0)
- Android Sutdio 3.0.1
- Android Debug Bridge version 1.0.39
- Wireshark 2.0.13
1. Wiresharkをインストールする
Wiresharkでログを解析するので、先にインストールしておきます。
Wireshark の使い方
2. ADBコマンドを使えるようにする
こちらの記事をご覧ください
ADBコマンドの導入方法
3. Android端末の開発者モードをONにする
こちらの記事をご覧ください
Android端末の開発者モードをONにする方法
4. PCとAndroid端末をUSBケーブルで接続する
5. USBデバッグをONにする
6. BluetoothをONにする
設定->接続->Bluetooth
※ Androidの機種によってメニューの場所が異なります。
7. Bluetooth HCIスヌープログをONにする
ONにするとHCIログが端末内に保存され続けます。
ログの取得が終わったらOFFにしておかないと、ログがどんどん大きくなるので注意。
8. ログファイルの保存場所を確認する
adbコマンドを使ってログ・ファイルがどこに保存されているのか確認します。
bt_stack.confというBluetoothプロトコル・スタックのコンフィグファイルの中に記載されています。
※Androidの機種によってログファイルの保存場所が異なります
$ adb shell cat /etc/bluetooth/bt_stack.conf
# Enable BtSnoop logging function
# valid value : true, false
BtSnoopLogOutput=true
# BtSnoop log output file
BtSnoopFileName=/sdcard/Android/data/btsnoop_hci.log ★これがHCIスヌープログ!
# Preserve existing BtSnoop log before overwriting
BtSnoopSaveLog=true
確認に使ったAndroid端末では、ここが保存場所でした。
/sdcard/Android/data/btsnoop_hci.log
9. ログを取りたいBluetoothの操作を行う
Android端末とBluetooth機器を使って目的のログを取るための操作を行います。
(ペアリング、接続、切断、データ送受信等)
今回は例としてAndroid端末でペアリング(Numeric Comparison)をしてみました。
10. Android端末からログを取り出す
さきほど確認したログの保存場所からログを取り出します。
$ adb pull /sdcard/Android/data/btsnoop_hci.log