Ubuntu 12.04上のSaneによってスキャナを共有

最近ファイルサーバー用に新しいマシンを組み立てたついでに、心機一転でプリンタやスキャナも共有しちゃえと思いやってみた。
プリンタの共有はsystem-config-printerを開いて、メニューのサーバー->設定に共有する旨のチェックボックスがあるのでOnにすればよい。

スキャナなんて本体から近いところでしか使わないから共有の必要なんてないんじゃないかと思うかもしれないけれど、ノートにいちいちUSBを繋いで行動範囲が制限されるのがなくなるのは意外と良い。
ぐぐって出てくる情報だと微妙にうまくいかない点があるので、Ubuntu12.04 Precise用にまとめておく。

当方ではスキャナは複合機EPSON PX-A720を使用。ドライバはデフォルトで入っているようだ。

サーバー

必要なパッケージをインストール。

sudo apt-get install sane sane-utils xsane xinetd

スキャナを認識しているか確認してみよう。

sane-find-scanner

scanimage -L

# output
device `epson2:libusb:002:006' is a Epson CX6000 flatbed scanner

許可する接続元IPアドレスを記述。

sudo -e /etc/sane.d/saned.conf

開くと英語の注意書きでIPアドレスはCIDR表記が使えるとある。大学の講義で習った気がするがよく覚えてなかった。Wikipediaが参考になる。(Classless Inter-Domain Routing)
ローカルネットワーク内のアドレス全部許可したいと思い、192.168.*.*に該当するアドレスに許可したければ、192.168.0.0/16と記述すれば良いようである。

接続先アドレスを記述する。

sudo -e /etc/sane.d/net.conf 

このファイルにlocalhostを書いておこう。自分のアドレスを参照することで、問題発生時に直接スキャナにアクセスする機能に問題があるのか、それともネットワーク共有に問題があるのか切り分けできて便利だといっているサイトがあり、その通りなのでそうすることを勧める。

参考までにnet.confにlocalhostを記述した状態でのscanimage -Lの結果は

device `epson2:libusb:002:006' is a Epson CX6000 flatbed scanner
device `net:localhost:epson2:libusb:002:006' is a Epson CX6000 flatbed scanner

となった。

追記 2014/03/29

間違えてました。net:localhostの方は下記のxinetdの設定までやらないと出ないハズです。
ちなみにMacのlaunchdの場合は こちら を使ってください。
これを参考にしました。 Portfile.diff on Ticket #27791 – Attachment – MacPorts
追記終わり。


xinetdにsaneを対応させる

sudo -e /etc/xinetd.d/saned 

ここに

service sane-port
{
    disable = no
    port = 6566
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/saned
}

と記述。

/etc/default/sanedを編集

sudo -e /etc/default/saned 

RUNをyesに、USERはsanedではうまくいかないので、rootにする。

RUN=yes
RUN_AS_USER=root

以上で準備完了なのでdaemonを作動させよう。

sudo service saned restart
sudo service xinetd restart

クライエント

勝手ながらとりあえずMac OS X Lionの場合のみ記します。あとで追記するかもです。

MacPortsでsane関係のportをインストール。

sudo port install sane-backends sane-frontends twain-sane xsane

接続先アドレスをnet.confに記述。

sudo -e /opt/local/etc/sane.d/net.conf 

開いたらどこかにサーバーのIPアドレスかホスト名など記述しておこう。bonjourホスト名でも解決がうまく行っていれば大丈夫のようだ。

そしたら共有スキャナを認識していることを確認。

scanimage -L

#output
device `net:some_server:epson2:libusb:002:006' is a Epson CX6000 flatbed scanner

これで準備完了だ。
xsaneを使えばちょっとした機能付きでスキャンできる。scanimageを使うとコマンドライン上でスキャンできるようだ。LibreOfficeGimpでもスキャンできるようだ。Macの標準アプリではできなかった。(そのためのtwain-saneのはずなのに・・・)
まぁxsaneでほぼ用が足りそうなので良しとしよう。