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