問題タブ [btle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wireshark - ubertooth-btle による ATT パケットなし
端末に次のように入力して、携帯電話とスマート電球の間の Bluetooth 接続を盗聴しようとしています:$ubertooth-btle -f -t @MAC -c smartbulb.pcap.
問題は、ATT パケットがないことです。携帯電話で電球の色を変更している間だけADV_IND
、パケットを取得します。SCAN_REQ
バージョン情報 Ubuntu 18.04
Ubertooth ツール バージョン (ubertooth-rx -V): libubertooth 1.0 (2017-03-R2)、libbtbb 1.0 (2017-03-R2)
Ubertooth ファームウェア バージョン (ubertooth-util -v): ファームウェア バージョン: 2017-03-R2 (API:1.02)
bluetooth - BLE アドバタイズメントが既に有効になっているかどうかを確認する方法 (HCI)
HCI_LE_Set_Advertising_Enable コマンドが成功した場合はステータスを返し、コマンドが失敗した場合はステータス コード[2]HCI_LE_Set_Advertising_Enable
を返す [1] コマンドを使用して、BLE アドバタイジングを有効にすることができます。0x00
0x01 to 0xFF
広告が既に有効になっている場合 (たとえば、Advertising_Enable
パラメータを に設定してこのコマンドを 2 回呼び出す0x01
)、このコマンドまたはHCI_LE_Set_Advertising_Data
コマンドは status を返します0x0C (Command Disallowed)
。
これには (少なくとも) 2 つの問題があります。
すでに有効になっている広告を有効にすると、ランダム アドレスが変更される可能性があります。すでに無効になっている広告を無効にしても効果はありません。[1]
- BlueZ スタックには、ほとんどの HCI ライブラリ関数の最後に次のコードが含まれています。
これにより、たとえば
hci_le_set_advertise_enable
、関数が一般的な失敗コードを返し-1
、 に設定さerrno
れますEIO
。これは、他の BlueZ エラー、HCI エラー、または実際の IO エラー (HCI レイヤーは UART を使用) と区別できません。
安全/厳密なエラー処理を実行できるように、LE アドバタイズメントが既に有効になっているかどうかを確認する方法は? BT Core Specs にGet Advertising Statusのコマンドが見つかりません。私は何かに頼ることはできません
ありがとうございました。
参考文献:
- [1] BT CS 5.2 [Vol 4] パート E、セクション 7.8.9
- [2] BT CS 5.2 [Vol 1] パート F、コントローラ エラー コード