Gimpという高機能のプログラムもあって、画像処理はLinuxの得意分野なので、画像入力装置も使えるようにしたい。 そのひとつスキャナなんだけど、最近は入力インターフェースがSCSIからUSBへと移ってきている。 Linuxにとって、USBインターフェースにはちょっと障壁がある。Vine linux-2.0でも一部USBが使えるようになっていたが、 VineLinux-2.1.5に含まれるkernel-2.2.18にはかなりまともなusbモジュールがはいっている。 Linux用のスキャナドライバはSANE(Scanner Access Now Easy) プロジェクトが開発している。 最近はEPSONのものへの対応がかなりできてきて、 Linuxで使うスキャナを新しく買うならEPSONにしなさいと言い切る人もいる。 たとえ動作実績リストに載っていなくても、EPSONのスキャナは命令体系がみんな同じなのでたいてい大丈夫だというのがその理由。
で、今回ははUSBインターフェースだけを持つ安価なスキャナEPSONのGT-6700Uを導入したが、これがなかなかたいへんだった(^^;y
$ dmesg ... usb.c: USB new device connect, assigned device number 2 usb.c: USB device 2 (prod/vend 0x4b8/0x10c) is not claimed by any active driver.最後にprod/vendで現れる vendor=0x04b8 product=0x10c というのがUSB-idです。
# Scanner alias char-major-180-48 scanner options scanner vendor=0x04b8 product=0x10cconf.modulesの変更後
# /sbin/depmod -aを実行しておきます。
(Vile Linux 2.1.x の場合 ) hid mousedev scanner以上は Vine Linux 2.1.x など usbmgr を採用している場合の記述です。 Vine Linux 2.5 以降では usbmgr ではなく murasaki を使用しているので これとは異なります。 [vine-users:056484] に Vine Linux 2.6(2.5も基本的に同じ)における方法が(murasaki 開発者より)説明されています。 次に再掲します。
[ Vine Linux 2.5以降での手順] 1) modules.usbmap( murasaki.usbmap か?)からscannerの行(第2アイテムが0x0003のもの)を /etc/murasaki/murasaki.usbmapにコピーする 2) murasaki.usbmapのコピーした行を以下のように変更する 第1アイテム → alias-7300U 第3アイテム → 0x4b8 第4アイテム → 0x11d 3) /etc/murasaki/murasaki.dependに以下を追加する(線は含めない) ------------------------------------------------- alias-7300U: scanner vendor=0x4b8 product=0x11d -------------------------------------------------
usb /dev/usb/scanner0
epson
# ls -l /dev/usb* crw-rw-rw- 1 root root 180, 48 Oct 9 2000 /dev/usbhpscanner ...名前だけの問題なのでこれを使ってもよいのだけれど、 やはりHPのスキャナじゃないのにヘンなので、新しいものを作ります。さきほどepson.dに設定した名前でデバイスファイルを作ります。/dev/usbhpscannerは残しておいても構いませんが、使う予定がなければこのさい削除しておきます。
# rm /dev/usbhpscanner # mknod /dev/usb/scanner0 c 180 48 -m 666こうすると次のようになります。
# ls -l /dev/usb* crw-rw-rw- 1 root root 180, 48 17 May 5 16:5548 /dev/usb/scanner0 ...
$ dmesg | tail ... usb.c: USB disconnect on device 2 usb.c: USB new device connect, assigned device number 2 scanner.c: probe_scanner: User specified USB scanner -- Vendor:Product - 4b8:10cとなればusbドライバによる認識はできています。 うまくいかないときは USBプラグを抜き差ししてトライします。 ときどき失敗することもあるようなので。
(失敗した場合) ... usb.c: USB new device connect, assigned device number 2 scanner.c: probe_scanner: User specified USB scanner -- Vendor:Product - 4b8:10c usb_control/bulk_msg: timeout usb.c: error getting string descriptor 0 (error=-110)うまくいけば次にsaneでの認識をテスト
$ scanimage -L device `epson:/dev/usb/scanner0' is a Epson GT-6700 flatbed scannerrootなユーザーならOKだが一般ユーザーで駄目でという場合はデバイスファイルのパーミッションの設定を見直してください。
$ scanimage -T -d epson:/dev/usb/scanner0 scanimage: scanning image of size 632x879 pixels at 1 bits/pixel scanimage: acquiring gray frame, 1 bits/sample scanimage: reading one scanline, 79 bytes... PASS scanimage: reading one byte... PASS scanimage: stepped read, 2 bytes... PASS ... ... scanimage: stepped read, 3 bytes... PASSスキャナが動き、PASSの字が並べばOKです。
# Perfection 640, GT-6700 [Epson] vendor 0x04b8 product 0x010c module scannerを追加。 ついでにEPSONのスキャナの分かっている範囲を追加後の/etc/usbmgr/usbmgr.confはこれ。 このあとデーターベースを更新、usbmgrを再起動。
# /sbin/update_usbdb /etc/usbmgr/usbmgr.conf # /etc/rc.d/init.d/usbmgr restartとしてみた。