GNU/Linux >> Linux の 問題 >  >> Linux

BlueZ:コマンドラインから GATT サーバーをセットアップする方法

私も同じ問題に直面しましたが、適切な解決策を見つけることができました。Ubuntu マシンで bluez スタックを使用して最善の方法は、いくつかの hci コマンドを使用して LE パケットをアドバタイズすることです。これらのパケットは、LE サーバーの場合と同じように常にアドバタイズされます。GATT クライアントを使用してスキャンを行うと、スキャン リストに bluez デバイスの名前が表示されます。

以下のコマンドを使用してください:

次のコマンドで LE アドバタイズメント パケットを設定します:

sudo hcitool -i hcix 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

· 次のコマンドで LE パケットをアドバタイズします:

sudo hciconfig hcix leadv

これは新しい bluetoothctl で処理されるようになりました 道具。ガット テーブルは、このツールを使用して次のように設定できます:-

#bluetoothctl
[bluetoothctl] menu gatt
[bluetoothctl] register-service 0xFFFF # (Choose yes when asked if primary service)
[bluetoothctl] register-characteristic 0xAAAA read       # (Select a value of 1 when prompted)
[bluetoothctl] register-characteristic 0xBBBB read,write # (Select a value of 0 when prompted)
[bluetoothctl] register-characteristic 0xCCCC read       # (Select a value of 2 when prompted)
[bluetoothctl] register-application # (This commits the services/characteristics and registers the profile)
[bluetoothctl] back
[bluetoothctl] advertise on

いくつかのサービス/特性の組み合わせでこれを試してみたところ、うまく機能することができました。 GAP (0x1800) および GATT (0x1801) サービスはデフォルトで利用可能であり、アドバタイズすると GATT テーブルの一部になります。次のコマンドを使用して、利用可能なサービスを確認することもできます:-

[bluetoothctl] show
Controller 00:AA:BB:CC:DD:EE (public)
    Name: MyMachine
    Alias: MyMachine
    Class: 0x000c0000
    Powered: yes
    Discoverable: no
    Pairable: yes
    UUID: Headset AG                (00001112-0000-1000-8000-00805f9b34fb)
    UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
    UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)
    UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)
    UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)
    UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
    UUID: Audio Source              (0000110a-0000-1000-8000-00805f9b34fb)
    UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)
    **UUID: Unknown                   (0000ffff-0000-1000-8000-00805f9b34fb)**
    UUID: Headset                   (00001108-0000-1000-8000-00805f9b34fb)
    Modalias: usb:v1D6Bp0246d0532
    Discovering: no

Linux
  1. Linuxコマンドラインからソフトウェアをインストールする方法

  2. コマンドラインからIcewmを再起動する方法は?

  3. Grub2のコマンドからの出力に等しい変数を設定するにはどうすればよいですか?

  1. コマンドラインからのLinuxサーバーの移行

  2. コマンドラインからファイルの内容をクリアする方法は?

  3. コマンドラインからクリップボードにテキストをパイプする方法

  1. コマンドラインからミュートする方法は?

  2. Linux コマンドラインからフォルダーをコピーするにはどうすればよいですか?

  3. コマンドラインからBluezのバージョンを調べるには?