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

Bluetooth Low Energy in C - Bluez を使用して GATT サーバーを作成する

BlueZ 5.31 で実行されているサンプル GATT サーバーを取得しました (この記事の時点で最新):

私の環境:
浮浪者
仮想ボックス
ゲスト OS としての Ubuntu Trusty Tahr (v. 14.04 32 ビット OS)
Linux カーネル 3.19 に更新
インストールされたパッケージ:
* libglib2.0-dev
* libdbus-1-dev
* libudev-dev
* libical-dev
* libreadline-dev

ここから BlueZ 5.31 をダウンロードしました:https://www.kernel.org/pub/linux/bluetooth/bluez-5.31.tar.xz
更新されたカーネルのインストール (v. 3.19):
sudo apt-get update
sudo apt-get install --install-recommends linux-generic-lts-vivid

再起動が必要です。 Vagrant を使用していて、共有フォルダーへのアクセスが失われました。これが発生した場合は、vagrant がエラーを報告するのを待ち、とにかく VM に入ります (vagrant ssh)。 VM で、次のコマンドを発行して、共有フォルダーの問題を修正します。
sudo /etc/init.d/vboxadd setup

共有フォルダーが再びアクティブであることを確認するために、もう一度再起動します (おそらく必要ありません)。
VM に戻ったら、BlueZ 5.31 のインストールを続行します。
cd ~
sudo apt-get install libglib2.0-dev libdbus-1-dev libudev-dev libical-dev libreadline-dev
wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.31.tar.xz
tar xvf bluez-5.31.tar.xz
cd bluez-5.31
./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --disable-systemd --enable-experimental --enable-maintainer-mode
作る
sudo make install
sudo cp 属性/gatttool /usr/bin

インストールの完了。次のように確認します。
hciconfig
次の応答 (または同様のもの) を取得する必要があります。
hci0:タイプ:BR/EDR バス:USB
BD アドレス:00:1A:7D:DA:71:0C ACL MTU:310:10 SCO MTU:64:8

RX バイト:15528 acl:126 sco:0 イベント:683 エラー:0
TX バイト:6459 acl:146 sco:0 コマンド:234 エラー:0

Bluetooth アダプターを構成し、アドバタイジングを開始し、詳細をオンにしてサンプル GATT サーバー (心拍数サービス) を開始します (私のアダプターは hci0 です):
cd BlueZ 5.31 ディレクトリ
sudo tools/btmgmt -i hci0 電源オフ
sudo tools/btmgmt -i hci0 le on
sudo tools/btmgmt -i hci0 接続可能
sudo tools/btmgmt -i hci0 name "わかりやすい名前 "
sudo tools/btmgmt -i hci0 の広告
sudo tools/btmgmt -i hci0 電源オン
tools/btgatt-server -i hci0 -s low -t public -r -v

別のデバイス (私は iPod、Android、Samsung Galaxy 5S、Nexus タブレット、および BlueZ を実行する別の PC を使用しました) に移動し、サービスに接続します。 BlueZを実行している別のPCで行った方法は次のとおりです。
gatttool -b GATT サーバーの MAC アドレス -私
接続
主要な
特徴

他のコマンドを発行して、GATT サーバーに読み書きすることができます。

このファイルをコピーして編集することにより、カスタム GATT サーバー (元の要求) も作成しました:tools/btgatt-server.c . Makefile.tools ファイルを編集して、カスタム サーバーをビルドに含めることができます。実行するには、automake、make、および sudo make install を実行する必要があります。


1) Bluez フォルダに移動

2) sudo ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --disable-systemd --enable-experimental --enable-maintainer-モード

3) sudo make all

4) 接続可能なパケットをアドバタイズする

Bluetooth を有効にする

sudo hciconfig hci0 アップ

アドバタイズ データの設定:"hello world"

sudo hcitool -i hci0 cmd 0x08 0x0008 48 45 4c 4c 4f 57 4f 52 4c 44

接続可能として広告を開始

sudo hciconfig hci0 leadv 0

5) sudo サービスの Bluetooth 停止

6) sudo src/bluetoothd -d -n

7) 他の PC から、(Change MAC id gatt server mac) と入力します

gatttool -b gatt_server_mac --interactive

ステップ 6 plugins/gatt-example.c をコンパイルしたい場合のためのものです

profile/time から server.c をコンパイルする場合 または プロファイル/アラート (時間の代わりにアラートに置き換えます)またはプロファイルフォルダー内の他のファイルを置き換えますステップ6

sudo src/bluetoothd --plugin=time -n


C 用のスタンドアロン GATT サーバーを探しているときに、この質問に何度かたどり着きました。ここでの回答では、BlueZ スタックを使用して GATT サーバーを構築する必要があります。 BlueZ は D-Bus サポートを追加して、スタンドアロン GATT サーバーを許可し、Python 用のスタンドアロン サンプル GATT サーバーも含めましたが、C 用ではありません。

まだサーバーが必要なので、サンプルをリリースするつもりでサーバーの作業を開始しましたが、最小限の実装でさえ、サンプルを快適に呼び出すよりも多くのコードです。 .

初期実装は現在完了しており、LGPL の下でリリースされています (編集:ライセンスは GPL-3 から LGPL に変更されました):

https://github.com/nettlep/gobbledegook

それが誰かを助けるなら、かっこいい。それが、私を助けてくれたコードをリリースした誰かの役に立てば、なおさらです。


Linux
  1. 別のサーバーを使用してサーバーにSSH接続する方法は??

  2. OnMetalクラウドサーバーを作成する

  3. スケジューラーヒントを使用してサーバーを作成する

  1. Pitchfork:サーバーを作成する

  2. サーバーに Pdftk をインストールするにはどうすればよいですか?

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

  1. DNSサーバーを作成する

  2. CentOSでsudoユーザーを作成する

  3. サーバーログの使用