問題タブ [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 投票する
3 に答える
1716 参照

c++ - Qt C++ BlueZ 5 QDbus ライブラリ

BlueZ 5 では、DBus API が大幅に変更されました。以前、これに基づいて BlueZ 4 用の QDbus コントローラー ライブラリが動作していました: https://gitorious.org/qt-bluez-demos/

私はかなりグーグルで調べましたが、BlueZ 4 ライブラリを BlueZ 5 に変換するための既存の開始点が見つかりません。

注: Qt 4.8 を使用していますが、Qt 5.0 にはいくつかの QBluetooth 名前空間があるようですが、BlueZ 5 用にまだ更新されていません。

このライブラリも BlueZ 4 のみです。

誰か既存のコードを教えてもらえますか? ありがとう!

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

linux - ブルーズを再構築する方法

bluez を再構築するにはどうすればよいですか? 出来ますか?たとえば、avctp.c で何かを変更したいとしましょう。Bluez の Web サイトから最新の bluez リリースをダウンロードし、必要な変更を加えます。さて、変更を有効にするにはどうすればよいですか。つまり、bluetoothd を再構築するために何をする必要がありますか?

注:Ubuntu 12.04を使用しています

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

android - Bluetooth/BlueZ サーバーに接続できません: RFCOMM ソケットを作成できませんでした

Linux ラップトップと Android フォンの間にシンプルでカスタムの Bluetooth 接続を作成しようとしています。Linux 側では、BlueZ libbluetooth ライブラリを使用してサーバーをセットアップします。そのコードは、github に出回っている他のコードと非常によく似ています。

Linux でサーバー側のコードをエラーなしで実行できます。

次にsdptool、RFCOMM ソケットとサービスを確認するために使用できます (説明、チャネル番号、およびその他のすべての情報は正しいようです)。

さて、Android 側では、まず標準設定画面を介して電話を Linux サーバーにペアリングします。ペアリングしたら、Android 側のコードを使用して Bluetooth デバイスをスキャンし、Linux デバイスの場合は接続を試みます。接続を確立するために、スタックオーバーフローで人々が提案した2つの異なる方法を試しました。

tmp.connect()実際に呼び出しを試みると、次の例外がスローされ続けます。

接続を作成しようとする際に、ここで私が間違っていることを誰かが見ていますか? 呼び出すとUUIDが返されることに注意してください...UUID uuid = device.getUuids()[0].getUuid();これにより、ペアリングがOKであると信じるようになり、値が返されます00001103-0000-1000-8000-00805f9b34fb

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

dbus - Bluez (bluetoothd) は接続時に DBUS method_call SelectConfiguration を送信していませんか? もしそうなら、どうやってそれを捕まえますか?

更新: まだ解決されていませんが、解決策の一部です。下記参照。

iPod またはその他のスマート デバイスを Bluetooth 経由でラップトップ (Kubuntu 13.10) に接続し、a2dp でエンコードされた音楽を Bluetooth スピーカーにストリーミングしようとしています。直接接続しない理由は気にしないでください。デバイスを実際にペアリングしてから同時に接続するのに苦労しましたが、今ではそれが可能です. .asoundrc、/etc/bluetooth/audio.conf を変更し、PulseAudio のコントローラーを介してループバック モジュールをロードすることにより、BT ヘッドセットを接続するさまざまな方法を説明する 100 万件の投稿があります。ただし、PulseAudio にソースとシンクを一貫してロードさせることはできなかったので、そのアイデアを破棄して、James B による次の素晴らしい投稿をフォローし始めました

コードをコンパイルしました。BlueZ 用の (新しい?) DBus API を使用します。彼の指示に従って、a2dp「サーバー」に音楽をパイプで送り込むことはできましたが、音が出ません。コードでは、彼は「トランスポート」を取得するために、SelectConfiguration と SetConfiguration の 2 つの DBUS method_calls を待機します。これは、オーディオの行き先と行き先を記述するハンドルまたはファイル記述子であると思います。ただし、これらのイベントのハンドラは呼び出されません。このガイドを使用して、これらの呼び出しをシステム バスでリッスンするように dbus-monitor をセットアップしました: https://wiki.ubuntu.com/DebuggingDBus。ただし、メソッド呼び出しは表示されません。次に、システムバスで任意のメソッド呼び出しをリッスンしようとしましたが、呼び出されていることがわかっている dbus-monitor に表示されないものがあります。(つまり、RegisterEndpoint)

org.bluez からのシグナルが表示されますが、メソッド呼び出しはありません。詳細モードで bluetoothd を実行すると、デバイスを接続すると次のようなメッセージが表示されます。

bluetoothd[12118]: audio/a2dp.c:setup_ref() 0x7f9e8ffbdac0: ref=2 bluetoothd[12118]: audio/avdtp.c:avdtp_set_configuration() 0x7f9e8ffd03f0: int_seid=1、acp_seid=1 .c:setup_unref() 0x7f9e8ffbdac0: ref=1 bluetoothd[12118]: audio/avdtp.c:session_cb() bluetoothd[12118]: audio/avdtp.c:avdtp_parse_resp() SET_CONFIGURATION リクエストが成功しました bluetoothd[12118]: audio/a2dp .c:setconf_cfm() ソース 0x7f9e8ffa4600: Set_Configuration_Cfm bluetoothd[12118]: audio/avdtp.c:avdtp_sep_set_state() ストリーム状態が変更されました: IDLE -> CONFIGURED bluetoothd[12118]: audio/avdtp.c:session_cb() bluetoothd[12118] : audio/avdtp.c:avdtp_parse_resp() OPEN リクエストが成功しました

しかし、別の投稿で、誰かがこれを持っているのを見ました:

bluetoothd[8315]: audio/a2dp.c:setup_ref() 0x7f1f8300b000: ref=2 bluetoothd[8315]: audio/avdtp.c:avdtp_set_configuration() 0x7f1f83012250: int_seid=2、acp_seid=1 .c:setup_unref() 0x7f1f8300b000: ref=1 bluetoothd[8315]: audio/avdtp.c:session_cb() bluetoothd[8315]: audio/avdtp.c:avdtp_parse_resp() SET_CONFIGURATION リクエスト成功 bluetoothd[8315]: audio/a2dp .c:setconf_cfm() シンク 0x7f1f82fc3210: Set_Configuration_Cfm bluetoothd[8315]: audio/media.c:media_endpoint_async_call() SetConfiguration の呼び出し: name = :1.65 path = /MediaEndpoint/A2DPSink

bluetoothd[8315]: audio/avdtp.c:avdtp_sep_set_state() ストリーム状態が変更されました: IDLE -> 構成済み bluetoothd[8315]: audio/avdtp.c:session_cb() bluetoothd[8315]: audio/avdtp.c:avdtp_parse_resp() OPEN リクエストが成功しました

この時点で、私には 2 つの理論があります: 1) デバイスが接続されているときに、BlueZ が監視しているバスにこれを送信していない 2) 正しく監視していない (method_calls も dbus_bus_add_match () で追加する必要がありますか?)

