8.7. 画像スキャナ

FreeBSD では、画像スキャナに対するアクセスは SANE (Scanner Access Now Easy) API によって実現されており、 FreeBSD の Ports Collection でも提供されています。 SANE はスキャナのハードウェアにアクセスするために FreeBSD デバイスドライバを使用します。

FreeBSD は SCSI 接続および USB 接続のスキャナのどちらにも対応しています。 設定を始める前に、 SANE がスキャナに対応していることを確認してください。 対応しているスキャナに関してのより詳細な情報については、対応デバイスの一覧 をご覧ください。

8.7.1. カーネルのコンフィグレーション

SCSI と USB の両方のインタフェースに対応しています。 スキャナのインタフェースによって、 必要となるドライバが異なります。

8.7.1.1. USB インタフェース

GENERIC カーネルにはデフォルトで USB スキャナに対応するためのデバイスドライバが搭載されています。 カスタムカーネルを使用する際には、 以下の行がカーネルコンフィグレーションファイルにあることを確認してください。

device usb
device uhci
device ohci
device ehci

USB スキャナをシステムに接続してください。 dmesg(8) を利用して、スキャナが認識されているかどうか、 システムメッセージバッファで確認してください。

ugen0.2: <EPSON> at usbus0

これらの例では、スキャナが /dev/ugen0.2 または、/dev/uscanner0 を使用していることがわかります。 どちらのデバイスノードが利用されるかは FreeBSD のバージョンに依存します。 この例では、EPSON Perfection® 1650 USB スキャナが使われています。

8.7.1.2. SCSI インタフェース

スキャナのインタフェースが SCSI であれば、 どの SCSI ボードを使用するかを知ることが重要です。 使用する SCSI チップセットによって、 カーネルコンフィグレーションファイルを調整する必要があります。 GENERIC カーネルは、 一般に使用される SCSI コントローラのほとんどに対応しています。 /usr/src/sys/conf/NOTES ファイルを読んで、 適切な行をカーネルコンフィグレーションファイルに追加してください。 また、SCSI アダプタドライバに加えて、 以下の行をカーネルコンフィグレーションファイルに記述する必要があります。

device scbus
device pass

デバイスがメッセージバッファに出力されていることを確認してください。

pass2 at aic0 bus 0 target 2 lun 0
pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
pass2: 3.300MB/s transfers

システムを起動する際にスキャナの電源を入れてなければ、 camcontrol(8) コマンドを使用して SCSI バスをスキャンし、 以下のように手動でデバイスを検出させることもできます。

# camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
Re-scan of bus 2 was successful
Re-scan of bus 3 was successful

すると、スキャナは SCSI デバイスの一覧に現れるでしょう。

# camcontrol devlist
<IBM DDRS-34560 S97B>              at scbus0 target 5 lun 0 (pass0,da0)
<IBM DDRS-34560 S97B>              at scbus0 target 6 lun 0 (pass1,da1)
<AGFA SNAPSCAN 600 1.10>           at scbus1 target 2 lun 0 (pass3)
<PHILIPS CDD3610 CD-R/RW 1.00>     at scbus2 target 0 lun 0 (pass2,cd0)

FreeBSD における SCSI デバイスについての詳細は、scsi(4) および camcontrol(8) をご覧ください。

8.7.2. SANE の設定

SANE システムは、 二つの部分、すなわちバックエンド (graphics/sane-backends) とフロントエンド (graphics/sane-frontends) に分割されています。 バックエンドはスキャナに対するアクセスを提供します。 SANE 対応デバイスの一覧 には、どのバックエンドが画像スキャナに対応しているかが記載されています。 デバイスを使用するためには、正しいバックエンドを決定する必要があります。 また、フロントエンドはグラフィカルなスキャニングインタフェース (xscanimage) を提供します。

graphics/sane-backends port または package をインストールしたら、 sane-find-scanner コマンドを使用して、 SANE システムで検出されているスキャナを確認してください。

# sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3

この出力から、 スキャナインタフェースの種類と システムに接続されているスキャナが使用するデバイスノードがわかります。 ベンダ名や製品のモデル名は表示されないかも知れません。

注記:

いくつかの USB スキャナではファームウェアを読み込む必要がある場合があります。 詳細については、sane-find-scanner(1) および sane(7) を参照してください。

