問題タブ [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.
linux - Linux コマンドラインで Bluetooth Low Energy を使用する
Linux で Bluetooth Low Energy モデムを使用する作業を行っています。そのためにコマンドラインオプションを使用していますhcitool
。次のコマンドを使用してデバイスを見つけることができます。$ hcitool scan
私にとっては問題なく動作しています。また、次を使用してデバイスをブロードキャストできます。
また、正常に動作しています。しかし、他のデバイスが検出できるサービスと特性をモデム デバイスに追加したいと考えています。試してみsdptool add
ましたが、うまくいきません。ubuntu のコマンド ライン ツールを使用して周辺機器にサービスと特性を追加する方法を知っている人はいますか?
編集:モデムはブロードキャストしていますが、他の BLE デバイスのサービスと特性を調べることができません。を使用してデバイスの名前を設定できるようになりましたhcio name command
編集:sudo hcidump
コマンドを同時に実行することで、サービスと特性をレンダリングできるようになりました。しかし、それらのサービスや特性をどこから得ているのかを追跡することはできません。明確な観察結果の 1 つは、これらのサービスがマシンからレンダリングされていることです。
c - LinuxでBluetooth接続するためのcプログラム
ユーザーが1つのデバイスを選択し、プログラムが選択したデバイスに接続するよりも、Linux
を介して近くのデバイスをスキャンするcプログラムを書きたいと思います。Bluetooth
だから私はから始めました: this .
bluez-utils
libbluetooth-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 が何である必要があるかわかりません。それらの値は何で、どこから取得できますか?
bluetooth - bluez クラシック デバイスと低エネルギー デバイスを同時に使用
Linux で bluez を使用して、複数の従来の低エネルギー デバイスに同時に接続することは可能ですか? bluez サイトは、このような情報を提供するのにあまり役に立ちません。
c++ - サーバーによって受け入れられた接続を使用してクライアントが送信するソケット
サーバーが受け入れたのと同じ接続を使用してクライアントがデータを送信するのは正しい方法ですか?
状況はこのようなものです。私の PC で実行されているブルートゥース サーバーがあり、反対側にはクライアントとサーバーを備えた Android フォンがあります。Android側から、クライアントは接続を開始します。私はアンドロイドサンプルからブルートゥースチャットの例を使用しています。
そして、Androidのサーバークライアントは次のようになります
PC 側では、Bluezライブラリを使用してサーバーとクライアントを実装しています。
コードには、ブルートゥースの受信スレッドとメイン スレッドが含まれています。サーバーが Android フォンからの接続を受け入れるときはいつでも、ソケット値をグローバル変数に割り当てるだけで、クライアントが同じソケットを使用して送信するデータを送信する必要があるときはいつでも、
サーバ:-
クライアント:-
私の質問は、それは正しい方法ですか? 問題は、クライアントが PC からデータを正常に送信しても、Android 側で受信できない場合があることです。
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
何が問題になるか知っている人はいますか?
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 サーバー/ペリフェラルが中央に接続する必要があるのはなぜですか?) は、不明な理由で失敗します。
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」など) も必要です。
それらの名前を取得する適切な方法を教えてください。