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 の出来上がりです。