Visor and FreeBSD


以前,Visorを買ったんだけど,FreeBSDで Visor と の sync ができなかった. 原因は VisorがUSB接続で, serial 接続を想定した pilot-link が使えないからだった. いろいろあがいてほとんどのことはできるようになったんだけど, めんどくさくて日記に書くのをさぼってました. 最近,りゅう君が Visor を買ったのでここらでまとめてみよう.


FreeBSD と Visor でデータを sync する

NetBSDの uvisor をFreeBSDに移植すれば Visor Deluxeでも pilot-link が使えるんだけど, Visor Platinum以降はこの作戦は使えない. ってことで pilot-link 以外の手段を使う.

coldsyncが Visor に対応しているので,そいつを install する. coldsync の作者は FreeBSD を使っているので動作保証もばっちり. 最新版は coldsync-2.2.2-20011012.tar.gz .
    % tar xvzf coldsync-2.2.2-20011012.tar.gz
    % cd coldsync-2.2.2
    % ./configure --prefix=/usr/local/palm --with-usb --with-i18n
    % make
    # make install
   
これで install は終了. prefixは好みに応じて変えてください.
ここからがややこしい. まず, Visor を初期化する.
   # vi /etc/usbd.conf
   device "Handspring Visor"
        devname "ugen0"
        vendor 0x082d           
        product 0x0100          
        release 0x0100
        attach "/usr/local/palm/bin/coldsync -mI -t usb -s ${DEVNAME}"
   
   # vi /usr/local/palm/etc/palms
   
   # Hash in first column means comment
   # serial|username|userid|unixuser|palmname|config-file
   *Visor*|Akira Funahashi|11960|funa|Visor|/export/home/funa/.coldsyncrc
   
username, userid, unixuser, config-file は自分の環境にあわせて編集してください.
   % vi ~/.coldsyncrc
   
   listen usb {
       device: "/dev/ugen0";
   }

   pda "Kofuna" {
       username: "Akira Funahashi";
       userid: 11960;
       default;
   }
   
username, userid は /usr/local/palm/etc/palms のファイルと 一致させておいてください.
   # killall usbd
   % usbd
   
usbd を自分の権限で実行することに注意!! /dev/ugen0 の パーミッションを 666 なり,自分が読み書きできるように設定しておこう. ほんで Visor をUSBで接続して,Visor側で Hotsync を実行する. そうすると usbd がrequestをつかまえてVisorの初期化をしてくれる.

ここまでで,ようやく準備完了. この初期化は Visor を買ったときに 最初の一回だけ実行すれば良い. 普段の使い方は以下に続く.
   # vi /etc/usbd.conf
   
	attach "/usr/local/palm/bin/coldsync -md -I -t usb -s ${DEVNAME}"
   
attach の行を上のように変更.
   # killall usbd
   # usbd
   
これは root で実行してもおっけー. つまり普段使う分には usbd.conf の 編集や usbd の再起動は必要なし. では,いざ sync.

  • Visor で Hotsync を実行.
あら不思議. ~/.palm/backup/ に Visor のデータが sync されます. Visor に Palmware を install したい場合には ~/.palm/backup/install に install したい prc, pdb ファイルを置いて Hotsync するだけ. 楽勝!!

Visor のデータが吹っ飛んで restore したい場合には /etc/usbd.conf の attachの行を
	attach "/usr/local/palm/bin/coldsync -mr /export/home/funa/.palm/backup -t usb -s ${DEVNAME}"
   
などと変更した後に usbd を再起動して Hotsync する. バックアップのディレクトリには ~/.palm/backup を指定する. restore したいファイル単体を指定することも可能.

FreeBSD上のメモを Visor に転送する

FreeBSDでちょろっと書いたメモを Visor に転送したいとき, conduit の
memo-tidbitsを使えば便利.

まず, memo-tidbits を持ってくる.
  # chmod 755 memo-tidbits
  # mv memo-tidbits /usr/local/palm/libexec/coldsync/
  
memo の conduit の設定をするため, ~/.coldsyncrc を編集.
  conduit fetch {
      type: memo/DATA;
      path: "/usr/local/palm/libexec/coldsync/memo-tidbits";
      arguments:
      Directory: /export/home/funa/.palm/tidbits;
  }
  
