3.10. 携帯電話接続

私の知る限り、一部の携帯電話は IrCOMM 標準を採用しています。Ericsson SH888 と NOKIA 6110 がそうです (NOKIA 8110 については分かりません)。 恐らく、他の携帯電話は IrOBEX 標準 (これに対して接続を確立するやり方は Palm III の章を参照してください) か IrMC を採用していると思われます。 Linux と携帯電話の接続に関する全般的な情報が知りたければ、 TuxMobil をご覧下さい。IrCOMM を使って PPP モデム接続を立ち上げることも、OpenOBEX を用いてファイル (アドレス帳エントリ、絵文字、着信音など) の送受を行うこともできます。

3.10.1. 概説

この章では、IrDA を用いた Linux マシンと携帯電話間の接続の方法を説明します。 これは Matthias Schmidt さんからの報告が主体となっています。 また、以下の携帯電話でテストされています。

IrDA の基本部 (カーネル設定、/etc/modules.conf, irattach, PPP) を、これまでの節で記載したとおり設定します。PPP に関しての詳細は、 PPP-HOWTO も参照ください。 次に、携帯電話が認識されているかどうかをチェックします。
# irdadump
xid:rsp be1eb736 > 08666644 S=6 s=4 SIEMENS S35 hint=9024 [ Modem IrCOMM IrOBEX ] (28)
# irdadump
xid:rsp be1eb736 > 35450000 S=6 s=4 Nokia 6100 hint=8101 [ PnP Telephony ] (28)
# irdadump
xid:rsp be1eb736 > 04489982 S=6 s=5 SIEMENS ME45 hint=b124 [ PnP Modem Fax IrCOMM IrOBEX ] (29)

3.10.1.1. PPP ダイアルアップソフトウェア

3.10.1.1.2. wvdial

もう少し楽がしたい場合には、 wvdial. が使えます。これは設定が容易で、多数のローミングプロバイダとドイツの Tante T gh0st で動作します。私も昨日多少テストしましたが、wvdial では HRZ のダイアルインサーバに接続することはできませんでした。wvdial は毎回 "Bad password" と答えますが、これはサーバが携帯電話用のソフトモデムが login とパスワードの文字列を送るより早く反応するためです。 標準の ppp 設定は以下です。 /etc/wvdial.conf:
[Dialer Defaults]
Modem = /dev/ircomm0
Baud = 9600
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Password = internet
Username = internet
Phone = 00393492002800
ISDN = 0
Modem Type = Analog Modem

[Dialer shh]
Init3 = ATM0

3.10.1.1.3. PPP Tools

wvdial での問題 (上記参照?) のため、個人的には最良の方法は標準の PPP tools を使うことだと思います。これは pppconfig コマンドで設定し、pon で開始、poff で切断します。

以下は irda という接続名で PPP 接続を行う場合の例です。 /etc/ppp/pap-secrets
# username	connection-name	password
test	irda		test
/etc/ppp/peers/irda
hide-password
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/irda"
debug
/dev/ircomm0
9600
defaultroute
noipdefault
user test
remotename irda
ipparam irda
usepeerdns
/etc/chatscripts/irda
ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' 
ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED
'' ATZ
# dial-in number of the ISP
OK-AT-OK ATDT<YOUR_ISP_PHONE_NUMBER>
CONNECT \d\c

3.10.1.2. 絵文字や着信音や SMS などなど

携帯電話と IrDA 接続ができるようになったならば、それを使って楽しめます。 情報を取得したり、SMS にアドレス帳を格納したり、SMS を送信したり、 絵文字を追加 (BMP 形式です) したり、ハードディスクに古い絵文字を待避したり、 同様の処理を着信音 (MIDI 形式です) に対して行えます。 これらの楽しみをおこなうには、以下のものが必要です。

まず、携帯電話を IrDA サービスにバインドします。
 
# irattach /dev/ttyS1 -s
IrDA: Registered device irda0

接続を確認します。
# irdadump
xid:cmd 9d5dcefa < ffffffff S=6 s=3 (14)
xid:cmd 9d5dcefa < ffffffff S=6 s=4 (14)
xid:rsp 9d5dcefa > 08666644 S=6 s=3 SIEMENS S35 hint=9024 [ Modem IrCOMM IrOBEX ] (28)

