7.7. 画像スキャナ
戻る〓 | 第7章 マルチメディア | 〓次へ

## 7.7. 画像スキャナ

寄稿: Fonvieille Marc [FAMILY Given].

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

FreeBSD は SCSI 接続および USB 接続のスキャナのどちらにも対応しています。 スキャナのインタフェースに依存して、異なるドライバが必要となります。 設定を始める前に、 SANE がスキャナに対応していることを確認してください。 対応しているスキャナに関してのより詳細な情報については、 http://www.sane-project.org/sane-supported-devices.html をご覧ください。

この節では、FreeBSD がどのようにしてスキャナを認識するかについて説明します。 その後、FreeBSD システム上で SANE を設定して使用する方法の概要について説明します。

### 7.7.1. スキャナの確認

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

    device usb
    device uhci
    device ohci
    device ehci
    device xhci

USB スキャナが認識されたかを確認するには、 スキャナを接続して、`dmesg` を利用し、 システムメッセージバッファで、 スキャナが認識されているかどうかを確認してください。 認識されていたら、以下のようなメッセージが表示されます。

    ugen0.2: <EPSON> at usbus0

この例では、EPSON Perfection® 1650 USB スキャナが `/dev/ugen0.2` 上で認識されています。

スキャナのインタフェースが 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` を使用して 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) をご覧ください。

### 7.7.2. SANE の設定

SANE システムは、 バックエンド (graphics/sane-backends) を経由してスキャナに対するアクセスを提供します。 バックエンドが対応している画像スキャナについては、http://www.sane-project.org/sane-supported-devices.html を参照してください。 グラフィカルなスキャニングインタフェースは、 Kooka (graphics/kooka) または XSane (graphics/xsane) といったサードパーティ製のアプリケーションによって提供されています。 SANE のバックエンドは、 スキャナを試すには十分です。

バイナリ package から、バックエンドをインストールするには、 以下のように実行してください。

    # pkg install sane-backends

あるいは、Ports Collection からインストールするには、 以下のように実行してください。

    # cd /usr/ports/graphics/sane-backends
    # make install clean

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` が付属します。 このコマンドを使用すると、 デバイスの一覧を表示したり画像を取得することができます。 スキャナデバイスの一覧を表示するには、 `-L` オプションを使ってください。 以下の最初の例は、SCSI スキャナ用のもので、 次の例は、USB スキャナ用のものです。

    # scanimage -L
    device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner
    # scanimage -L
    device 'epson2:libusb:000:002' is a Epson GT-8200 flatbed scanner

2 番目の出力において、 `epson2` がバックエンド名で、 `libusb:000:002` は `/dev/ugen0.2` を意味し、 スキャナが使用するデバイスノードです。

`scanimage` がスキャナの認識に失敗した場合には、 以下のようなメッセージが表示されます。

    # 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/` にあるバックエンドの設定ファイルを編集して、 使用するスキャナデバイスを設定してください。 例えば、認識されなかったスキャナのモデルが、 EPSON Perfection® 1650 で、`epson2` バックエンドを使っているのであれば、 `/usr/local/etc/sane.d/epson2.conf` を編集してください。 編集作業を行う際には、 使用するインタフェースとデバイスノードを指定する行を追加します。 この例では、以下の行を追加します。

    usb /dev/ugen0.2

編集を保存し、 適切なバックエンド名とデバイスノードでスキャナが認識されたかどうかを確認してください。

    # scanimage -L
    device 'epson2:libusb:000:002' is a Epson GT-8200 flatbed scanner

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

`scanimage` を使用してコマンドラインから画像を取得することができますが、 GUI を使用して画像を取得できることが望ましいでしょう。 Kooka や xsane といったアプリケーションは、 広く使われているスキャニングフロントエンドです。 これらには、さまざまなスキャニングモード、 色補正、バッチスキャンなど先進的な機能があります。 XSane は、GIMP のプラグインとして使用することもできます。

### 7.7.3. スキャナの許可属性

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

この例では、``usb`` という名前のグループを作成します。

    # 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 デバイスにアクセスしたい場合には、 代わりに以下のルールセットを使ってください。

    [system=5]
    add path 'ugen*' mode 0660 group usb
    add path 'usb/*' mode 0666 group usb

このファイルの詳細については、 devfs.rules(5) を参照してください。

つぎに、/etc/rc.conf でルールセットを有効にしてください。

    devfs_system_ruleset="system"

そして、devfs(8) システムを再起動してください。

    # service devfs restart

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

    # pw groupmod usb -m joe

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

戻る〓 | 上に戻る | 〓次へ
7.6. MythTV〓 | ホーム | 〓第8章 FreeBSD カーネルのコンフィグレーション

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

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