[sane-devel] Artec Viewstation AT3 SCSI scanner

Henning Meier-Geinitz henning at meier-geinitz.de
Thu Feb 6 12:36:53 GMT 2003


[CC'ed to Chris Pinkham, the artec maintainer]

Hi,

[AT3 isn't detected by scanimage -L]

On Thu, Feb 06, 2003 at 01:12:38PM +0000, Anders Drejer wrote:
> > If that also doesn't work, show us the debug output from
> > 
> > SANE_DEBUG_ARTEC=255 scanimage -L
> The result is like this:
> 
> [root at localhost anders]# SANE_DEBUG_ARTEC=255 scanimage -L
> [sanei_debug] Setting debug level of artec to 255.
> [artec] Artec/Ultima backend version 0.5.16, last mod: 05/26/2001 17:28

That's also in CVS so updating won't help.

> [artec]  ===== Scanner Inquiry Block =====
> [artec] 0x00: 06 00 02 01 5b 00 00 00 55 4c 54 49 4d 41 20 20 ....[...ULTIMA
> [artec] 0x10: 41 54 33 20 20 20 20 20 31 2e 36 30 20 20 20 20 AT3    1.60
> [artec] 0x20: 20 20 20 20 00 00 00 00 00 00 00 00 00 00 00 00     ............
> [artec] 0x30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
> [artec] 0x40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
> [artec] 0x50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
> [artec] scanner vendor: 'ULTIMA', model: 'AT3     1.60', revision: ''

That's the problem. The version is in the model string
('AT3    1.60'), but the backend expects the model name only ('AT3').

If you want to at least try to fix that, get the source code of
sane-backend. There is a workaround for this in the code, but only for
a different scanner:

  /* for some reason, the firmware revision is in the model info string on */
  /* the A6000C PLUS scanners instead of in it's proper place */
  if (strstr (str, "A6000C PLUS") == str)
    {
      str[11] = '\0';
      strncpy (product_revision, str + 12, 4);
    }
  else
    {
      /* get the product revision from it's normal place */
      strncpy (product_revision, result + 32, 4);
    }

Change this to something like this:

  /* for some reason, the firmware revision is in the model info string on */
  /* the A6000C PLUS scanners instead of in it's proper place */
  if (strstr (str, "A6000C PLUS") == str)
    {
      str[11] = '\0';
      strncpy (product_revision, str + 12, 4);
    }
  else if (strstr (str, "AT3") == str)
    {
      str[3] = '\0';
      strncpy (product_revision, str + 8, 4);
    }
  else
    {
      /* get the product revision from it's normal place */
      strncpy (product_revision, result + 32, 4);
    }


As mentioned, that's completely untested. Please report if it works so
Chris cann update the backend.

Bye,
  Henning



More information about the sane-devel mailing list