携帯電話の情報を表示します。
# scmxx -i
Accessing device /dev/ircomm0
OK, a modem device is present.
Vendor:         SIEMENS
Model:          S35i
Revision:       20
Serial (Phone): xxxxxxxxxxxxxxx
Serial (SIM):   xxxxxxxxxxxxxxx
SIM-ID:         xxxxxxxxxxxxxxxxxxxxx
Operator:       D2
SMS Server:     +491722270333
Charset:        GSM
Battery:        40%
Signal/BER:     -79 dBm/?
Time:           02/10/07,11:48:49
Readable Slots: bmp: 0-1, mid: 0, vcs: 1-30
Phonebooks:     FD, SM, ON, ME, LD, MC, RC, OW, MS, CD, BL, RD, CS
SMS storages:   SM

アドレス帳をディスクにセーブします。
# scmxx -g -PSM -f phonebook
Accessing device /dev/ircomm0
OK, a modem device is present.
Detected SIEMENS S35i
phonebook created.
Receiving: 1 2 3 4 5 6 7 8 9 [...] 
Received all gettable entries

SMS を表示します (ここではスロット 3 です)
# scmxx -g -S3 -f -
Accessing device /dev/ircomm0
OK, a modem device is present.
Detected SIEMENS S35i
Looking for SMS of specified type...
Receiving incoming, read SMS from slot 3.
Slot: 3
From: xxxxxxxxxxxxxx
Date: 2002-10-03 23:11:47 (GMT+0)
SMSC number: xxxxxxxxxxxxxxxx
PDU type: SMS-DELIVER MMS
Data Coding Scheme: 7bit-GSM
Message length: 160
Message:
	xxxxxxxxxxxxxxxxxxxxxxxxxx

現在の絵文字をディスクにセーブします。
# scmxx -g -B0 -f logo.bmp
Accessing device /dev/ircomm0
OK, a modem device is present.
Detected SIEMENS S35i
Slot 0...
Receiving packet 1 of 5...
logo.bmp created.
Receiving packet 2 of 5...
Receiving packet 3 of 5...
Receiving packet 4 of 5...
Receiving packet 5 of 5...
File transfer complete.

現在の着信音をディスクにセーブします。
# scmxx -g -M0 -f sound.mid
Accessing device /dev/ircomm0
OK, a modem device is present.
Detected SIEMENS S35i
Slot 0...
Receiving packet 1 of 1...
sound.mid created.
File transfer complete.

3.10.2. OBEX 接続

以下の OpenOBEX の節を参照ください。携帯電話での OBEX 接続の詳しい情報も近く追加予定です。また、接続設定に関しては Palm III の節の情報を参考にしてください。

3.10.3. 特定の携帯電話関連の情報

3.10.3.2. Ericsson

T39 ユーザ (たぶん T300 も) への注記: Jean Tourrilhes さんのサイト をチェックしてください。カーネルパッチを行い、 /proc/sys/net/irda/max_tx_window をいじる必要があります。

1. 設定

/dev/ircomm0 を用いて通信セッションを開始するには、たとえば以下のようにします。

dip -t
> port ircomm0
> term

多分 dip の代わりに cuxc を使うこともできるでしょう。そのときは cu -l /dev/ircomm0 または xc -l /dev/ircomm0 とします。 Ericsson GF768 と IR Modem DI 27 の組み合わせを試行中との報告もありました。

Benny Amorsen さんによると「SH888 はシリアルケーブル接続の際に IrDA ポートをエミュレートします。 設計者がなぜこんな妙なことを考えたのかはちょっと想像もつきませんが、Windows との組み合わせで動かすにはこのやりかたを使います。 私は Windows で動かそうとしたことはありませんけど」

Ales Dryak さんから以下のサーベィを貰いました (Debian/GNU Linux ディストリビューションのようなので、設定を適宜書き替えてください)。Mobile Ericsson SH888 は ati1 = 980408 1035 PRGCXC125101 で、

mknod /dev/ircomm0 c 161 0
mknod /dev/ircomm1 c 161 1

とします。

2. /etc/conf.modules

/etc/conf.modules は次のとおり

alias tty-ldisc-11 irtty
alias char-major-161 ircomm-tty

3. /etc/irda/drivers は次のとおり

irattach /dev/ttyS0 -s # (IrDA ポートは SIR モード)

4. /etc/chatscripts/sh888 は次のとおり

<ABORT stuff>
"" \d\d\d\d\d\dATZE0
OK ATD<phone number to call)
CONNECT \d\c

5. /etc/ppp/peers/sh888 は次のとおり

noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/sh888"
/dev/ircomm
115200
defaultroute
noipdefault
user <your username> # don't forget to add your password to chap secrets or chat script

SH888 に対して pppd 呼び出し (pppd call sh888) を行い、少し待った (だいたい 30 秒) 後は、私たちのイントラネットとインターネットに対して自由にアクセス (telnet、ftp、www、icmp はテストしました) できるようになっています。 さらには /dev/ircommminicom を使って AT コマンドを打ち込めるようになります。ばっちりです。 また安定に動作するようです。

