私の知る限り、一部の携帯電話は IrCOMM 標準を採用しています。Ericsson SH888 と NOKIA 6110 がそうです (NOKIA 8110 については分かりません)。 恐らく、他の携帯電話は IrOBEX 標準 (これに対して接続を確立するやり方は Palm III の章を参照してください) か IrMC を採用していると思われます。 Linux と携帯電話の接続に関する全般的な情報が知りたければ、 TuxMobil をご覧下さい。IrCOMM を使って PPP モデム接続を立ち上げることも、OpenOBEX を用いてファイル (アドレス帳エントリ、絵文字、着信音など) の送受を行うこともできます。
この章では、IrDA を用いた Linux マシンと携帯電話間の接続の方法を説明します。 これは Matthias Schmidt さんからの報告が主体となっています。 また、以下の携帯電話でテストされています。
Ericsson T39m
Siemens S25
Siemens S35i
Siemens ME45
Nokia 6110
Nokia 6210
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) |
ISP と接続する方法はいくつかあります。もっとも基本的な (そしてしばしば唯一の) 方法は、minicom のようなターミナルプログラムを使うことです。
もう少し楽がしたい場合には、 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 |
wvdial での問題 (上記参照?) のため、個人的には最良の方法は標準の PPP tools を使うことだと思います。これは pppconfig コマンドで設定し、pon で開始、poff で切断します。
以下は irda という接続名で PPP 接続を行う場合の例です。 /etc/ppp/pap-secrets
# username connection-name password test irda test |
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 |
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 |
携帯電話と IrDA 接続ができるようになったならば、それを使って楽しめます。 情報を取得したり、SMS にアドレス帳を格納したり、SMS を送信したり、 絵文字を追加 (BMP 形式です) したり、ハードディスクに古い絵文字を待避したり、 同様の処理を着信音 (MIDI 形式です) に対して行えます。 これらの楽しみをおこなうには、以下のものが必要です。
OBEX 通信可能な携帯電話。たとえば Siemens 社のもの
動作する IrDA 接続
scmxx ツール
gscmxx (オプション)
まず、携帯電話を 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. |
以下の OpenOBEX の節を参照ください。携帯電話での OBEX 接続の詳しい情報も近く追加予定です。また、接続設定に関しては Palm III の節の情報を参考にしてください。
Michael McConnell さんから Motorola Timeport GSM と Linux-IrDA とが話せるようにするためのガイドを 彼のウェブサイト に掲示したとの投稿がありました。
T39 ユーザ (たぶん T300 も) への注記: Jean Tourrilhes さんのサイト をチェックしてください。カーネルパッチを行い、 /proc/sys/net/irda/max_tx_window をいじる必要があります。
/dev/ircomm0 を用いて通信セッションを開始するには、たとえば以下のようにします。
dip -t > port ircomm0 > term |
多分 dip の代わりに cu や xc を使うこともできるでしょう。そのときは 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 |
とします。
/etc/conf.modules は次のとおり
alias tty-ldisc-11 irtty alias char-major-161 ircomm-tty |
irattach /dev/ttyS0 -s # (IrDA ポートは SIR モード) |
<ABORT stuff> "" \d\d\d\d\d\dATZE0 OK ATD<phone number to call) CONNECT \d\c |
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/ircomm で minicom を使って AT コマンドを打ち込めるようになります。ばっちりです。 また安定に動作するようです。
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 にあります。
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 を使うことに関する報告を受けています。 これらの機能は、細かい文字集合の問題を除いて動作しています。
gnokii は Linux/Unix 向けツール群で、もうすぐ Nokia (GSM) 携帯電話用の modem/Fax ドライバとして使えるようになります。サポートされている端末は 3110、3810、8110、5110、6110 と、その後継機種です。
これは Florian Lohoff さんによるものです。「一歩一歩すすめましょう。まず irttach /dev/ttySx 等で irda が動くようにしておいてください。次に /proc/net/irda/discovery を実行してみて次のようになっているか見てください。
(flo@paradigm)~# cat /proc/net/irda/discovery IrLMP: Discovery log: nickname: SIEMENS S25, hint: 0x9024, saddr: 0x4286ce23, daddr: 0x04295741 |
次に ircomm と ircomm-tty をロードします。普通は /dev/ircomm* の正しいものを使って minicom などでダイヤルや、電話帳のロードやバックアップが容易に行えるはずです」
Timo Felbinger さんが東芝のラップトップと Siemens S25 の接続について説明してくれています。
「kernel 2.2.12 と patch-2.2.12-irda3、カーネル組み込みの IrDA サポートと ircomm と ircomm-tty をモジュールで用意します。
mknod /dev/ircomm0 c 161 0 とします。
modprobe ircomm と modprobe ircomm-tty をおこないます。
/etc/irda/drivers の最初の部分に modprobe toshoboe を記載しておき、 irattach を開始します。ここで注意しておきたいのは、irattach の前に toshoboe モジュールをロードしないこと。 さもないとデバイスビジーやリソースビジーになります。
dip -t の後、コマンドポート ircomm0 と S25 間で接続が成立しているはずです。 ここで、IR ポートと S25 のどちらも起動されている必要がもちろんあります。 この時の距離はあまり問題にはならないようです。
ターミナルを立ち上げれば、S25 は普通の Hayes 互換モデムのように振る舞い、通常の AT コマンドで使用できます。
pppd によるダイアルアウト接続は特に設定しなくとも使えます」
SCMxx は Siemens 社の携帯電話との間でファイルの送受と、格納されているファイルの消去ができます。 ファイルは指定された名前のファイルまたは標準入力から読み込むことができ、指定された名前のファイルまたは標準出力に書き出せます。 SMS は携帯電話に格納することなく直接送受できます。SCMxx は Siemens 社製のいくつかの携帯電話 (S25 とその後継機だけです) でテストされています。
以下はドイツの 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 を使えます。 ユーザ名やパスワードは不要です。
[1] | 原注: gnokii は Nokia 社の携帯電話をシリアルケーブルで接続するための Linux および *BSD 向けのツールで、 gnokii で入手できます。 |
[2] | 原注: 最新の gnokii コマンドを試してみてください。 挙動が改善されているはずですし、携帯電話との IrDA 接続についての役に立つ文書も用意されています。 |