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