LinuxでBluetoothシリアルポートに接続してデータを送信するには?

LinuxでBluetoothシリアルポートに接続してデータを送信するには?

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

おすすめ記事