私はBLEデモ用に2つのLinuxシステムのセットアップに取り組んでいます。明らかに、1つのシステムが周辺機器になり、もう1つが中央デバイスになります。これらの構成の両方についていくつか質問があります。
環境
周辺機器のセットアップ
ビジネスの最初の順序は、GATTサーバーを構成して周辺システムをセットアップしてアドバタイズすることです。現時点では、コマンドラインからGATTサーバーを構成することはできないようです。そのため、USBドングルを起動してアドバタイズするのは簡単な作業ですが、カスタムサービスや特性を作成することはできません。私が見つけたGATTサーバーの唯一の例は、Bluezパッケージのgatt-example.cファイルでした。そこで、最新のbluez-5.23ソースをダウンロードしてビルドしました。 ( http://www.linuxfromscratch.org/blfs/view/svn/general/bluez.html )。さらに、-enable-maintainer-modeフラグを使用して構成し、gatt-example.cプラグインをbluetoothdに強制的にビルドします。そして、ビルド後、~/bluez-5.23/plugins
ディレクトリからbluetoothd-gat-example.o
ファイルがあることを確認しました。これは、gatt-exampleが少なくとも正常に構築されたことを示しています。
次に、構成ファイルを変更して、LEと属性サーバーを有効にしました。
$ Sudo vi /etc/bluetooth/main.conf
EnableLE = true // Enable Low Energy support. Default is false.
AttributeServer = true // Enable the GATT attribute server. Default is false.
次に、Bluetoothデーモンを再起動または再起動します...
中央デバイスのセットアップ
中央デバイスは周辺機器のように構築された特別なプラグインを必要としないため、apt-get
を使用してbluezをインストールしました。これは、bluetoothd -v
に従ってv4.101をインストールしたようです。
セッション設定
その場合、接続プロセスはかなり単純なはずです。アドバタイズするように周辺機器をセットアップしてから、中央デバイスに接続します。
周辺:
$ Sudo hciconfig hci0 up // Make sure the interface is up
$ Sudo hciconfig hci0 leadv // Set the interface to advertise
中央:
$ Sudo hcitool -i hci0 lescan // Scan for nearby devices advertising
LE Scan ...
00:02:72:C9:5E:0F (unknown) // Not sure why two of the same MAC are found?
00:02:72:C9:5E:0F (unknown) // but I know this is my device...
$ Sudo gatttool -i hci0 -b 00:02:72:C9:5E:0F -m 48 --interactive // Connect interactively
[ ][00:02:72:C9:5E:0F][LE]> connect
[CON][00:02:72:C9:5E:0F][LE]> primary
attr handle: 0x0001, end grp handle: 0x0008 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x0010, end grp handle: 0x0010 uuid: 00001801-0000-1000-8000-00805f9b34fb
[CON][00:02:72:C9:5E:0F][LE]> characteristics
handle: 0x0004, char properties: 0x02, char value handle: 0x0006, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0007, char properties: 0x02, char value handle: 0x0008, uuid: 00002a01-0000-1000-8000-00805f9b34fb
そして、gatt-exampleのサービスや特性の1つが利用できないことがわかります。
質問
-周辺機器
-中央デバイス
必要な追加情報を提供できます。ありがとう。
GATTサーバーを別のプロセスに作成するには、(少なくとも)2つのケースがあります。
中央デバイスが新しくエクスポートされたGATTサービスを認識しない場合は、中央デバイスの問題ではなく、おそらく周辺の問題です。中央デバイスにGATTクライアントを実装する必要がある場合でも、次の2つのケースがあります。
gatttool
コマンドを起動するか、 gattlib などのGATTライブラリを使用してBLEデバイスと対話します。