次に、スキャナがフロントエンドで認識されるか調べてください。 SANE のバックエンドには scanimage(1) と呼ばれるコマンドラインツールが付属します。 このコマンドを使用すると、 デバイスの一覧を表示したり画像を取得することができます。 スキャナデバイスの一覧を表示するには、 -L オプションを使ってください。

# scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner

以下は 「USB インタフェース」 で説明した USB スキャナにおける出力です。

# scanimage -L
device 'epson2:libusb:/dev/usb:/dev/ugen0.2' is a Epson GT-8200 flatbed scanner

この出力の中で、 'epson2:libusb:/dev/usb:/dev/ugen0.2' がスキャナが使用するバックエンド名 (epson2) およびデバイスノード (/dev/ugen0.2) です。

注記:

何も出力が得られなかったり、 スキャナが見つからなかったというメッセージが表示されたら、 scanimage(1) はスキャナを認識できなかったのでしょう。 このような場合は、/usr/local/etc/sane.d/ にあるバックエンドの設定ファイルを編集し、 使用するスキャナデバイスを定義する必要があります。

これまでの例では、USB スキャナは、正常に検出され動作しています。

スキャナが正しく認識されているかどうかを確認するには、 以下を実行してください。

# scanimage -L

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).

スキャナが認識されなかったので、 /usr/local/etc/sane.d/epson2.conf を編集してください。この例では、 スキャナのモデルは EPSON Perfection® 1650 なので、 epson2 バックエンドを使用します。 編集作業を行う際には、 バックエンドの設定ファイルに書かれているヘルプコメントを読んでください。 設定ファイルを変更するのは非常に簡単です。 使用しているスキャナには不適切なインタフェースをすべてコメントアウトします。 今回の場合は、スキャナは USB インタフェースを使用するので scsi という語で始まる行をすべてコメントアウトします。 その後、ファイルの末尾に使用するインタフェースとデバイスノードを追加します。 この例では、以下の行を追加します。

usb /dev/uscanner0

編集を保存し、 スキャナが認識されたかどうかを確認してください。

# scanimage -L
device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner

`epson:/dev/uscanner0' フィールドで、 バックエンド名とデバイスノードが正しく認識されていることがわかります。

scanimage -L を実行してスキャナが認識されたことがわかれば、設定は終了です。 デバイスはスキャンする準備ができました。

scanimage(1) を使用してコマンドラインから画像を取得することができますが、 GUI を使用して画像を取得できるとより望ましいでしょう。 graphics/sane-frontends package および port は、シンプルですが、 効率的なグラフィカルインタフェース xscanimage をインストールします。

graphics/xsane package または port からインストールされる Xsane は、 広く使われているもう一つのグラフィカルなスキャニングフロントエンドです。 Xsane には、さまざまなスキャニングモード、 色補正、バッチスキャンなど先進的な機能があります。 これらのアプリケーションの両方とも GIMP のプラグインとして使用することができます。

8.7.3. 他のユーザがスキャナにアクセスすることを許可する

スキャナにアクセスするには、 ユーザはスキャナが使用するデバイスノードへの読み込み権限と書き込み権限が必要です。 今回の例では、USB スキャナは /dev/ugen0.2 デバイスノードを使用しています。 このデバイスノードは、 /dev/usb/0.2.0 へのシンボリックリンクです シンボリックリンクとデバイスノードは、 それぞれ wheel および operator グループが所有しています。 ユーザをこれらのグループに加えると、 スキャナを使用できるようになります。 しかしながら、ユーザをグループ (特にグループ wheel) に追加する時には、 セキュリティ上の理由から二度は検討を行うべきです。良い方法は、 スキャナデバイスにアクセスできるグループを作成することです。

この例では、 usb という名前のグループを pw(8) を使って作成します。

# pw groupadd usb

その後、シンボリックリンク /dev/ugen0.2 および、/dev/usb/0.2.0 デバイスノードに対して、 usb グループが利用できるように書き込みの許可属性 (0660 または 0664) を設定してください。 /etc/devfs.rules に次の行を追加すれば設定できます。

[system=5]
add path ugen0.2 mode 0660 group usb
add path usb/0.2.0 mode 0666 group usb

最後に、スキャナを利用するユーザを usb グループに追加してスキャナを利用できるようにしてください。

# pw groupmod usb -m joe

詳細については、pw(8) をご覧ください。

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、 ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。

本文書に関する質問については、 <doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。