Bluetooth/rfcomm

移動先: 案内, 検索

rfcomm デバイスをセットアップする

rfcommデバイスとは、仮想シリアルポートの一種で、例えば GPRS/3G対応電話 pppd を通じたダイアルアップに使用することができます。

この HOWTO 記事はまだ粗いです。将来的には、Bluetooth のシリアルサービスを使用することで簡単にしていきたいと思っていますが、それまでは必要となる記事をここで見つけてることができます。

初めの一歩

デバイスの BDADDR を見つけ出す

はじめに、デバイスの Bluetooth アドレス (BDADDR) と呼ばれるものを見つけ出す必要があります。例えば、kdebluetoothパッケージにある kbluemon コマンドで見つけることができます。 kbluemon コマンドが見つけやすいように、デバイスを検出可能モードにしておきましょう。

ダイアルアップサービスの RFCOMM チャネルを見つけ出す

デバイスの BDADDR を取得できたら、ダイアルアップ接続サービスに使用される rfcomm チャネルを見つけ出す必要があります。そんなに難しくありません。こうタイプしてみましょう:

sdptool browse <BDADDR>

<BDADDR> の部分をデバイスの6桁の16進数(例 00:11:22:33:44:55)に置き換えてください。 sdptool コマンドの出力の中から, "Service Name: Dial-up Networking" の部分とその下の "Channel: X" の部分を見つけます。 私の場合は次のようになっていました:

Service Name: Dial-up Networking
Service RecHandle: 0x10001
Service Class ID List:
  "Dialup Networking" (0x1103)
  "Generic Networking" (0x1201)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 1
Profile Descriptor List:
  "Dialup Networking" (0x1103)
    Version: 0x0100

あるいは、このようにタイプすると:

sdptool browse <BDADDR> | grep -iA 11 "^Service Name: Dial-up"

目当ての行が見つけやすいです。 この場合だと channel 1 になります。

/etc/bluetooth/rfcomm.conf を設定する

チャネル番号を手に入れたのなら、あとは(ルートユーザで)こうするだけです:

rfcomm bind rfcomm0 <BDADDR> <CHANNEL>

もちろん、<BDADDR> はデバイスのアドレスに再び置き換えて、 <CHANNEL> は前のステップで見つけたチャネル番号に置き換えてください。 このコマンドを再起動するごとにタイプしたくない場合は、/etc/bluetooth/rfcomm.conf ファイルを作り、次の内容:

rfcomm0 {
        # Automatically bind the device at startup
        bind yes;

        # Bluetooth address of the device
        device 01:23:45:67:89:AB;

        # RFCOMM channel for the connection
        channel 1;

        # Description of the connection
        comment "a comment";
}

を含めることで、この手順を自動化できます。もちろん、device のところにはあなたの BDADDR を、channel のところにはあなたのチャネル番号を書き加えてください。 ダイアルアップやシリアルポートが必要となる様々なアプリケーションで使えるデバイス /dev/rfcomm0 の出来上がりです。