[sane-devel] UMAX 1200S on NetBSD

Henning Meier-Geinitz henning@meier-geinitz.de
Fri, 12 Sep 2003 15:57:47 +0200


Hi,

On Fri, Sep 12, 2003 at 09:10:58AM -0400, Greg Troxel wrote:
> I can certainly accept that I did things wrong.  But given that I'm a
> long time sane user, I'd say this is an indication that things are too
> hard.
> 
> It is pretty counterintuitive to me that device on the command line is
> not simply a pathname to a device special file.

scanimage or any other frontend doesn't know anything about device
files. So it wouldn't know what to do with it. Only the backends know
about device files. So if you want to specify a SANE device, you must
tell SANE which backend to use. In principle, a device can be even
supported by two different backends.

But you are right concerning "things too hard". With other operating
systems, you don't need to set any link or specify anything on the
command line if you have only one scanner. 

> Once I put in the /dev/scanner link, xscanimage worked fine.  Clearly
> then, I did not have to tell xscanimage that my scanner was a umax.

You didn't and xscanimage didn't know. xscanimage is linked against
libsane, which is in fact libsane-dll. That dll backend asks all
backends for a list of devices they can find. Each backend now scans
all the device files it knows about (usually /dev/scanner is included
in this list) for devices it knows. So you get a list with e.g.
umax:/dev/scanner because the umax backend has found your scanner.

> So perhaps there should be an OS-dependent notion of a list of default
> files to check for (SCSI and usb scanners, or pass/ugen things that
> probe as scanners).

That's done in the sanei_scsi.c code for some operating systems (at
least Linux, FreeBSD, MacOS X). The code for NetBSD is just not
implemented yet. Patches are welcome.

With that code, the devices are autodetected by the "scsi" lines in
the config files. But that only works, if there is an implementation
of sanei_scsi_find_devices() in sanei/sanei_scsi.c. It's missing for
NetBSD (BSD_INTERFACE) as far as I can see so the empty stub at the
end of the file is used. If you set the envirinment variable
SANE_DEBUG_SANEI_SCSI to at least 1, you should get a warning about
that.

> Basically, I think it comes down to that if sane-find-scanners can find
> the scanner, then xscanimage and scanimage should find them as well
> when started with no arguments.

Some of the implementations in sanei_scsi are similar to the one in
sane-find-scanner. The Linux one is different and much faster by using
/proc/scsi/scsi.

Bye,
  Henning