bluez 5.44以降、bluez-utils(およびhcitoolなど)に含まれているrfcommバイナリは廃止予定と見なされ、AURが提供するbluez-utils-compatパッケージにのみ含まれます。
rfcommカーネルモジュールを使用してBluetoothデバイスをシリアルポートにバインドするための同様のコマンドラインアプリケーションがありますか?それとも今からPyBluezまたは同様のライブラリを使用する必要がありますか?
後者の場合、どのPython 3ライブラリをお勧めしますか?
知っている人がいれば、なぜそれほど多くのbluez-utilが突然使用されなくなったと思われるのか教えてください。関連情報が見つかりません。
これ建築ウィキペディアrfcomm機能の新しい実装を使用することをお勧めします。D-Busプロファイル1 API。
答え1
別の考えられる解決策が見つかりました。私は誰かのgithubリポジトリを調べてこれを見つけました。これはpython3の組み込みソケットモジュールを使用します。
前提条件:
- <アダプターアドレス> アドレスに動作しているアダプターがあります。
- ターゲットBluetoothデバイスは<デバイスアドレス>にあります。
- デバイスが固定されました。
つまり、rfcommの同じポイントを使用できます。
$python3
>>> import socket
>>> sock = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
>>> adapter = '00:11:22:33:44:55' #<adapter address>
>>> device = '55:44:33:22:11:00' #<device address>
>>> sock.bind((adapter, 1))
>>> sock.connect((device, 1))
## If not pinned it will ask you. You can use/adapt the bluez simple-agent for headless pinning
>>> sock.send(b'hello\n')
>>> sock.recv(100)
>>> sock.close()
答え2
私は最近発見しましたbluezのツールBluezの現在のD-Bus APIを使用して欠落している機能を実装することを目的としたプロジェクトです。
Bluez-tools は、コミュニティリポジトリの ArchLinux で利用できます。私はこれをまだテストしていませんが、githubページはまだベータ版であることを示しています。ただし、ドキュメントによると、bt-serialは古いbluez rfcommを置き換えることができる必要があり、bt-adapter + bt-agent + bt-deviceにはhcitoolの機能があります。
編集:問題のリストと最後のコミットを見ると、bluez-toolsはもはや積極的に維持されていないようです。
答え3
私はこの問題に注目したい:
- それこのgithubプロジェクトいくつかのrfcomm機能が含まれています。 (bluezテストファイルベース)
bluezプロジェクト自体にはまだrfcomm.cファイルが含まれており、次のように簡単にコンパイルできます。
gcc -lbluetooth rfcomm.c -orfcomm -DVERSION=xyz
...ファイルが1つしかない場合は、bluezプロジェクト全体をコンパイルする必要はありません。ここで、xyzはダウンロードされたバージョンです。Lanzitar.xzソースコード(現在5.46)。ダウンロードする前に自分自身を確認し、bluetoothd -v
一致するソースをダウンロードする必要があります。 bluez-libsは正常にコンパイルされた依存関係です。
armv7(ラズベリー2)にはrfcommが必要で、rfcomm用aurパッケージはありません。これが唯一の方法ですが、うまく動作します。
rfcommが使用されなくなった理由と良い選択肢がない理由と、シリアルポートの周りの反対方向であるBluetoothと通信する方法はまだわかりません。なぜなら、Pythonのエキスパートであり、DBUSのエキスパートでも...プログラム(Aduinoなど)で確認して使用できます。
答え4
もう一つのオプションは「ブルーマン「シリアルポートSPP接続を開くことができるデバイスGUIを提供します。「接続」 - >「シリアルポート」をクリックすると、/ dev / rfcommNデバイスが作成され、それを適切に使用できます。