Linuxでは、USB Bluetoothアダプタを介して仮想シリアルポートを設定し、Androidデバイスを介してメッセージを送信しようとしています。 3.6カーネルを使用しています。 gnome-bluetoothを使用してデバイスと正常にペアリングでき、ファイルも送信できました。
シリアルポートを設定するために、まずSPプロファイルを持つチャネルをアダプタに追加しました。
sdptool add --channel=22 SP
次に、rfcommを使用して「listen」を呼び出します。
rfcomm listen /dev/rfcomm0 22
どのブロック
Waiting for connection on channel 22
明らかに、rfcommは正常に接続すると/ dev / rfcomm0を生成します。このようなことが発生したら、キュートコムのようなものを利用して接続された機器とメッセージをやり取りしたいと思います。
私のAndroidデバイスでBluetooth SPP端末(複数の端末があり、いくつかの他の端末を試しました)を開き、接続を試みます。彼らはすべて失敗しました。
正常にペアリングし、問題なくファイルを送信できることを考慮すると、Bluetoothペアリングと通信が機能していることがわかります。
私が何をもっと試すことができるかわかりません。 RFCOMMチャンネルの競合がないことを確認するために、ローカルデバイスとAndroidデバイスの両方で「sdptoolブラウザ」を使用しました。
ベストアンサー1
今は仕事をしているようです。 Bluetoothは少しトリッキーなようです。他の人が役に立つと思う場合に備えて、全体のステップを見てみましょう(私が最初に試したのとほぼ同じですが)。これは、Nexus 4のAndroid JB(4.2.2)とArch Linux 3.6.7-1、Gnome 3.6のbluez 4.101(gnome-bluetoothを含む)で動作します。
(この段階は役に立たないかもしれません) AndroidでBluetoothをオフにし、LinuxコンピュータからUSB / Bluetoothアダプタを取り外します(または内蔵アダプタがある場合はhcitool devnameをリセットにリセットします)。
Linux で Bluetooth アダプターを接続/オンします。アダプタが表示されていることを確認してください(gnome-bluetoothで設定できます - Bluetoothシステムトレイアイコンを表示する必要があります)。
AndroidデバイスでBluetoothをオンにします。 Androidを使用してアダプタとペアリングします(Linuxでは反対方向にペアリングできません)。キーの入力を求めるダイアログボックスが表示されます。希望のPINを入力してください。 Gnomeは、以前に入力したのと同じPINを入力するように通知します。これで、Androidデバイスとキーがペアリングされました。
Linuxでは、端末を開き、次のように入力して利用可能なBluetoothサービスを確認します。
sdptool browse local
すでにシリアルポートサービスがある場合は、そのサービスがどのチャネルであるかを記録してください。そうでない場合は、サービスを追加できます。
sdptool add --channel=22 SP
これでrfcommを使ってチャンネルを聴きましょう。
sudo rfcomm listen /dev/rfcomm0 22
rfcommはブロックし、同様のメッセージを含む接続を受信します。
Waiting for connection on channel 22
AndroidではBlueTermアプリ(http://pymasde.es/blueterm/、Google Playストアでも無料で入手できます。)同様のアプリであれば、すべて機能します。 BlueTermを開き、オプション/デバイス接続に移動して、ペアリングされたアダプタを選択します。
アプリが接続されることを願っています。リスニングをブロックした端末には、次のメッセージとともに追加の検証が表示されます。
Waiting for connection on channel 22
Connection from 22:22:22:22:22:22 to /dev/rfcomm0
Press CTRL-C for hangup
BlueTermアプリケーションに入力した内容はすべて/dev/rfcomm0に送信する必要があります。新しい端末を開いて次の操作を行うと、入力時に表示される内容を確認できます。
cat /dev/rfcomm0