Bluez 5.44以降、bluez-utils(hcitoolなど)に含まれているrfcommバイナリは非推奨と見なされ、AURが提供するbluez-utils-compatパッケージにのみ含まれるようになりました。
Rfcommカーネルモジュールを使用してBluetoothデバイスをシリアルポートにバインドするための同様のコマンドラインアプリケーションはありますか、または今後はPyBluezまたは同様のライブラリを使用する必要がありますか?
後者が当てはまる場合、どのPython 3ライブラリをお勧めしますか?
そして誰かが知っているなら、なぜ多くのbluez-utilsが突然廃止されたと考えられるのか教えてください。それについては何も見つかりませんでした。
ArchWiki は、新しい D-Bus Profile 1 API を使用してrfcomm機能を実装することを推奨しています。
最近、Bluezの現在のD-Bus APIを使用して失われた機能を実装することを目的とした bluez-tools プロジェクトを見つけました。
Bluez-toolsは、コミュニティリポジトリからArchLinuxで利用できます。私はこれをテストしていません、そしてgithubページはそれがまだベータ版であると述べています。しかし、ドキュメントによると、bt-serialは古いbluez rfcommを置き換えることができ、bt-adapter + bt-agent + bt-deviceはhcitoolの機能を備えているはずです。
編集:課題リストと最後のコミットを見ると、bluez-toolsはもはやアクティブに維持されていないようです
別の可能な解決策を見つけました。私は誰かのgitハブリポジトリを掘り下げてこれを見つけました。これは、ソケットモジュールに組み込まれたpython3を使用します。
前提条件:
つまり、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()
この問題について注意したい:
bluezプロジェクト自体にはまだrfcomm.cファイルが含まれており、簡単にコンパイルできます。
gcc -lbluetooth rfcomm.c -orfcomm -DVERSION = xyz
... 1つのファイルだけで、bluezプロジェクト全体をコンパイルする必要はありません。ここで、xyzはダウンロードしたバージョンです bluez tar.xz ソースコード(5.46は現在)。ダウンロードする前に、まず自分自身を確認する必要がありますbluetoothd -v
そして一致するソースをダウンロードします。 bluez-libsは、コンパイルが成功するための唯一の依存関係です。
Armv7(raspberry 2)にはrfcommが必要でしたが、rfcomm用のaurパッケージはありません。これは唯一の方法でしたが、うまく機能します。
それでも、rfcommが非推奨になっている理由や、良い代替案がない理由、そしてシリアルポートとは逆にBluetoothと通信する方法がわからない。あなたはpythonエキスパートとDBUSエキスパートの両方です...(上記のプロジェクトの所有者のように)ですから...この方法で提供されるのはfifoだけで、/ dev /の実際のキャラクターデバイスではありません。 ..他のすべてのプログラム(arduinoなど)が表示および操作できます。