Linux の Bluetooth シリアル ポートに接続できないのはなぜですか?

Linux の Bluetooth シリアル ポートに接続できないのはなぜですか?

私はLinux 3.12.5 ARMシステムにUSB Bluetoothドングルを持っています。AndroidフォンからLinuxのUSBドングルにBluetoothシリアル接続を試みています。この質問他のソースも試してみました。何か提案があれば嬉しいです。

以下の方法でペアリング可能にできました:

bluetooth-agent 0000 &

そして、携帯電話からペアリングします。次に、デバイスにシリアルポートを作成します。

sudo mknod -m 666 /dev/rfcomm0 c 216 0
sudo sdptool add --channel=22 SP
sudo rfcomm listen /dev/rfcomm 22

次に、携帯電話から BlueTerm を使用してシリアル ポートに接続しようとします。ただし、すぐに接続が失われます。Linux 側では、ターミナルに次のメッセージが表示されます。

Waiting for connection on channel 22
Authorizing request for /org/bluez/317/hci0/dev_xx_xx_xx_xx_00_46

電話の接続が切断されることはないようですが、何が起こっているのでしょうか?

答え1

以下の手順は私の場合はうまくいきました:

まず、デバイスをペアリングする必要があります。ペアリングは比較的簡単です。クライアント(話し始める人)とサーバー(応答する人)を呼び出します。

事前にサーバーをセットアップする必要があります: サーバー側 (root として):

sdptool add --channel=3 SP
mknod -m 666 /dev/rfcomm0 c 216 0
rfcomm watch /dev/rfcomm0 3 /sbin/agetty rfcomm0 115200 linux

クライアント側(ルートとして):

sdptool add --channel=3 SP
rfcomm connect /dev/rfcomm0 [SERVER_ADDR] 3

次に、クライアントでシリアル ターミナルを開きます。

screen /dev/rfcomm0 115200

コメント:

rfcomm connectクライアントで最後のコマンドを呼び出すと、デバイス/dev/rfcomm0が作成され、サーバーに関連付けられます/dev/recomm0。これは、両者間のシリアルリンクを表します。

最後のサーバー コマンド: rfcomm watch.... は、着信接続を「リッスン」します。接続が失われた場合、コマンドは新しい「リッスン」状態を再開します。

関連情報