web-dev-qa-db-ja.com

RFCOMMデバイスが見つからないようです(dev / rfcomm0)

Bluetooth経由でシリアルコマンドを送受信しようとしています。 pyBluezライブラリをインストールしました。問題は、rfcomm.confが存在している間、/ dev /ディレクトリにrfcomm0がないことです。再起動しましたが、変更はありません。

次のコマンドを実行すると、アクセス許可が拒否されたというエラーが表示されます。

Sudo echo "This is a test" > /dev/rfcomm0

USB Bluetoothモジュールが接続された後、rfcommが/ devに自動的に追加されないのはなぜですか? Bluetoothモジュールは互換性があり、コマンドラインからデバイスをスキャンして見つけることができます。 Bluezとbluez-utilsはすでにインストールされています。

4
DominicM

Bluetoothサービスが開始された場合でも、/dev/rfcomm0デバイスが自動的に表示されるだけではありません。

少なくとも、BluetoothサブシステムはBluetoothデバイスのアドレスとその上のチャネルを知っている必要があります。これにより、特定の/dev/rfcomm*デバイス名を特定のBluetoothデバイスとチャネルの組み合わせにバインドできます。

rfcomm bind 0 <bdaddr> [channel]を使用して、/dev/rfcomm0のバインディングを作成できます。チャネル番号を指定しない場合、デフォルトでチャネル1が使用されます。お使いのバージョンのrfcommがまだ/etc/bluetooth/rfcomm.confファイルをサポートしていて、/dev/rfcomm0のアドレスとチャネル情報が書き込まれている場合は、コマンドからアドレスとチャネル情報を省略できます。 -ただし、バインディングを作成するには、コマンドを使用する必要があります。

BlueZツールの新しいバージョンでは、/etc/bluetooth/rfcomm.confファイルが文書化されていないようです。バインディングを設定するには、常に完全な形式のrfcomm bindコマンドを使用する必要がある場合があります。これらのコマンドを/etc/rc.localまたはカスタム起動スクリプトに追加して、再起動しても関連付けが保持されないため、起動時に自動的に実行されるようにすることができます。

BlueZ内部の最後の主要な再構築には、/etc/bluetooth/rfcomm.confファイルなどのRFCOMM関連の機能の一部が必要だったようです。ただし、少なくともrfcommコマンドは引き続き使用可能であり、ジョブを実行できます。

2
telcoM

なぜこれが自動的に行われないのですか?まず、Bluetoothサービスはデーモンを起動する必要があり、それがinitリストにない場合は、ターミナルに移動して、initリストを再構成してデーモンを含めるまで手動で起動する必要があります。

これは、コンピューター上ですべてを自動化することを確約する前に、構成をテストできるようにするためです。この背後にある理由は、OSがどのように機能するか、ユーザーとグループに通信の権利がどのように割り当てられるかなどのUnixの概念に基づいています。

1
Tusany