はじめに

Palm デバイスと Unix を使って生活する方法についてメモっておきました.

私の書いたものを見る前に palm-unix-j mailing list を見たほうが幸せだと思います。 Namazu を使った全文検索もできるようになっています。

Palm デバイスと Unix を使う

  1. pilot-link のセットアップ
  2. デバイスの内容のバックアップ
  3. アプリケーション,データのインストール
  4. メモ帳のデータの転送
  5. メイルの転送
  6. DOC データの作成,転送
  7. ImageViewer 形式の画像変換,転送
  8. ppp を使ってネットワークに接続
  9. Web Clipping もどき
  10. AvantGoを使う

pilot-link のセットアップ

pilot-link 以外にも Palm を Unix で使うためのソフトはある ようですが,ここでは pilot-link の説明だけを行います.

  1. インストール: Linux ではパッケージが用意されていることが 多いようなのでそちらを使うのが簡単だと思います. 私はソースを入手して自分でコンパイルしました.
  2. デバイスファイルの準備: デフォルトでは /dev/pilot を 使うようになっています.私は以下のようにして専用のデバイスファイル を作成しました.
    $ cd /dev
    $ ls -l /dev/tty0?
    crw-------  1 uucp  wheel  8, 0 Dec 23 08:09 /dev/tty00
    crw-------  1 uucp  wheel  8, 1 Dec 23 08:09 /dev/tty01
    crw-------  1 uucp  wheel  8, 2 Dec 23 08:09 /dev/tty02
    crw-------  1 uucp  wheel  8, 3 Dec 23 08:09 /dev/tty03
    $ su -
    Password:
    # mknod /dev/palm3 c 8 0
    # chown js3guj:js3guj /dev/palm3
    	  
  3. 環境変数: PILOTPORT には上記で作成したデバイスを指定しています. PILOTRATE ですが PalmOS3.3 以降では 115200bps まで設定できる ようですがどうも再送が頻発しているらしくときどき転送が止まった 状態になり結局のところ時間がかかっているようなので,私は 57600 に しています.
    PILOTPORT=/dev/palm3
    PILOTRATE=57600
    export PILOTPORT PILOTRATE
    	  

デバイスの内容のバックアップ

pilot-link 付属の pilot-xfer で行います.

最初は以下のようにしてデバイスにある全データベースをバックアップ します.

$ pilot-xfer -b [backup directory]
      

[backup directory] には適当なディレクトリを指定します.このディ レクトリの中にデータベース毎のファイルができます.2回目からは以 下のようにします.

$ pilot-xfer -s [backup directory]
      

デバイスの中の変更のあったデータベースだけがバックアップされます.

pilot-link だけを使い,純正の HotSync マネージャやそのほかの HotSync ソフトウェアを使わない場合,デバイス側で削除したレコード がずっと残ったままになります.(正確にいうと削除されたレコードと いう情報,レコードの実体は削除されてしまっている.HotSync 時にデ スクトップ側の対応するデータを削除するために必要だから?)これが パフォーマンスに影響するようです.特に頻繁に新規レコード挿入,削 除が行われるメイルのデータベースなどがそうです.というわけでとき どき削除レコードを掃除してやります.私は毎回やっています.

$ pilot-xfer -P
      

アプリケーション,データのインストール

pilot-xfer を使います.複数のデータベースを指定することもできます.

$ pilot-xfer -i [pdb, prc などの Palm のデータベース]
      

メモ帳のデータの転送

pilot-link 付属の install-memo, memos を使います.

Palm デバイスへの転送には install-memo を使います.以下のように カテゴリを指定することも可能です.

$ install-memo -c Movies SavingPrivateRyan.txt
      

私は Cinema Now を lynx -dump でセーブしたものを転送したりしています.

Palm デバイスからメモ帳を抽出するには memos を使います.

$ memos | nkf -e > memos.out
      

この場合,1つのファイルに mbox 形式? で全データが保存されるので うっとおしい場合もあるあるでしょう.その場合以下のように ディレクトリを指定すると1件ずつ取り出すことが可能です.

