
私は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
.... は、着信接続を「リッスン」します。接続が失われた場合、コマンドは新しい「リッスン」状態を再開します。