***そもそもの動機 [#u12ee770]
まず201SHに壁紙画像を転送したい。うまくいくようなら電話帳のバックアップもしたい。が、転送ケーブルを買うお金がもったいない。無償で使える2Gの携帯電話のデータ転送用アプリケーションである[[ケータイファイル転送ヘルパー:http://mb.softbank.jp/mb/support/2G/download/helper/]]というものは存在しているが、Windowsに接続可能な赤外線ポートを俺が持っていないのでこれも使うことができなかった。

***iMac (Mac OS8.6) [#kfa24e29]
コントロールパネル->赤外線パネルを開く。ここで201SHで赤外線通信->アドレス帳一括送信して赤外線ポート同士を向き合わせると、端末名が表示されるので、なにやら有望に思えた。

#ref(http://reddog.s35.xrea.com/img/ir201sh1.png,nolink,赤外線コントロールパネル)~
さて・・・。どういうプロトコルで接続すればいいのか・・・。携帯電話の赤外線通信はIrMC/IrOBEXなわけだが、ターミナルからシリアル接続して、そこから先が手も足も出なかった。IrMCとIrOBEXについて調べていくうちにLinuxの方が情報が情報が多いのでMacはあきらめた。


***iMac (Yellow Dog Linux 3.0) [#b9afb8ee]
数年前にbootxで8.6と共存させたまま放置してたLinux。たぶんYellow Dog Linux 3.0はRedHat 9相当だったような気がする。とりあえずこのままやってみる。たしか赤外線ポートのドライバは入っていたように記憶している。まずはirattachしてirdadumpで携帯電話が見えているかどうか試してみる。irdadumpはrootでやらないと動かない。irattachは/usr/sbinに配置されていた。
 #irattach /dev/ttyS1 -s
 #irdadump
ずらずらと出力されるので、ここで201SHから赤外線通信->アドレス帳一括送信をして赤外線ビームを発射しつつ、iMacの赤外線ポートの前に置いて様子を見る。出力が長いので、はしょって見ると、
 03:00:21,403765 xid:cmd 5f17d655 > ffffffff S=6 s=* localhost hint=0400 [ Computer ] (25)
 03:00:24,323762 xid:rsp 5f17d655 < 2e0499ed S=6 s=4 Vodafone/V201SH hint=8221 [ PDA/Palmtop Telephony IrOBEX ] (33)
と認識できているのはわかる。どうやらIrCommは使えないようだ。
~
~
ここで突然だが、テスト用の画像を作る。201SHで読める画像はjpeg, png, gifで40KB以下らしい。
ドコモの携帯電話では画像の転送はbase64エンコードしてvMessageやvCardに包んで転送するらしいが、ソフトバンクの携帯電話の場合はバイナリのままOBEXで転送すればよい。[[SoftBank Developers Support Site:http://developers.softbankmobile.co.jp/dp/]]で全ての携帯電話端末の情報を見ることができる。201SHの画面サイズは240×320のようだ。
~
~
IrMCの実装を色々探してみたが、あまり良いのが見つからず、そのうえ[[仕様書が有料化:http://irda.affiniscape.com/displaycommon.cfm?an=1&subarticlenbr=7]]されていたので、IrMCは%%あきらめて%%無視して、OBEXでの接続を試みる。OBEXのフリーの実装は[[OpenOBEX:http://dev.zuckschwerdt.org/openobex/]]というのがあるのでこれを使う。とりあえずコンパイルする。
 #configure --disable-usb --disable-bluetooth --enable-app --enable-debug
 #cd lib
 #make
 # su
 # make install
そして、OBEXでファイルを転送するツールがOpenOBEX付属のirobex_palm3だ。これは本当はpalm3用のツールで、creator idを転送時のヘッダに勝手にくっ付けてしまうのだが、palm以外の今回のような場合、たぶん受け側の携帯電話でPalm用のヘッダは無視してくれると勝手に希望を抱いてこのまま使ってみる。
 #cd ../apps
 #make irobex_palm3
これでOK。ファイルを送るときはirobex_palm3 file、取得する時は引数なしのirobex_palm3だ。
んが、実際にやってみると、
 Link broken (this does not have to be an error)!
というエラーメッセージが出てPUTが失敗する。処理の止まっているobex_transport.cのdo_write関数で、strerror(errno)を埋め込んでエラーを出力させてみるとSocket書き込みでエラーが出ているように見える。カーネルのアップグレードの悪夢がチラリと脳裏をよぎる・・・。うーむわからん。/var/log/messagesを見ると、
 kernel: IrLAP, no activity on link!
エラーメッセージの意味がわからん。。。ググって見ると、[[Re: Sony Vaio 680: IrDA to Nokia 7110 and IrDA to Nokia 6310 - whats the...:http://osdir.com/ml/debian.user.laptop/2002-07/msg00198.html]]まずこれだ。とりあえずここに書いていることに従って/proc/sys/net/irda/max_baud_rateを57600にしてみる。書き換える前の値は16000000だった。これでうまく動いた。受信に成功すると201SH側に
 test.jpg
 を受信しました
 データフォルダ/ピクチャ-に
 ピクチャーフォルダ 0
 に登録しますか?
 1YES
 2NO
とメッセージが出る。40KBより大きなファイルを送信することもできるが、実際にデータフォルダに登録する段になって拒絶される。
~
***今後の課題 [#n93d2ba1]
[[Linux-IrDA quick tutorial:http://www.hpl.hp.com/personal/Jean_Tourrilhes/IrDA/IrDA.html]]を読むと、カーネル2.4系は2.4.20以前のバージョンはバグが多いので2.4.21以上にするのがよいと書いてあったので、いずれカーネルも再構築したい。画像以外のデータの転送も試みたい。
[[Linux-IrDA quick tutorial:http://www.hpl.hp.com/personal/Jean_Tourrilhes/IrDA/IrDA.html]]を読むと、カーネル2.4系は2.4.20以前のバージョンはバグが多いので2.4.21以上にするのがよいと書いてあったので、いずれカーネルもアップデートしたい。画像以外のデータの転送も試みたい。

----
[[CategoryLinux]] [[Category携帯電話]]

|New|Edit|Diff|History|Attach|Copy|Rename|
HTML convert time: 0.001 sec.