問題タブ [bluez]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
53451 参照

linux - Linux コマンドラインで Bluetooth Low Energy を使用する

Linux で Bluetooth Low Energy モデムを使用する作業を行っています。そのためにコマンドラインオプションを使用していますhcitool。次のコマンドを使用してデバイスを見つけることができます。$ hcitool scan

私にとっては問題なく動作しています。また、次を使用してデバイスをブロードキャストできます。

また、正常に動作しています。しかし、他のデバイスが検出できるサービスと特性をモデム デバイスに追加したいと考えています。試してみsdptool addましたが、うまくいきません。ubuntu のコマンド ライン ツールを使用して周辺機器にサービスと特性を追加する方法を知っている人はいますか?

編集:モデムはブロードキャストしていますが、他の BLE デバイスのサービスと特性を調べることができません。を使用してデバイスの名前を設定できるようになりましたhcio name command

編集:sudo hcidumpコマンドを同時に実行することで、サービスと特性をレンダリングできるようになりました。しかし、それらのサービスや特性をどこから得ているのかを追跡することはできません。明確な観察結果の 1 つは、これらのサービスがマシンからレンダリングされていることです。

0 投票する
0 に答える
2085 参照

c - LinuxでBluetooth接続するためのcプログラム

ユーザーが1つのデバイスを選択し、プログラムが選択したデバイスに接続するよりも、Linuxを介して近くのデバイスをスキャンするcプログラムを書きたいと思います。Bluetooth

だから私はから始めました: this .

bluez-utilslibbluetooth-dev と bluez-hcidump をインストールしました。

simplescan.c上記のリンクのプログラムが機能し、デバイスのアドレスを画面に出力します。rfcomm-clientプログラムは動作しますが、携帯電話に一瞬しか接続せず、メッセージを出力するだけで、以前はピンを設定し"connection refused"ていました。プログラムは起動するだけで何もしません。system(bluetooth-agent xxx)rfcomm-server.c

の最新バージョンをubuntu(13.04) and kernel(3.8.0-26)使用しており、このサイトで見つけた同様の問題についてすべての提案を試しましたが、何も機能しませんでした。

問題は、私が始める前に私の電話はPC経由Bluetoothで動作し、システムを使用していましBluetoothたが、今ではそれも機能しません。プログラミングは知ってCいますが、Ubuntu は初めてです。誰かが私を助けてくれるか、役立つページに誘導してくれることを願っています.

ありがとうございました

編集: hci コマンドを使用することにしました: hci_get_route() と hci_open_dev() でソケットを開きました。接続を確立するために hci_create_connection() を使用する必要がありますが、ptype、rswitch、および *handle が何である必要があるかわかりません。それらの値は何で、どこから取得できますか?

0 投票する
1 に答える
2774 参照

bluetooth - bluez クラシック デバイスと低エネルギー デバイスを同時に使用

Linux で bluez を使用して、複数の従来の低エネルギー デバイスに同時に接続することは可能ですか? bluez サイトは、このような情報を提供するのにあまり役に立ちません。

0 投票する
2 に答える
826 参照

c++ - サーバーによって受け入れられた接続を使用してクライアントが送信するソケット

サーバーが受け入れたのと同じ接続を使用してクライアントがデータを送信するのは正しい方法ですか?

状況はこのようなものです。私の PC で実行されているブルートゥース サーバーがあり、反対側にはクライアントとサーバーを備えた Android フォンがあります。Android側から、クライアントは接続を開始します。私はアンドロイドサンプルからブルートゥースチャットの例を使用しています。

そして、Androidのサーバークライアントは次のようになります

PC 側では、Bluezライブラリを使用してサーバーとクライアントを実装しています。
コードには、ブルートゥースの受信スレッドとメイン スレッドが含まれています。サーバーが Android フォンからの接続を受け入れるときはいつでも、ソケット値をグローバル変数に割り当てるだけで、クライアントが同じソケットを使用して送信するデータを送信する必要があるときはいつでも、

サーバ:-

クライアント:-

私の質問は、それは正しい方法ですか? 問題は、クライアントが PC からデータを正常に送信しても、Android 側で受信できない場合があることです。

0 投票する
1 に答える
1548 参照

c++ - Qt での Dbus org.bluez 実装

