The whole page needs some serious rework, unfortunately I don’t have the time right now. By now the stable kernel release is 2.4 and no longer 2.2, the USB drivers in the 2.4 family are pretty good (as long as you have something newer than 2.4.5) and you should not need to modify anything – besides potentially providing the vendor and product IDs in /etc/modules.conf. … and I promise that I will update this page soon …
Solaris and EPSON USB Scanners
Let’s first get this out of the way: There is a USB scanner driver that will allow you to use EPSON USB scanner on Solaris. http://www.bolthole.com/solaris/drivers/usb-epsonscan.html
USB Scanner Installation/Configuration
If you want to use the USB version of one of the supported scanners you have to do a little more work than what’s necessary for the SCSI version.
Getting USB to Work
First of all you need a working USB subsystem – who would have thought that 🙂 So go and read the USB HOWTO at http://linuxusbguide.sourceforge.net/. Click on the “Linux USB Guide” link, this will bring you to the current version.
All this is based on the USB backport from 2.3.39 to 2.2.14. The newest USB development versions are different and I’m not really familiar with them. The good news is that the bug that was introduced after 2.3.39 is fixed now: If you get the version 2.3.99-pre7 or later the scanner support is working.
Also, if you want to stick with the currently “stable” kernel version, you should upgrade to 2.2.18, which already comes with the backport of the 2.4.0-test kernel.
The kernel versions 2.4.0-test1 (with all ac patches) and 2.4.0-test2 work also.
If you have a scanner that is not yet supported by the USB scanner driver you have two choices: You can either manually patch the file scanner.c or you can specify the device information as modprobe parameters (again two choices, either as command line parameters or in modules.conf).
Getting the Device Information
Display the USB device information. You can do this with the following command after the usbdevfs is mounted:
This will print information about all your USB devices, the hubs, mice, keyboards, cameras, and the scanner. Find the scanner entry and look for the “P” line with the vendor and poduct ID information. Write this information down and move on to the next step. If you have one of the following scanners you can also just take the information from this table:
|Model||Vendor ID||Product ID|
|Stylus Scan 2500||0x04b8||0x0106|
If your scanner has the same base name as a model in the table, but uses an extension like “Photo”, just use the ID you find in the table. These scanners are identical, the usually come with different attachments like a transparency unit or an automatic document feeder.
Patching the Source Code
For patching the source code I just assume that you know what you are doing… Search for the “Epson” entries that are already in the file linux/drivers/usb/scanner.c and add the information about your scanner. This only works with a newer USB version. If you are using an older backport you have to search for 0x1606 (that’s the VendorID for UMAX) and add the new EPSON vendor ID and your product ID.
Recompile, install and run.
Command Line Options to Modprobe
The USB scanner driver takes two optional parameters:
- vendor – User specified USB vendor ID
- product – User specified USB product ID
You can just add these to the modprobe command:
modprobe scanner vendor=<your vendor ID> product=<your product ID>
Of course this is very cumbersome if you load the module manually every time you want to use the scanner. It’s much easier to just add the parameters to the /etc/modules.conf file and let modprobe take care of the rest. Add this line to the configuration file:
options scanner vendor=<your vendor ID> product=<your product ID>
Create the device file in /dev according to the instructions in the USB Guide. The device name you are using is needed for the next step.
Here is the command I used to create this file:
mknod /dev/usbscanner0 c 180 48 chmod 666 /dev/usbscanner0
To actually use the scanner with SANE the only thing left to do is to configure SANE. The EPSON backend uses a file epson.conf that is either located in /etc/sane.d or in /usr/local/etc/sane.d (or wherever you or your Linux distribution intalled SANE). Edit this file and make sure that the following line is the only information in the file:
Replace the /dev/usbscanner0 with the actual device name used in the previous step.
SuSE Distribution and EPSON USB Scanners
Unfortunately SuSE has in neither their 6.3 nor the 6.4 version an USB stack that works with EPSON USB scanners. In 6.3 they used an old backport that had not yet scanner support, and in 6.4 they patched their kernel with the 2.3.47 backport, which has the EPSON incompatibility.
I came up with a quick fixe for at least SuSE 6.4: I patched their kernel and created just the module scanner.o that can be installed instead of the original module. This works at least… One serious drawback is the speed. When I scan on my 2.4.0-test2 system the speed with the Perfection610 is acceptable. If I use this modified module then the scanner is really slow. But at least you will be able to use the scanner at all.
So here’s what you do:
- Download the scanner.o module and try to remember where you put it 🙂
- Log in as root user and go to the directory /lib/modules/2.2.14/misc
- Stop the usb system by executing:
- Rename the original scanner.o module
mv scanner.o scanner.o.SuSE
- Copy the new module:
cp /wherever/you/put/the/file/scanner.o ./scanner.o
- Restart the usb system:
If the scanner module does not get loaded edit the file /etc/rc.config.d/usb.rc.config and add “scanner” to the module names in the USB_DRIVERS variable.
The SuSE system also requires that you update the /dev/usbscanner device file according the instructions from above.