3.10.3.2.1. ツール

Gerhard Gonter さんの報告です「メーリングリストの数名のメンバが Ericsson 社の携帯電話 SH888 を Linux-IrDA ソフトウェアで使うことに成功しています。このソフトウェアは AT コマンドを使って電話の各部にアクセスでき、とても役に立ちます。 内蔵の電話帳は興味深い操作対象でしょう。

インターネットで少々検索した (FreshMeat、Deja、Yahoo など) 範囲では、Linux またはその他の Unix 向けの、電話帳のツールを見つけることはできませんでした。 というわけで、小さな Perl スクリプトと関連モジュールを書いてみました。 現在個人的には使える処まで来ましたので、整理して開発の初期段階としてのリリースを行います。tarball は 次のところ にあります。」

メーリングリストでは gsmlib の同時使用が推奨されていましたが、 これを赤外線ポートで使うことも、私の SH888 と接続することもできていません。 Florian Lohoff さんの報告では「S25 の種の携帯電話では動くようです。 ただ、S25 が CR LF に反応しないようなので ifdef を変更する必要はありました。 その変更後、/dev/mobilephone -> /dev/ircomm で張ったリンクで S25 経由での SMS 送信は問題なく行えています。 電話帳のバックアップはまったく動いていません。これは電話帳が空の場合に S25 がわけのわからない応答を返すためです」

SMS メッセージと電話帳の詳細仕様は、無料 (FSF の意味でのフリー、ではなく ;-) で ETSI からダウンロードできます。GSM 07.07 (それと、多分 GSM 07.05 も必要になるでしょう) を探してみてください。 ダウンロードする前に登録が必要です。この標準は Acrobat PDF 形式です。S25 がサポートするコマンドは無料で Siemens のウェブサイトに PDF 形式であります。

SH888 の AT コマンドをまとめて解説した文書が Ericsson のサイトの 888_R1D.pdf にあります。

3.10.3.3. NOKIA

Carlos Vidal さんによると 「私の勘違いなら教えてほしいんですが、どうやら Nokia の携帯電話には純粋なハードウェアモデムは搭載されておらず、PC の WinModem と同じ類のものが載っているようです。Nokia がモデム接続のことについて書いている個所には毎回 "Windows ソフトウェアモデム" とか、それに類する語が使われています。 これに加えて傍証として、この携帯電話には Nokia 専用のウィンドウズ向けソフトウェア (Nokia Cellular Data Suite という名称です) が必要ですし」

Joonas Lehtinen さんによると「61xx シリーズの機種では、確かにそうです。 8810、9000(i) と 9110 の各機種は問題なく動作します (つまり、本物のモデムを内蔵しています)。 私の Nokia 9000 は linux との組み合わせでは IrCOMM と答えます」

Carlos Vidal さんからの試行と修正案は「私の Nokia 6110 で Linux を使ってどこまでできるか試してみています。ちょうど gnokii-0.2.4 [1] をコンパイルしたところですが、これは動きませんでした [2]。手元に Nokia Data Suite ソフトウェアがあるので、これまでに以下の接続を試しています。

Nokia 6110 <-- Nokia Cable --> PC/Linux <-- Null-modem cable --> PC/W95

PC/Linux では program snooper (Itoh Jun-ichiro (いとじゅん) さん作) をシリアルポートを正しく設定できるよう小変更を加えて使っています。 これ以外の同様の動作を行えそうな sniffer ソフトウェア (たとえば sniffit) の URL は見つけられませんでした(原注: シリアルスニファについては付録参照)。

通常は snooper が正しいボーレートに設定されているなら、電話と PC/W95 は snooper が間にない場合と同じように通信できるはずです。 これはミノルタのディジタルカメラのプロトコルを解読した際にはうまく動いたのですが、Nokia の携帯電話の場合、電話のほうが応答しないか、しばらくだんまりになってしまいます。

どうやら、通信の最初の段階ではタイミングがきわめて重要なようです。 これまでで得られたログは次のものです。