$ memos -d hoge
      

この場合,ディレクトリ hoge の下にカテゴリ名のディレクトリが作成 されその中にメモ帳の1行目のファイル名のファイルが作成されます. メモ帳の1行目が漢字の場合,Quoted Printable に変換されるので ちょっとうっとおしいかもしれません.

メイルの転送

これについてはこちらも参照.

pilot-link 0.9.3 だと優先度がすべて High になってしまうので 以下のパッチをとりあえずあてておきます. その他、ヘッダ名の大文字小文字の区別をしないようにと ハードコードしちゃってますが、自分宛のメイルの優先度を High に設定するようにしています。

--- pilot-mail.c	2001/08/22 19:42:38	1.2
+++ pilot-mail.c	2001/09/01 17:40:08
@@ -117,19 +117,19 @@
   
   /* Decide on what we do with m->sendTo */
   
-  if (strncmp(holding, "From:", 5)==0) {
+  if (strncasecmp(holding, "From:", 5)==0) {
     m->from = strdup(skipspace(holding+5));
-  } else if (strncmp(holding, "To:",3)==0) {
+  } else if (strncasecmp(holding, "To:",3)==0) {
     m->to = strdup(skipspace(holding+3));
-  } else if (strncmp(holding, "Subject:",8)==0) {
+  } else if (strncasecmp(holding, "Subject:",8)==0) {
     m->subject = strdup(skipspace(holding+8));
-  } else if (strncmp(holding, "Cc:",3)==0) {
+  } else if (strncasecmp(holding, "Cc:",3)==0) {
     m->cc = strdup(skipspace(holding+3));
-  } else if (strncmp(holding, "Bcc:",4)==0) {
+  } else if (strncasecmp(holding, "Bcc:",4)==0) {
     m->bcc = strdup(skipspace(holding+4));
-  } else if (strncmp(holding, "Reply-To:",9)==0) {
+  } else if (strncasecmp(holding, "Reply-To:",9)==0) {
     m->replyTo = strdup(skipspace(holding+9));
-  } else if (strncmp(holding, "Date:",4)==0) {
+  } else if (strncasecmp(holding, "Date:",4)==0) {
     time_t d = parsedate(skipspace(holding+5));
     if (d != -1) {
       struct tm * d2;
@@ -138,8 +138,24 @@
       m->date = *d2;
     }
   }
-  m->priority = 1;
 
+  if (m->to)
+    {
+      if (strstr(m->to, "hogehoge@hogehoge") ||
+	  strstr(m->to, "xxxx@xxxx"))
+	{
+	  m->priority = 0;
+	}
+      else
+	{
+	  m->priority = 1;
+	}
+    }
+  else
+    {
+      m->priority = 1;
+    }
+  
   holding[0] = 0;
   
   if (t)
@@ -174,7 +190,8 @@
 
 void sigint(int num)
 {
-  *((char*)0)=0;
+	fprintf(stderr, "SIGINT received.  exiting...\n");
+	exit(1);
 }
                   
 int main(int argc, char *argv[])
@@ -629,7 +646,7 @@
     
     sscanf(buffer, "%*s %*d %d", &len);
     
-    if (len > 16000) 
+    if (len > p.truncate) 
       continue; 
 
     sprintf(buffer, "RETR %d\r\n", i);
      

DOC データの作成,転送

makedoc7, txt2pdbdoc などがあります.私は txt2pdbdoc-1.2.1 を使っています.GPL'ed software です.

使い方は簡単です.作成したデータベースの転送には pilot-xfer を 使います.

$ txt2pdbdoc 'Short FAQ of comp.sys.palmtops.pilot' palmFAQ.txt palmFAQ.pdb
      

pdbtxt2html, html2pdbtxt も付属していますが私はほとんど使っていません. 後者は結構便利かも知れません.

ImageViewer 形式の画像変換,転送

imgvtopgm-2.0 と GIMP を使っています. SnapShot というスクリーンショットを撮るソフトウェアを使って いるのですがこれでできた pdb をうまく変換できなかったので 以下の部分をコメントアウトします.

*** ipdb_r.c    2000/09/01 19:18:32     1.1
--- ipdb_r.c    2000/09/01 19:19:59
***************
*** 264,274 ****
                r->extra   = NULL;
                break;
        }