QtでDBusとbluetoothを使い始めました。DBus を介してメソッドを呼び出すだけで応答を取得するスクリプトを開発したいと考えています。コードの一部は次のとおりです(実際には主要部分です):

interface.lastError() は次のエラーを返します:

QDBusError("org.freedesktop.DBus.Error.ServiceUnknown", "名前 org.bluez はどの .service ファイルからも提供されませんでした")

bluez と dbus をインストールしました。コマンドからBluetoothデバイスを検索できます。

コマンド sudo bluetoothd -d -n も試してみましたが、これを取得しました: D-Bus setup failed: Name already in use bluetoothd[21952]: Unable to get on D-Bus

何が問題になるか知っている人はいますか?

0 投票する
1 に答える
6887 参照

bluetooth - Bluez で Bluetooth Low Energy GATT 通知を送信するには?

Bluez ソースの plugin/gatt_example.c を拡張して、成功せずに BLE 通知機能を試しています。Bluez ソースに含まれているサンプル Battery Service を使用しています。READ および NOTIFY プロパティを持つ 1 つの特性があります。dbus メソッドを追加して attrib_db_update() を呼び出し、bluetooth デーモンの外部から特性値を更新します。

これで、どのクライアント (Nexus4 と Android 4.3 および iPhone (LightBlue 無料アプリ)) を接続し、通知を開始できます (記述子 CCC 通知フラグを設定します)。(注: ccc 記述子 char にはデフォルトの auth パーミッションがあるため、iPhone から CCC (開始通知) を変更すると bluez がエラーを返すようになります: 権限を承認しません。後で承認を処理する予定なので、一時的にデフォルトのパーミッションを none に変更します、および iPhone は CCC 通知フラグを設定できます)。

問題は、クライアント (Android または iOS の両方) が通知を開始しても、attrib_db_update() を呼び出しても bluez がクライアントに通知を送信しないことです (hcidump で監視し、クライアントにパケットを送信しません)。

質問: attrib_db_update() 以外に、bluez がクライアントに通知を送信するために必要な手順はありますか? サンプルソースへのリンクをいただければ幸いです。PS。bluez をペリフェラル + gatt サーバー構成 (plugin/gatt_example.c のバッテリー サービスと同様) として使用し、その逆ではありません。

ありがとう。

=== 更新 (コメントの書式設定がどのように機能するのかわからないので、ここに更新を追加します。)
プロファイル/アラートのサンプルについて:
はい、質問をする前にプロファイル/アラートを確認しました。もう 1 つの問題は、それらのサンプルを実行できなかったことです (最初に質問した理由の 1 つです)。
profile/alert/server.c: attio_connected_cb() は、server.c の filter_devices_notify() によって登録されるコールバック関数です。btd_device_add_attio_callback() (src/device.c から) を使用します。さらにsrc/device.cをチェックすると、device->attribをチェックして、コールバックを実行する(最初にキューに挿入してからコールバックを実行する)か、デバイスが接続されるまでキューに挿入するかどうかを確認しているようです。
デバッグすると、既にデバイスを接続しているにもかかわらず、device->attrib が空のように見えます。

サンプル アラート プロファイルの実行/デバッグに関心がある場合 (ドキュメントがないため :( )。
次の場合 (564 行あたり) をコメントアウトします。これらのチェックには関心がありません...

bluetoothd を実行します: ex. bluetoothd -n -d -p alert
startNotify までデバイスを接続します

他のコンソールからアラートを登録:

新しいアラートを作成:

次のbluetoothdのログを取得しました:

メモ: device.c にデバッグ出力を追加します。device->attrib が空のようです。また、自動接続 (gatt サーバー/ペリフェラルが中央に接続する必要があるのはなぜですか?) は、不明な理由で失敗します。

0 投票する
1 に答える
1707 参照

c++ - D-Bus でデバイス名を取得するには?

ブルートゥース デバイス (Bluetooth ソケットやスピーカーなど) とやり取りするアプリケーションを Linux で C++ で開発しています。D-Bus コマンドを使用して、ペアリングされたデバイスのリストを取得します。

dbus-send --system --dest=org.bluez --print-reply $BTADAPTER org.bluez.Adapter.ListDevices

戻り値:

これは素晴らしいことですが、MAC だけでなく、デバイスの名前 (「linvor」や「GT-I9300」など) も必要です。

それらの名前を取得する適切な方法を教えてください。