を追加する. これで準備完了. FreeBSD側でメモを ~/.palm/tidbits/ の ディレクトリに置く. ファイル名はなんでも良い. メモの先頭の行に

<S>タイトルだよー</S>

などと入れておけばメモのタイトルを指定できる.
Visor で Hotsync を実行すればメモの内容は Visor に転送される. 日本語は SJIS (2001/12/12 訂正 thanks to 安福君) に変換しておかなければいけないので注意.

FreeBSD上のスケジュール(MHC)を Visor に転送する

そもそもFreeBSD上でスケジュール管理をするにはなにを選べばいいのか, って話は省略. mhcを使うことで決定. mhc は Mew, Wanderlust などのメーラと連携して動くので,普段様々な 予定がメールで送られてくる人にはとても便利. これ無しには 生きていけないってくらい便利です.

mhc はあらかじめ pilot-link と連携できるようになっているので, pilot-link が使える人はそちらを使うことをおすすめ.

どちらにせよ, mhc を install. 最新版は mhc-0.25.tar.gz

  % tar xvzf mhc-0.25.tar.gz
  % cd mhc
  # ruby configure.rb (pilot-link を使わないなら --disable-palm を追加)
  # ruby make.rb
  # ruby make.rb install
  # cd emacs
  # vi Makefile (MEW_OPTS, WL_OPTS, GNUS_OPTS を選択)
  # make
  # make install
  
mhc/emacs/00usage.jis を見ながら ~/.emacs を編集. これで mhc の準備完了. この mhc のスケジュールを Visor に 転送するスクリプト(mhc2visor.pl)を作ってみた. 以下, mhc2visor.pl の使い方.
  • p5-Palm-1.2.2 以降を install しておく.
  • mhc2visor.pl を持ってくる.
  • mhc に付属の today を today.visor という名前で /usr/local/bin にでもコピー.
  • today.visor を編集.
      @@ -113,14 +113,14 @@
     
      formatter_normal = Proc .new{|date, items|
      ret = ''
      -  heading = format ("%02d/%02d %s ", date .m, date .d, date .w_s)
      +  heading = format ("%02d/%02d;%s;", date .m, date .d, date .w_s)
      
      first = true
      items .each{|sch|
      heading = heading .gsub(/./, ' ') if !first
      -    ret += heading + format("%-11s %s%s\n",
      +    ret += heading + format("%-11s;%s%s\n",
                            sch .time_as_string,
    	
    ってな感じで2個所の format() の出力形式をちょろっと変更. [Space] -> ';' にします.
  • mhc2visor.pl を編集.
      my $today     = "/usr/local/bin/today.visor";
      my $nkf2sjis  = "/usr/local/bin/nkf -s ";
      my $nkf2euc   = "/usr/local/bin/nkf -e ";
    	
    today.visor と nkf の path を自分の環境に合わせて編集.
  • 早速実行.
      % ./mhc2visor.pl
      add 2001/10/03 [10:30]-[12:00] (専門英語)
      add 2001/10/10 [  :  ]-[  :  ] (情報処理学会論文誌01-〆切)
      add 2001/10/10 [  :  ]-[  :  ] (情報処理学会論文誌02-〆切)
      add 2001/10/17 [13:00]-[13:30] (ミーティング)
      add 2001/10/24 [13:40]-[  :  ] (卒業アルバム[研究室])
      >>
    	
    引数を指定しなければ今月の予定を Visor のデータベースに追加.
      % ./mhc2visor.pl 11
      add 2001/11/14 [13:00]-[13:30] (ミーティング)
      >>
    	
    引数にはその年の月を指定可能.
      % ./mhc2visor.pl 12
      >>
    	
    追加する予定がない場合にはこんな感じで終了する.

    このままではまだ Visor本体には転送されないので, この後, Visor の方で Hotsync を実行する. ~/.coldsyncrc, /etc/usbd.conf の設定は必要なし. usbd.conf の attach に -md -I オプションが付いていることだけは確認. 今の状態では Visorで入力したスケジュールを mhc に 持ってくることはできないけど, mhc2visor.pl を使うことによって Visor で入力したスケジュールが消えちゃうことはない(はず).

日記の感想はこちらへどーぞ.

Generated with mkdiary.pl
Back to my diary