! 
        if((r->rec_type != IMG_REC && r->rec_type != TEXT_REC)
        || memcmp(r->unknown, IPDB_MYST, 3) != 0)
                return E_NOTRECHDR;
! 
        return 0;
  }
  
--- 264,274 ----
                r->extra   = NULL;
                break;
        }
! /*
        if((r->rec_type != IMG_REC && r->rec_type != TEXT_REC)
        || memcmp(r->unknown, IPDB_MYST, 3) != 0)
                return E_NOTRECHDR;

! */
        return 0;
  }

      

imgvtopgm 自体は ImageViewer 形式と PBM, PNM, PGM などとの 変換しか行わないので,PNG への変換に GIMP を使っています.

ppp を使ってネットワークに接続

http://www.pilot-link.org/howto/ppp/ に極めて詳しい説明があります。

前述の pilot-mail を使うためにはいろいろ手間がかかるので最近は ppp で直接繋いで,PaPi-Mail で直接 IMAP でメール転送しています.

$HOME/.ppprc を用意します.

/dev/palm3
19200
local
lock
+chap
-pap
#nodetach
passive
persist
proxyarp
holdoff 3
#debug
#kdebug 8
ms-dns 10.0.0.2
ms-dns 10.0.0.1
10.0.0.2:10.0.0.4
      

あとは shell のプロンプトで pppd と打つだけです. ただタイミングがシビアみたいなので pppd と打ってからすぐに Palm 側で接続をはじめないとだめなようです.でないと後述の 再起動しかない状態になりやすいようです.

NetBSD-1.4.3 を使っていますが,pppd が悪いのか,NetBSD のシリア ル関係のせいか,はたまた PalmOS が悪いのかときどきシリアルデバイ スが使えなくなる状態になります.リブートするしかないので非常にうっ とおしいです.

WorkPad30J や Visor with シリアルクレードルでは起こらないので TRGpro だけの問題かもしくは OS3.5 以上の問題なのかもしれません.

NetBSD や OpenBSD では今のところ IrDA の実装が行なわれていませんので Palm との ppp over infra red ができないと思っていましたが ComLinkを使って ppp over SIR で繋ぐことができました。Obi-Wan Kenobi とは 通信できませんが、すばらしいです。

Web Clipping もどき

sitescooperというのを 最近使っています.またこれをインストールするときに iSiloの linux 用コンバータを 発見しました.この iSilo ファイルってのは結構読みやすいです. 1枚もののページはこれで直接変換してしまったほうがはやいかも. 試しに Jargon File を変換しましたが いい感じです.

1枚ものでもなくてもリンクをたどって 1個の iSilo ファイルを生成して くれるようです.(2001-04-18 追記)

AvantGo を使う

malsync というのがありこれを使うと Unix を使って同期ができます. ソースがついているのですが,NetBSDでは上手く動作させることが できていません.ので linux 用のバイナリをエミュレーションで 動かしています.

pppd で繋いで直接 MobileLink で同期させるという方法もあります. こちらだと SSL 使って接続可能です.

2001-09-14 追記。malsync 使っていても、直接つないでも SSL の ポート(443番)を使っています。なので暗号化は行なわれているのでは ないかと思います。バージョンはそれぞれ malsync version 2.0.4, AvantGo 4.0 build 941 です。

2002-01-10。最近はもっぱら Plucker を使っています。非常に見栄え がいいです。


Comments, suggestions, and donations are welcome.

Go to index page
Copyright (c) 1999-2003 IKEDA Shigeru. ALL RIGHTS RESERVED.
Last modified $Date: 2003/10/06 10:38:41 $

Valid XHTML 1.0! Valid CSS1!

Hosted by www.Geocities.ws

1