2010年3月12日金曜日

スキャナは動くのか?

SnapScan S1500 を購入したのですが、 無事画像を取り込めるようになりました。 使用しているのは snv_134 です。

関係したソフトウェア

  • SANE スキャナソフトウェア
    OpenSolaris パッケージimage/scanner/xsane 
    OpenSolaris パッケージimage/scanner/xsane/sane-backends 
    OpenSolaris パッケージimage/scanner/xsane/sane-frontend 
    xsane ソースコードhttp://www.xsane.org/メニューを日本語にするため
    sane-backends ソースコードhttp://www.sane-project.org/最新の版にするため
  • GIMP 画像エディタ
    OpenSolaris パッケージimage/editor/gimp連係して動作するので
  • コンパイラ
    OpenSolaris パッケージsunstudioexpresssunstudio12u1 でも問題ないと思います

パッケージを導入

OpenSolaris のパッケージを導入しました。 パッケージマネージャーを使ったので、とても簡単。 GIMP と Sun Studio Express は以前に導入していたので、今回は何もしていません。

xsane のメニューを日本語に

xsane のソースコードをダウンロード、展開し、日本語のメッセージファイルを取り出します。

$ wget -P /PATH/TO/DOWNLOADDIR/ http://www.xsane.org/download/xsane-0.997.tar.gz
$ gtar xfz /PATH/TO/DOWNLOADDIR/xsane-0.997.tar.gz
$ cp -p xsane-0.997/po/ja.gmo /PATH/TO/CATALOGDIR/xsane.mo

sane-backends をコンパイル

OpenSolaris のリポジトリにある sane-backends は 1.0.19 で、 これには SnapScan S1500 のサポートが含まれていません。 /etc/sane.d/fujitsu.conf を編集すれば認識しますが、 多々問題があるようです。 そこで、1.0.20 のソースコードをコンパイルして、必要なモジュールを使用します。

$ wget -P /PATH/TO/DOWNLOADDIR/ ftp://ftp.sane-project.org/pub/sane/sane-backends-1.0.20/sane-backends-1.0.20.tar.gz
$ gtar xfz /PATH/TO/DOWNLOADDIR/sane-backends-1.0.20.tar.gz 
$ cd sane-backends-1.0.20/
$ CC=cc ./configure --prefix=/usr
$ gmake
$ gmake
$ cp .libs/libsane-fujitsu.so.1 /PATH/TO/LIBDIR/

gmake 中にエラーが起きたのですが、無視して再度 gmake。これで最後までいきました。

xsane 起動スクリプトを作る

メッセージファイルとライブラリをシステム側に放り込むことも出来るのですが、 将来的に正式に入った場合にいやなことが起きるのはいやなので、 このようなスクリプトを作って自分の bin に置きます。 NLSPATH を設定すると、 自分のディレクトリにおいたメッセージファイルを参照させることが出来ます。 LD_PRELOAD を設定すると、 指定した共有ライブラリを、 システム側に存在する同名のライブラリの代わり使用することが出来ます。 このライブラリの置き換えが正しく行われたかどうかは、 pldd コマンドで調べることが出来ます。

$ cat ~/bin/xsane
#!/usr/bin/sh

NLSPATH="/PATH/TO/CATALOGDIR/%N.mo" export NLSPATH
LD_PRELOAD=/PATH/TO/LIBDIR/libsane-fujitsu.so.1 export LD_PRELOAD

exec /usr/bin/xsane "${@}"

GIMP に xsane 起動スクリプトを認識させる

GIMP を起動したことがない場合は、一度起動して終了させます。 そのあと、
$ ln -s ../../bin/xsane ~/.gimp-2.6/plug-ins/

update_drv コマンドを実行

SnapScan S1500 の電源をつなぎ、USB ケーブルを接続し、蓋を開きます。 ここで、update_drv を実行します。

OpenSolarisでscansnap、名刺ファイリングソフトで名刺を管理 を参考にさせていただきました。
$ pfexec update_drv -a -i 'usb4c5,11a2.100' ugen

/etc/sane.d/fujitsu.conf を更新する

エディタで、次のように更新しました。

$ diff -u /etc/sane.d/fujitsu.conf{.orig,}
--- /etc/sane.d/fujitsu.conf.orig 水 12月  2 16:25:05 2009
+++ /etc/sane.d/fujitsu.conf 火  3月  9 21:04:39 2010
@@ -62,3 +62,6 @@
 
 #scansnap S510
 usb 0x04c5 0x1155
+
+#scansnap S1500
+usb 0x04c5 0x11a2

デバイスにアクセスできるようにする

実は、まだデバイスにアクセスできるようにする、格好のいい方法を見つけられていません。 USB ケーブルを抜いたり蓋を閉じたり、つまり電源を切るとこのノードは消えるので、 一度所有者を変えればいいといったものではないのです。 とりあえずは力業の chown を必要な時に実行しています。

$ ls -lL /dev/usb/4c5.11a2/0/
total 0
crw-------   1 root     root      96,  2  3月  9 20:25 cntrl0
crw-------   1 root     root      96,  3  3月  9 19:16 cntrl0stat
crw-------   1 root     root      96,  1  3月  9 19:16 devstat
crw-------   1 root     root      96,  4  3月  9 19:16 if0in1
crw-------   1 root     root      96,  5  3月  9 19:16 if0in1stat
crw-------   1 root     root      96,  6  3月  9 19:16 if0out2
crw-------   1 root     root      96,  7  3月  9 19:16 if0out2stat
$ pfexec chown 自分の名前 /dev/usb/4c5.11a2/0/*

これでひとまず

これでひとまず動くようになりました。 実際には、かなりの試行錯誤になったので、 その記録はまた別途。

0 件のコメント:

コメントを投稿