Bluetoothサービスにアクセスする方法

Bluetoothサービスにアクセスする方法

奇妙なことに、これに関する情報が見つからないようです。私のデバイスでBluetoothサービスにアクセス/読み取り/書き込みを試みています。コマンドを使用していますbluetoothctl。 infoコマンドに1つのサービスセットが表示され、menu gatt/に別のサービスセットが表示されますlist-attributes

情報:

Device <someMACaddress> (public)
    Name: <somename>
    Alias: <somealias>
    Paired: yes
    Trusted: yes
    Blocked: no
    Connected: yes
    LegacyPairing: no
    UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)
    UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
    UUID: Device Information        (0000180a-0000-1000-8000-00805f9b34fb)
    UUID: Battery Service           (0000180f-0000-1000-8000-00805f9b34fb)
    UUID: Human Interface Device    (00001812-0000-1000-8000-00805f9b34fb)
    UUID: Vendor specific           (3dda0001-957f-7d4a-34a6-74696673696d)
    ManufacturerData Key: 0x<2bytekey>
    ManufacturerData Value:
  <10bytehexvalue>   

             <10bytevalue>      

GATTサービスにアクセスできますが、上記の最初のサービスセットにアクセスする方法が見つかりません。ただ考えたんだけど、方法がないだろうか?これらのサービスはGATTではないように見えますが、読み取り値の私の検索はすべてGATTを指します。たとえば、デバイスをAndroidに接続すると、BLEデバイスのボタンを押すと、hcisnoopログにHIDハンドル1812が使用されていることが示されます。 /dev/hidraw2としても表示されます。

生の入力を得るために1812ハンドルまたはuuidを具体的に聞くことができるかどうか疑問に思います。それとも180aや1801のような他のハンドルも…?

ベストアンサー1

私の問題に最も適した答えを見つけました。スタックオーバーフロー著者:オリビエM。

デフォルトでは、彼はいくつかの特定のGATTサービス(バッテリーサービスなど)がDBUSに移動され、DBUS経由でアクセスできることを意味します。この解決策の例も提供される。私はそれが私に効果があると思って読んだ。

  1. bluetoothctlを使用してターゲットBLEデバイスに接続する
  2. 次に、DBUSを要求します。dbus-send --print-reply=literal --system --dest=org.bluez /org/bluez/hci0/dev_<mac_address_of_your_ble_peripheral> org.freedesktop.DBus.Properties.Get string:"org.bluez.Battery1" string:"Percentage"

おすすめ記事