15

USB Bluetooth 4 ドングルを iBeacon に設定する方法については、よく知られたブログ投稿があります。要約すると、次の魔法のコマンドです。

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

hci0 デバイスに hci コマンドを送信します

0x08 0x0008 

広告パッケージを設定するのは単なる魔法であり、他のstackoverflowコマンドは「ただ使ってください、尋ねないでください」と言っていました

1e

次のデータ パケット全体の長さ (バイト単位)

02 01 1a 1a

広告パケットを設定するためのフラグです (詳細はお問い合わせください)

ff 4c 00 ...

iBeacon 情報をエンコードする「会社固有のデータ」です。

私がやろうとしたことは、「FF ...」バイトをNAMEパラメータ「04 09 41 42 43」(ABCに設定する必要があります)を設定するためのオペコードに置き換えることですが、うまくいきません。

hcitool が広告パケットの設定方法に関するいくつかの例を提供していないことに驚いています。これは、あらゆる種類の他のパラメーター (TEMP や POWER など) を設定するのに非常に役立つためです。hcitool を使用して NAME などを設定した経験のある人はいますか?

4

4 に答える 4

5

いいえ、この答えはどれも正しくてきれいではありません。

1) BLE には別のコマンド セットがあります。「LE Set Advertising Data」コマンドを使用する必要があります (7.8.7 vol 2 part E を参照)。

2) LE Set Advertising Data は、上記で説明したものよりもはるかに複雑です。少なくとも 2 つの 1 オクテット長フィールドがあり、パケットは 32 バイトの長さで、ゼロが埋め込まれている必要がありますが、最初の長さのバイトは 0x1e (31) ではなく、1 つ以上のヘッダーを含む重要な使用部分の長さでなければなりません。各ヘッダーには、長さ、1 つの AS タイプ バイト (セット ローカル名の場合は 0x09)、および名前が含まれています。

SET LE ローカル名:

hciconfig hci0 down
hciconfig hci0 up
hcitool -i hci0 cmd 0x08 0x0008 0c 0b 09 6c 69 6e 6b 6d 6f 74 69 6f 6e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
hciconfig hci0 leadv 0

0x0c : 次のヘッダー グループの長さ 0x0b : このヘッダーの長さ 0x09 : 完全な名前の残りの AD タイプ 0x0a 長さは名前です

于 2015-05-05T12:36:03.057 に答える
2

1 つではなく 2 つのコマンドを使用する必要があるようです。iBeacon データは「LE Set Advertising Data」データに含まれており、この投稿の他の場所で言及されています。BLE フレンドリ名を表示するには、追加のコマンド「LE Set Scan Response Data」を使用できます。これには、レシーバーが (アドバタイジング パケットを受動的に読み取るのではなく) デバイスをスキャンする必要があります。したがって、Angelo の例をこの例と組み合わせて、デバイスを iBeacon として設定し、スキャン応答データである「フレンドリ名」を設定できます。

sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 E2 0A 39 F4 73 F5 4B C4 A1 2F 17 D1 AD 07 A9 61 00 00 00 00 C8 00
sudo hcitool -i hci0 cmd 0x08 0x0009 0c 0b 09 6c 69 6e 6b 6d 6f 74 69 6f 6e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

これは、BLEドングルを備えたUbuntuボックスを使用してから、このAndroid BLEスキャンアプリを使用してビーコンをスキャンすることでうまくいきました

于 2016-03-11T19:08:29.210 に答える