LinuxZaurusとAdvanced/W-ZERO3[es]を繋げてみる

ここでのLinuxZaurusは、当然ながら何らかのBluetoothバイスを接続している事を前提とします。当方では、SL-C760+ibCard(CF型Bluetoothカード)+BlueZ2.23と言った構成になっています。SL-C3000以降で使用可能なUSB型デバイスは試した事がないのですが、おそらく同様のアプローチで接続が可能かと思います。大まかに流れを示すと、

  • LinuxZaurus:PIN番号設定
  • LinuxZaurus:sdpd立ち上げ+sdptoolによってSPPサービスを公開
  • Ad[es]:Bluetoothバイス探索。BlueZ登録
  • Ad[es]:Bluetoothシリアルポート追加。BlueZにCOM7割り当て
  • LinuxZaurus:rfcomm接続待機
  • Ad[es]:ComRelay立ち上げ
  • LinuxZaurus:ダイアルアップ開始
  • 通信確立


という感じです。長いかもorz ただし、Bluetooth通信を確立した後は、回線切断後も下二つのみの流れで再接続が可能です。
それぞれを具体的に説明していきます。

  • LinuxZaurus:PIN番号設定

Bluetooth機器のペアリング時に必要となる、PIN番号をあらかじめ設定しておきます。私の使用している構成では、/etc/bluetooth/givepinと、/etc/bluetooth/pinの二つのファイルがPIN番号設定に使用されていました。これらのファイルを書き換えて、お好みのPIN番号を設定してください。

  • LinuxZaurus:sdpd立ち上げ+sdptoolによってSPPサービスを公開

これは、LinuxZaurusのBlueZドライバ側が、「私はSPPサーバを持ってますよ〜」と周りのBluetooth機器に公開する動作です。公開するだけなのですが、これをしないとAd[es]側がLinuxZaurusのBluetooth接続で、SPPが使えなくなります。やり方は、Terminal上で

bash $ sdpd
bash $ sdptool add --channel=1 SP

となります。最初にsdpデーモンを立ち上げ、sdptoolによってBluetoothチャンネル1の上にSP(シリアルポート)サービスを公開します。


LinuxZaurusが準備できたので、次はAd[es]側でデバイスの登録を行います。
[コントロールパネル]-[接続]-[Bluetooth]-[デバイス]で、新しいデバイスの追加を行い、「BlueZ(0)」となっているデバイスを登録します。登録時、使用可能なサービスに「シリアルポート」が入っている事を確認してください。入ってなければ、前項の登録に失敗しています。

バイスを登録したら、同様に[コントロールパネル]-[接続]-[Bluetooth]-[COMポート]で、COMポートの追加を行います。新しい発信ポートを押して、BlueZのCOMポートをCOM7に設定してください。これは現状のComRelayがCOM7固定に設定されているため、それに合わせます。

  • LinuxZaurus:rfcomm接続待機

SPPサーバがあるという事を知らせたからには、実際にSPPサーバを走らせなければなりません(つまりBlueZは、サービスがあると「知らせる」事と、実際にサービスを「立ち上げる」事が全く別だったりします・・・)。やり方は、

bash $ rfcomm listen 2 1

のような形となります。この記述であれば、「RFCOMM2(Bluetoothチャンネルは1)として外部からのCOMポート接続を受け付ける」という意味になります。このときのRFCOMM番号は、/etc/bluetooth/rfcomm.confでbindされている、RFCOMM番号では「無い」必要があります。bindされていると、「既にそのRFCOMM番号は存在するから駄目」と、BlueZ側に怒られます。無事に立ち上がれば

Waiting for connection on channel 1

と言った表示が出て、接続待機となります。

ここでようやくComRelayを立ち上げます。無事に立ち上がり、LinuxZaurus側で

Connection from xx:xx:xx:xx:xx:xx to /dev/rfcomm2
Press CTRL-C for hangup

と出たらBluetooth接続確立です。

  • LinuxZaurus:ダイヤルアップ開始

最後に、電話をかけます。LinuxZaurusのダイヤルアップで、Bluetooth用に設定した接続先を選択します。Bluetooth接続先の設定方法は、こちら等に記述があるので、参考にしながら設定してください。今回の設定では、/dev/rfcomm2とします。


以上で、当方の環境では無事接続が出来ました(^^ 一度切断しても、Bluetooth接続が生きていれば再接続が可能です。ただ、なんともやはり手間ですねorz
Ad[es]側、LinuxZaurus側に相応の工夫が出来れば、大分軽減しそうな感じではあるのですが、準備する労力と相談でしょうか・・・