James B のコードは彼のために機能し、私はそれを変更しなかったので、2 番目のものを信じるのは難しいと思います。bluez バージョン 4.101 を使用しています。(彼と同じだと思います) BlueZ がこれらのメソッドを呼び出す正確な条件を見つけるのは困難です。

プログラムを起動すると、syslog に次のようなメッセージが表示されます。

bluetoothd[8519]: エンドポイントが登録されました: sender=:1.166 path=/MediaEndpoint/A2DPSource

プログラムが終了すると、登録も解除されます。

現時点では他に追加する詳細は考えられませんが、十分に提供できていない場合は喜んで追加します。前もって感謝します。

更新 少し恥ずかしいですが、LINUX SYSTEMがファイルハンドルを取得しない理由について今日頭を悩ませました...うーん...プログラム呼び出しにsudoを追加しました(James Bのa2dp-alsaプログラム)そしてそれはうまくいきました。少なくとも入力デバイスについては。出力(BTスピーカー)にはまだ何もありませんが、すぐにそれを理解し、結果をここに投稿しようと思います.

noob バッジはどこで入手できますか? :(

0 投票する
3 に答える
16325 参照

linux - iBeacon / BLE から広告ペイロードを取得する方法

Linux で Bluetooth LE エミッターの広告ペイロードを取得するにはどうすればよいですか?

具体的には、iBeacons として機能するように hcitool を使用して arduino と R-PI を構成しました。

私が探しているのは、デバイスの現在の広告ペイロードが何であるかを出力するコマンドです。

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

iphone - bluez 5.17 を使用して iPhone と Ubuntu をペアリングする

グラフィカル インターフェイスを使用して、iPhone を検索し、ラップトップとペアリングしています。iPhone では 6 桁の数字が表示されますが、ubuntu bluez インターフェイスでは表示されません。hcidump を使用して Bluetooth トラフィックを観察すると、次のことがわかります。番号を確認するリクエストを送信した直後に、コンピュータが iPhone から否定的な応答を受信したようで、ペアリング プロセスが終了します。

コンピューターで bluez-tools をコンパイルして、ペアリングに「btmgmt ペア」を使用すると、まったく同じエラーが発生します。bluez-simple-agent を使用することもできます。

お役に立てれば幸いです!

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

c++ - C++: イテレータを使用して BlueZ 5 アダプタを見つけるために DBUS メッセージをトラバースする

BlueZ 5 で更新された Dbus API を使用して、利用可能な BlueTooth アダプターを見つけようとしています。

BlueZ 4 にはこのためのメソッド (つまり org.bluez.Manager.FindAdapter()) があり、BlueZ 5 はメソッド GetManagedObjects() で FreeDesktop ObjectManager インターフェースを使用します。このメソッドは、結果の非常に大きな配列を返します。

BlueZ 5 API イントロおよびポーティング ガイドは次のように述べています。 GetManagedObjects 応答。

これを行うためにイテレーターを使用して C++ コードを作成しました (私は Python の経験がありません)。

つまり、毎回決まった場所にある文字列を見つけるためだけに、ツリーの枝ごとに新しい反復子を定義する必要があります。(array[x]->secondfield[2]->firstfieldstring) 私の質問 (最後に、私は知っています) は、誰かがよりエレガントで高速なソリューションを指摘できますか?