T.Fujikiの日記: 2004年 初挑戦
■環境
M/B: ABIT KT7-RAID
CPU: AMD Duron1.3GHz(Morgan)
USB: IODATA USB2-PCI2 (USB2.0/1.1 NEC のチップ)
OS : FreeBSD 4.7-RELEASE-p24
■スキャナ
Canon CanoScan D1250U2
■参考文献
FreeBSD の USB デバイス動作状況 - スキャナ編
■必要な事
- まずつなぐ。
- FreeBSD 上で USB スキャナ (uscanner) として認識されるか、 ただの USB デバイス (ugen) として認識されるか確認する。
- ベンダ ID と、デバイス ID を控える。(4 で必要)
- カーネルさんにスキャナを覚えてもらうため、 /usr/src/sys/dev/usb/ にあるソースコードを書き換える。
- カーネルの再構築とリブート。
- uscanner として認識されれば OK。後は良きに計らう。
■やった事
- 箱から出してつなぐ
なんか箱から出しにくかった。 箱から出した時、畳の上にゴトッと落して鬱。 - FreeBSD で認識させる
カーネルさんのメッセージ。ugen0: Canon CanoScan, rev 2.00/2.00, addr 2
ugen0 という事は、USB デバイスの中の何かって事か。 まだ USB スキャナとしてこの人は認めていないらしい。 ちょっと sane-backends を ports から入れて、 sane-find-scanner を実行してみる。
# No SCSI scanners found. If you expected something different, make sure that
# you have loaded a SCSI driver for your SCSI adapter.
found USB scanner (vendor=0x04a9, product=0x220c) at libusb:/dev/usb0:/dev/ugen0
# Your USB scanner was (probably) detected. It may or may not be supported by
# SANE. Try scanimage -L and read the backend's manpage.
# Scanners connected to the parallel port or other proprietary ports can't be
# detected by this program.要するに USB スキャナっぽいけど使えないよと。
- usbdevs でデバイス ID と、ベンダ ID を見る
つか sane-find-scanner でも確認できてたじゃないか…。 まあ良いか、usbdevs -v を実行。Controller /dev/usb0:
addr 1: self powered, config 1, OHCI root hub(0x0000), NEC(0x0000), rev 1.00
port 1 addr 2: self powered, config 1, CanoScan(0x220c), Canon(0x04a9), rev 2.00
port 2 powered
port 3 poweredデバイス ID は「0x220c」で、ベンダ ID は「0x04a9」という事が判明。
- カーネルソース編集
/usr/src/sys/dev/usb ディレクトリのソースを編集する。
編集するファイルは usbdevs と uscanner.c の二つ。
まずは usbdevs。/* Canon, Inc. products */
product CANON N656U 0x2206 CANOSCAN N656U
product CANON S10 0x3041 PowerShot S10
product CANON S100 0x3045 PowerShot S100
product CANON D1250U2 0x220c CanoScan D1250U2同ディレクトリにある FILES によると、 usbdevs.h と usbdevs_data.h は、 usbdevs から生成されるとあるので、 usbdevs の冒頭にある通り、usbdevs 書き換えた後、 以下を実行。
make -f Makefile.usbdevs
これで、usbdevs.h とusbdevs_data.h が更新される。 次は uscanner.c。
/* Canon */
{{ USB_VENDOR_CANON, USB_PRODUCT_CANON_N656U }, 0 },
{{ USB_VENDOR_CANON, USB_PRODUCT_CANON_D1250U2 }, 0 },定数は usbdevs_data.h とかを参考にした。
- カーネルの再構築
USB 絡みのデバイスのサポートを適当に有効にしとく。 当然、device uscanner は要る。 - 再起動
カーネルさんのメッセージ。uscanner0: Canon CanoScan, rev 2.00/2.00, addr 2
とりあえず ugen0 から uscanner0 となった。
- SANE の設定
/usr/local/etc/sane.d/ にある dll.conf と canon.conf を編集。
dll.conf は「canon」行以外を # でコメント化して、 canon.conf は「/dev/uscanner0」を追加し、後は # でコメント化。 そして sane-find-scanner を実行してみる。# No SCSI scanners found. If you expected something different, make sure that
# you have loaded a SCSI driver for your SCSI adapter.
found USB scanner (vendor=0x04a9, product=0x220c) at /dev/uscanner0
# Your USB scanner was detected. It may or may not be supported by
# SANE. Try scanimage -L and read the backend's manpage.
# Scanners connected to the parallel port or other proprietary ports can't be
# detected by this program.
# You may want to run this program as root to find all devices. Once you
# found the scanner devices, be sure to adjust access permissions as
# necessary.ぐは、やっぱり駄目だ…鬱。
- SANE のページを見る
Canon CanoScan D1250U2 はサポートされていないと書いてありました。 うーん、ひとまず SANE では使えない事が判明。
大人しく WindowsXP で使おう…。
2004年 初挑戦 More ログイン