問題タブ [pybluez]

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 投票する
1 に答える
318 参照

android - android-BluetoothChat を Raspberry Pi の bluez に接続する

Android-BluetoothChatを Raspberry Pi B+ に、できればヘッドレスで接続する必要があります。ここにスクリプトをインストールして、Pi がペアリング要求を自動的に受け入れるようにしました。Android タブレット (Walmart ONN) は、Pi とペアリングされていることを示しています。のリストに正しい MAC アドレスが表示されBluetoothAdapter.getDefaultAdapter().getBondedDevices()ます。

rfcomm-server.pyサンプル スクリプトを実行すると、最終的にAccepted connection from ('B4:4B:D6:EE:A2:1C', 1).

しかし、mmSocket.connect()android-BluetoothChat アプリの行は恐ろしいエラーで失敗しますjava.io.IOException: read failed, socket might closed or timeout, read ret: -1

StackOverflowがそのエラーを無効にすることを推奨してinvokeいるシークレットメソッドを使用しても、まだ接続できません。createRfcommSocket()

では、次は何を試せばよいでしょうか。

別の質問: インターフェイスの UUID は何ですか? サーバー (Pi) はこの UUID と一致する必要がありますか? android-BluetoothChat プログラムがランダムに生成する理由がわかりません。

誰かがそれを求める必要がある前に、ここにいくつかのログがあります:

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

raspberry-pi - ESP32 を搭載した Raspberry Pi コンピュート モジュールで PyBluez over HCI が奇妙な動作をする

Bluetooth経由で携帯電話に接続するために、UART経由のHCIを使用してESP32に接続されたカスタムマザーボードでRaspberry PI計算モジュール3を使用しています。部分的に機能します: 電話はデバイスとペアリングでき、デバイスは bluetoothctl UI で電話を認識でき、SDPtool はデバイスによって公開されたサービス (RFCOMM) を認識できます。

ただし、pybluez を使用すると、特定の機能が動作しません。まず、デバイスを Bluetooth スレーブとして使用してみました。これは私の好みの構成です。btmon は電話が接続しようとしているのを示しましたが、pybluez は sock.accept() を通過しません。このコードは、pybluez github の例に示されているものとほとんど同じです。私は同じコードをストックの Raspberry Pi Zero W (統合された bluetooth を使用) で正常に使用しました。

電話は socket.connect() コマンドで次のエラーを示します: W/System.err: java.io.IOException: read failed, socket might close or timeout, read ret: -1 W/System.err: at android. bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:698) W/System.err: android.bluetooth.BluetoothSocket.readInt(BluetoothSocket.java:710) で W/System.err: android.bluetooth.BluetoothSocket.connect(BluetoothSocket.ジャワ:387)

Piデバイスのログで価値のあるものを見つけるのは難しいですが、btmonでこれを見ました:

ACL データ RX: ハンドル 128 フラグ 0x02 dlen 14 [hci0] 75.711662 L2CAP: コマンド拒否 (0x01) ident 5 len 6 理由: 要求の無効な CID (0x0002) 宛先 CID: 0 ソース CID: 0

また、UUIDではなくチャネルIDを使用して直接接続するためのAndroidハックを使用してみました(本質的にSDPルックアップをスキップします)-sdptool Browse Localを使用してチャネルIDを取得しましたが、これにより同じエラーが発生しました。

さまざまなことを徹底的に試した後、ギアを切り替えて、デバイスの代わりに電話を Bluetooth スレーブとして使用しようとしました。ここでさらに成功が見られますが、まだ期待どおりに動作していません: pybluez の discover_devices はデバイスを報告しませんが、電話と bluetoothctl の両方がデバイスをペアとして表示します。ただし、bluetoothctl に表示されるデバイス アドレスをハードコーディングすると、実際に接続できます。

Bluetooth の設定、おそらく bluez や pybluez のバージョンに問題があると確信していますが、この種の問題を報告した人を他に見つけることができません。bluetoothd サービスで互換モード スイッチを使用していることに注意してください (そうしないと、まったく機能しません)。Bluez のバージョンは 5.43 だと思います。

誰もこのようなものを見たことがありますか?これらの問題のトラブルシューティングに関する提案はありますか (bluez の異なるバージョンなど)?

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

macos - pybluez が Python で私の電話の MAC アドレスを認識しないのはなぜですか?

を入力するprint(bluetooth.discover_devices())と、携帯電話で Bluetooth がオンになっているにもかかわらず、コンソールに携帯電話の MAC アドレスが表示されません。なぜこれが起こっているのか知りたいです。