FreeBSD では、画像スキャナに対するアクセスは SANE (Scanner Access Now Easy) API によって実現されており、 FreeBSD Ports Collection でも提供されています。 SANE はスキャナのハードウェアにアクセスするために FreeBSD デバイスドライバを使用します。
FreeBSD は SCSI 接続および USB 接続のスキャナのどちらにも対応しています。 設定を始める前に、 SANE がスキャナに対応しているか確認してください。 SANE には スキャナについての情報とその状況がまとめられている 対応デバイスの一覧 があります。
前述のように、FreeBSD はスキャナのインタフェースとして SCSI と USB の両方に対応しています。 スキャナのインタフェースによって、必要となるドライバが異なります。
GENERIC
カーネルにはデフォルトで
USB スキャナに対応するためのデバイスドライバが搭載されています。
カスタムカーネルを使用する際には、
以下の行がカーネルコンフィグレーションファイルにあることを
確認してください。
適切なドライバを組み込んだカーネルで再起動後、 USB スキャナをシステムに接続します。 すると、メッセージバッファ (dmesg(8)) にスキャナが認識されたことを示すメッセージが出力されます。
これらの例では、スキャナが /dev/ugen0.2
デバイスノードを使用していることがわかります。
この例では、EPSON
Perfection® 1650 USB スキャナが使われています。
スキャナに付属しているインタフェースが SCSI であれば、
重要なのはどの SCSI ボードを使用すればよいか把握することです。
使用する SCSI チップセットによって、
カーネルコンフィグレーションファイルを調整する必要があります。
GENERIC
カーネルは
一般に使用される SCSI コントローラのほとんどに対応しています。
NOTES
ファイルを読んで、
適切な行をカーネルコンフィグレーションファイルに追加してください。
また、SCSI アダプタドライバに加えて、
以下の行をカーネルコンフィグレーションファイルに
記述する必要があります。
カーネルを適切にコンパイルしてインストールすると、 システムの起動時にデバイスがメッセージバッファに出力されるはずです。
システムを起動する際にスキャナの電源を入れてなければ、 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)SCSI デバイスについての詳細は、scsi(4) および camcontrol(8) のマニュアルページをご覧ください。
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これは、FreeBSD 8.X システムでの出力例であり、
'epson2:libusb:/dev/usb:/dev/ugen0.2'
から、
使用しているスキャナのバックエンド名
(epson2
) とデバイスノード
(/dev/ugen0.2
) の情報を得ることができます。
何も出力が得られなかったり、
スキャナが見つからなかったというメッセージが表示されたら、
scanimage(1) はスキャナを認識できなかったのでしょう。
このような場合は、バックエンドの設定ファイルを編集し、
使用するスキャナデバイスを定義する必要があります。
/usr/local/etc/sane.d/
ディレクトリには、
バックエンドが使用するすべての設定ファイルがあります。
このデバイスの認識による問題は、
特定の USB スキャナで発生するものです。
たとえば、
「USB インタフェース」
で使用した USB スキャナは、
FreeBSD 8.X において正常に認識され動作します。
しかし、それより前のバージョンの
(uscanner(4) ドライバを利用する) FreeBSD では、
sane-find-scanner
コマンドを実行すると、以下のような情報が得られます。
#
sane-find-scanner -q
found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0スキャナは正しく検出されました。
USB インタフェースを使用し、
/dev/uscanner0
デバイスノードに接続されていることがわかります。
次に、スキャナが正しく認識されているかどうか確認してみましょう。
#
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
という語で始まる行をすべてコメントアウトします)、
ファイルの末尾に使用するインタフェースとデバイスノードを追加します。
この例では、以下の行を追加しました。
詳細と使用すべき構文は、 バックエンドのマニュアルページはもちろんのこと、 バックエンドの設定ファイルに書かれているコメントも読んでください。 以上の設定で、スキャナが認識されたかどうかを確認できます。
#
scanimage -L
device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scannerUSB スキャナが認識されました。
ブランドやモデルがスキャナに一致しなかったとしても、それほど重要ではありません。
着目すべきは `epson:/dev/uscanner0'
という部分で、
バックエンド名とデバイスノードが正しく認識されていることがわかります。
scanimage -L
コマンドを実行してスキャナが認識されたことがわかれば、設定は終了です。
デバイスはスキャンする準備ができました。
scanimage(1) コマンドを使用すると
コマンドラインから画像を取得することができます。その一方で、
GUI を使用して画像を取得できると一層良いでしょう。
SANE
は、簡素ですが役に立つグラフィカルなインタフェース
xscanimage
(graphics/sane-frontends
)
を提供しています。
Xsane
(graphics/xsane
)
はもう一つのグラフィカルなスキャニングフロントエンドで、
人気があります。
Xsane
には、さまざまなスキャニングモード (写真、FAX など)、
色補正、バッチスキャンなど先進的な機能があります。
これらのアプリケーションの両方とも GIMP
のプラグインとして使用することができます。
前述の操作には、
すべて root
権限が必要となります。
しかしながら、他のユーザがスキャナに
アクセスできるようにすることも可能です。
そのためには、スキャナが使用するデバイスノードへの
読み込み権限と書き込み権限をユーザに与えます。
一例として、USB スキャナが、/dev/ugen0.2
デバイスノードを使用しているものとします。
このデバイスノードは、
/dev/usb/0.2.0
へのシンボリックリンクです
(/dev
ディレクトリを調べると、
簡単に確認できます)。
シンボリックリンクとデバイスノードは、
それぞれ wheel
および
operator
グループが所有しています。
ユーザ
を
これらのグループに加えると、彼はスキャナを使用できるようになります。
もちろん、ユーザをどんなグループ
(特にグループ joe
wheel
) に追加する時はいつでも、
セキュリティ上の理由から二度は検討を行うべきです。
良い方法は、USB デバイスを利用するためにグループを作成し、
このグループに対してスキャナデバイスを利用できるようにすることです。
例として、
という名前のグループを使用します。
まず最初に、pw(8) コマンドを使ってグループを作成します。usb
#
pw groupadd usb
その後、シンボリックリンク /dev/ugen0.2
および、/dev/usb/0.2.0
デバイスノードに対して、
usb
グループが利用できるように適切な許可属性
(0660
または 0664
)
を設定する必要があります。
デフォルトでは、これらのファイルの所有者
(root
) のみが書き込み可能です。
/etc/devfs.rules
に次の行を追加してください。
最後に、スキャナを利用するユーザを
グループに追加します。usb
#
pw groupmod usb -m joe
詳細については、pw(8) のマニュアルページをご覧ください。
本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、
ドキュメント を読んだ上で
<questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、
<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。