22

次のコマンドを使用して、BLE アドバタイズメントをブロードキャストする Linux コンピューターがあります。

 sudo hciconfig hci0 up
 sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 00 00 00 00 c5 00 00 00 00 00 00 00 00 00 00 00 00 00
 sudo hciconfig hci0 leadv 3

これはうまく機能しますが、コンピュータは 1 秒に 1 回しか Bluetooth 広告をブロードキャストしません。この頻度を毎秒10回以上に増やしたいと考えています。BlueZ で広告頻度を上げる方法はありますか? それとも、1 秒に 1 回が標準であり、変更できないのでしょうか。コマンド ライン ツールでは不可能な場合は、喜んで C API でこれを行います。

4

1 に答える 1

50

私はそれを理解したと思います。

それ以外の:

sudo hciconfig hci0 up
sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 00 00 00 00 c5 00 00 00 00 00 00 00 00 00 00 00 00 00
sudo hciconfig hci0 leadv 3

これを行う:

sudo hciconfig hci0 up
sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 00 00 00 00 c5 00 00 00 00 00 00 00 00 00 00 00 00 00
sudo hcitool -i hci0 cmd 0x08 0x0006 A0 00 A0 00 03 00 00 00 00 00 00 00 00 07 00
sudo hcitool -i hci0 cmd 0x08 0x000a 01

2 番目の hcitool コマンド (0x08 0x0006) は「LE Set Advertising Parameters. 最初の 2 バイト A0 00 は「最小間隔」です。次の 2 バイト A0 00 は「最大間隔」です。この例では、この設定の粒度は 0.625ms であるため、間隔を 01 00 に設定すると、広告は 0.625ms ごとに送信されるように設定されます. A0 00 に設定すると、広告は 0xA0*0.625ms = 100ms ごとに送信されるように設定されます. 40 06 は、アドバタイズメントを 0x0640*0.625ms = 1000ms ごとに設定します。5 番目のバイト 03 は、アドバタイジング モードを非接続可能に設定します。非接続型アドバタイズメントでは、アドバタイズできる最速は 100ms で、接続可能なアドバタイズメント ( 0x00) より高速にアドバタイズできます。

3 番目の hcitool コマンド (0x08 0x000a) は、「LE Set Advertise Enable」です。このコマンドは、hciconfig ではなく hcitool を使用して発行する必要があります。これは、「hciconfig hci0 leadv 3」がアドバタイジング レートをより遅いデフォルトの 1280 ミリ秒に自動的に設定するためです。

質問に投稿した元のコマンドを実行すると同時に hcidump を実行することで、これを理解しました。これは、bluez によって実行される一連の生の hcitool コマンド (その機能について適切に注釈が付けられています) を示しています。たまたま hcidump の出力から、「hciconfig hci0 leadv 3」がより遅い設定広告間隔コマンドを発行することに気付きました。

これはすべて IOGear GBU521 に基づいているため、他の Bluetooth LE チップセットでは動作しない可能性があることに注意してください。

于 2014-01-15T00:11:45.493 に答える