0>1: UUUUUUUUUUUUUUUUUUUUUUUU
line 0: LE *DTR *RTS ST SR CTS CD RI *DSR
line 1: LE *DTR *RTS ST SR CTS CD RI *DSR
0>1: UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUU\x1e\x00\x0c\x02\x00\x09\x00\x01\x00\x0d\x00\x00\x02\x01@\x00P\x
06
1>0: \x18\x00\x00\x00\xfc\x18\x00\x00\x00\x00\x00\x00\xc0\xf0
0>1: \x1e\x00\x0c\x02\x00\x09\x00\x01\x00\x0d\x00\x00\x02\x01@\x00P\x06
1>0: \x18\x00\x00\x00\x18\x00\x00\xc0\xf0\x18\x00\x00\x00\x00\x00\x00\xc0\xf0
0>1: \x1e\x00\x0cd\x00\x06\x00\x01\x00\x10\x01`\x13\x13
1>0: \x18\x00\x00\xf0\x00\x00\xfc
0>1: \x1e\x00\x0cd\x00\x06\x00\x01\x00\x10\x01`\x13\x13

0 は PC/95 で、1 は電話です。通信は一連の 'U' (0x55) で、DSR/DTR が on の状態で始まります。電話は '0x18 0x00 ...' と答えます。 この一連の会話はしばらくの間、両方ともだんまりになるまで続き、 最後には電話がクラッシュしてリセットする唯一の方法は電池を抜くだけ、という状態になります。

私の推定では、電話が正しいボーレートを見つけようとし、それが snooper を入れたことに伴う遅れのため失敗している、という現象ではないかと思います。 恐らく赤外線接続で用いている IrDA プロトコルで何かしないといけないのではないかと思っています」

Wessel de Roode さんによると「私は (Palm Pilot では) Discovery IR hint ビットを使うようにしています。

Discover:
0:xxxxxxxx:81.01
    01  IR_HINT_PNP     01  IR_HINT_TELEPHONY (IrMC ?)
    80  IR_HINT_EXT

Device info query:
\006Device\012DeviceName
    4e 6f 6b 69 61 20 36 31 30 30       Nokia 6100

Nokia の PNP デバイスクエリができるようにもしました。Nokia は一台の PNP デバイスを持っています。このデバイスは具体的には 9600 ボーのモデムに相当する PNPC100 です。このクエリの設定を消してしまったので、回復するためのヒントを持っている人は教えてください。 確か IrDA:<dunno>:PNP:Comp#01 のようなものだったはずです。 同じ IrDA のクエリの IrDA:<dunno>:PNP:CompCnt は Nokia で使える PNP デバイス数を返します。ここではこれはひとつだけです。

ほかにも SMS メッセージを送受したり、アドレス帳を更新するのに gsmlib を使うことに関する報告を受けています。 これらの機能は、細かい文字集合の問題を除いて動作しています。

3.10.3.3.1. おすすめのツール

gnokii は Linux/Unix 向けツール群で、もうすぐ Nokia (GSM) 携帯電話用の modem/Fax ドライバとして使えるようになります。サポートされている端末は 3110、3810、8110、5110、6110 と、その後継機種です。

3.10.3.4. Siemens S25

Timo Felbinger さんが東芝のラップトップと Siemens S25 の接続について説明してくれています。

3.10.3.4.1. おすすめのツール

SCMxx は Siemens 社の携帯電話との間でファイルの送受と、格納されているファイルの消去ができます。 ファイルは指定された名前のファイルまたは標準入力から読み込むことができ、指定された名前のファイルまたは標準出力に書き出せます。 SMS は携帯電話に格納することなく直接送受できます。SCMxx は Siemens 社製のいくつかの携帯電話 (S25 とその後継機だけです) でテストされています。

3.10.4. ドイツ e-plus

以下はドイツの e-plus ユーザ向けの記述です。

e-plus 契約には Free&Easy を除いて WWW への PPP 接続が含まれており、別の登録は必要ありません。このサービスは電話番号 123100 でドイツ国内のどこでもつかえます。 また、これは買ってきて直ぐに使えます。

pppd 設定は

/dev/ircomm0
defaultroute
netmask 255.255.255.0
debug
mtu 552
crtscts
noauth
connect '/usr/sbin/chat -v -f /etc/ppp/eplus.chat'
chat script /etc/ppp/eplus.chat:

ABORT "BUSY"
ABORT "ERROR"
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "NO ANSWER"
SAY "initializing modem..."
"" "AT"
"OK" "ATZ"
SAY "dialing..."
"OK" "ATDT123100"
SAY "waiting for CONNECT..."
"CONNECT" ""
SAY "connected!"
SAY ""

ネームサーバとしては 192.76.144.66 を使えます。 ユーザ名やパスワードは不要です。

Notes

[1]

原注: gnokii は Nokia 社の携帯電話をシリアルケーブルで接続するための Linux および *BSD 向けのツールで、 gnokii で入手できます。

[2]

原注: 最新の gnokii コマンドを試してみてください。 挙動が改善されているはずですし、携帯電話との IrDA 接続についての役に立つ文書も用意されています。