BLEスマート電球のリバースエンジニアリング

TronicというメーカーのLED電球を買った
Smart LED 9 Watts E27 (Screw) Bulbwww.tronic.co.ke

以下の記事の「Reverse Engineering the Bulbs: Bulb 2」以降に従う
blog.wokwi.com
手順は以下

  • AndroidバイスのDeveloper ModeをEnabledにする
  • Developer modeの設定で、Enable Bluetooth HCI snoop logをEnabledにする
  • BLE電球とアプリで通信して履歴を残す。自分の場合はSmart Liteというアプリを使った。

上記によって/sdcard/btsnoop_hci.logというログファイルが生成されるはずだが、自分の場合はできていなかった。
別コマンドでbugreport.txtを生成し、btsnooz.pyというスクリプトでbtsnoop_hci.log相当のファイルを作成する必要がある。
stackoverflow.com

やり方は以下。

  • AndroidとPCを接続し、Bug reportをダンプする。コマンドは`adb bugreport <任意のレポート名>`。

/data/user_de/0/com.android.shell/files/bugrepors以下にログファイルが生成された。

$ adb bugreport report
/data/user_de/0/com.android.shell/files/bugrepor... 0 skipped. 36.9 MB/s (21046682 bytes in 0.544s)
Bug report copied to report.zip
$ adb pull /data/user_de/0/com.android.shell/files/bugreports/bugreport-CPH2199-RKQ1.211103.002-2024-01-04-10-07-42.zip
  • 以下のサイトに従い、Bug reportをBluetooth snoop logファイルに変換する。

source.android.com

https://cs.android.com/android/platform/superproject/+/main:packages/modules/Bluetooth/system/tools/scripts/btsnooz.py

  • スクリプトを用いてログファイルをBluetooth snoop logに変換する。ダブルクリックでWiresharkを開けるように、ログファイルの拡張子は.pcapにした。
$ btsnooz.py bugreport-CPH2199-RKQ1.211103.002-2024-01-04-10-07-42.txt > btsnoop.pcap
  • Wiresharkを起動し、btsnoop.pcapファイルを読み込む

開いたログファイル