雑対処法集:cdmaOne端末C413SとLinuxをBluetoothでつなぐ

SonyのcdmaOne携帯電話端末「C413S」はBluetoothを搭載しており、 ダイアルアップ接続やOBEXでのデータ交換ができます。 ここではLinuxでau.NETにダイアルアップ接続するためのHOWTOを説明します。

注意!! 以下の記事はあくまで2004年頃の事情を反映したものです。 現在はもっと簡単に接続できるようになっています。

用意するもの

まずはPC側でBluetoothが使えなければ話になりません。 Bluetoothモジュールが内蔵されて、かつLinuxで動作するのであればいいのですが、 そうでない場合はBluetoohデバイスを買ってきましょう。 私は後先考えずにとりあえず買ったのがたまたま動作しましたが、貴方は次の節を読んで、 動作が確認されているデバイスを買ってきましょうね。

以降、私が買ったPlanexの GW-BH01U(実売価格8800円くらい) というUSBデバイスの使用を前提に説明します。ちなみにこの製品はミツミのWIF-0402Cと同等のもののようです。

デバイスドライバのインストール

いくつか候補はあるのですが、2.4.6からLinuxカーネルに正式採用となった、 Bluezを使いました。 Bluez-Kernel 2.1をダウンロードし、指示どおりにコンパイルしてインストールしておきます。 カーネル2.4.6に含まれているBluezはやや古いので、使いません。追記:今では充分に使えるバージョンが含まれています。

Bluezでサポートされているデバイスは、次のページを参照してください。

ユーティリティのインストール

やはりBluezのサイトから、Bluez-LibsとBluez-Utilsをダウンロードしてインストールします。 私はDebianパッケージをそのままインストールしています。さらにrfcommdをインストールしましょう。 こちらはソースパッケージのみ置かれています。

ダイアルアップ接続の設定

ここではau.NETに接続するための設定を説明します。pppconfigで、以下のように設定してください。

Provider Nameau.NET (ここは何でもよい)
Nameserversstatic (210.196.3.183, 210.141.112.163)
MethodPAP
Userau@au-net.ne.jp
Passwordau
Speed115200
Pulse or ToneTone
Phone Number9999
Com空のまま

設定が済むと、/etc/ppp/peers/au.NET の中身は以下のようになる筈です。

# This optionfile was generated by pppconfig 2.0.10. 
# 
#
hide-password 
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/au.NET"
debug
115200
defaultroute
noipdefault 
user au@au-net.ne.jp
remotename au.NET
ipparam au.NET

RFCOMMdの設定

次に、Bluez対応のrfcommデーモンである、RFCOMMdの設定をしておきます。 /usr/local/etc/rfcommd.conf の中身を以下のようにしてください。

options {
  psm 3;	# Listen on this psm.

  ppp 		/usr/sbin/pppd;            
  ifconfig 	/sbin/ifconfig;
  route 	/sbin/route;
  firewall 	/sbin/ipchains;
}

# Default session
default {
  up {
	ppp "call au.NET";
  };
}

na {
  channel 1;
  up {
    ppp "call au.NET";
  };
}

Bluetoothデバイスの接続と確認

それではBluetoothデバイスをPCに接続しましょう。必要な設定はデバイス毎に違うので、 ドキュメントを参照してください。GW-BH01Uの場合は、 あらかじめ hci_usb というモジュールをロードしておきます。 また、bluez-utils というinitスクリプトを起動しておきます。 (Debianの場合は /etc/init.d/ の下にインストールされます)

デバイスを接続したら、hcitool を使って、デバイスが認識されているかどうかを確認しましょう。 コマンドラインで

$ hcitool dev

と入力し、

Devices:                                               
        hci0    xx:xx:xx:xx:xx:xx

のように出力されれば、認識されている事がわかります。

C413Sとの接続

次に、C413Sとの接続試験をしましょう。まずC413S側で、「Bluetoothメニュー」を開き、 「オブジェクトサーバー」を選択し、接続待ち状態にしておきます。次に、以下のコマンドを実行してください。

$ hcitool scan

次のような出力が得られれば、BluetoothデバイスがC413Sを見付けた事がわかります。

Scanning ...

        00:A0:96:xx:xx:xx       C413S

ここで、"C413S"の左側に表示されるのが、C413SのBD addressです。 C413Sの方で「Bluetooth情報」を開いて表示される「機器アドレス」の値と同じである筈です。

ダイアルアップ接続の開始

それではダイアルアップ接続を始めましょう。まずC413S側で「ダイヤルアップネットワーク」を選択し、 接続待ち状態にしてください。

次に、さっき調べたC413SのBD addressを用い、以下のようにrfcommdを起動してください。

$ rfcommd na 00:a0:96:xx:xx:xx

画面が変わって、パケットの送受信状態を表示したら、成功です。

ppp接続に失敗する場合

/var/log/syslog の中を見て、

pppd[4807]: Serial line is looped back.

など、Serail lineに関するエラーメッセージが出ている場合は、 pppの接続先との認証手続きに失敗している可能性があります。/etc/chatscripts/ を覗いて、 設定を見直してください。また、PPP-HOWTOを参照してください。

ダイアルアップ接続の終了

poffコマンドでpppdを終了させればOKです。