はじめに
LinuxでBluetoothのHCIスヌープログを取得する方法をまとめました。
※Androidで取得する方法もあります → https://qiita.com/KentaHarada/items/42ed619e8f571d1de845
確認環境
- Ubuntu 22.04.2 LTS
- Thinkpad X260
- WireShark v3.6.2
Bluetooth HCIスヌープログとは?
HCI(Host Controller Interface)はBluetoothのプロトコルの一種で
BluetoothプロトコルスタックとBluetoothのチップ間のプロトコルです。
エアーを飛んでいるパケットとは異なりますが、高価なアナライザーを用いずにBluetoothの低レイヤの解析を行うことができます。
どんな時に使うの?
Bluetoothデバイスの接続不良などの問題解析に使うことがあります。
例えば・・・
- LEのAdvertiseのデータが飛んでいない
- 接続したけどすぐに切断されてしまう
といったシチュエーションで使うことが多いです。
1. WireSharkをインストールする
取得したログを解析するために使うソフトウェアです。以下のコマンドでインストールします。
$ sudo apt install wireshark
2. Bluetoothをオンする
Ubuntuの設定画面からBluetoothをオンにします。
3. HCIスヌープログの取得
btmon
コマンドでログの取得を開始します。指定したファイルの中にログが記録されます。
$ sudo btmon -i hci0 -w hcidump.log
4. ログを取りたいBluetoothの操作を行う
Linux端末とBluetooth機器を使って目的のログを取るための操作を行います。
5. 取得したログの確認
コマンド btmon -r
でログを確認することができます。
$ btmon -r hcidump.log
6. Wiresharkでログを確認する
取得したログが時系列で表示されます。
ログの詳しい意味を知りたい時は Bluetooth Core Spec を参照してください。