[sane-devel] lost with FUJITSU scanner M3096G

Oliver Schirrmeister oschirr@abm.de
07 Mar 2003 17:26:24 +0100


Am Fre, 2003-03-07 um 17.12 schrieb Frank Zago:
> abel deuring wrote:
> > Frank Zago wrote:
> > 
> >>>[fujitsu] set_window_param
> >>>[fujitsu] Window set
> >>>[fujitsu] 000: 00 00 01 2c 01 2c 00 00 00 00 00 00 00 00 00 00
> >>>[fujitsu] 016: 03 b0 00 00 05 89 00 00 00 02 08 00 00 00 00 00
> >>>[fujitsu] 032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0
> >>>[fujitsu] 048: 20 00 00 00 00 84 00 00 00 00 00 00 00 00 00 00
> >>>[fujitsu]       5/38/0: Invalid field in parm list
> >>>[fujitsu] sanei_scsi_cmd: returning 0x00000004
> >>>[fujitsu] sane_start: ERROR: failed to set window
> >>
> >>The scanner rejected the window parameter. If the scsi implementation is decent,
> >>the sense might contain the offset of the offending byte somewhere around byte
> >>16 oy 17. To get that, at the beginning of scsi_sense_handler, add this line:
> >>
> >>   hexdump (MSG_IO, "Sense", sensed_data, sensed_data[7]+8);
> > 
> > 
> > Frank,
> > 
> > you're right, the sense bytes 16 and 17 should point to the offending
> > byte, but unfortunately the Linux SCSI system returns only the first 16
> > bytes of a SCSI command.
> 
> 
> Are you sure of that? There are devices out there that return more than 100 
> bytes of data in the sense. I assume someone would have fixed such a problem.
> 


I've tried it with RedHat 8.0 linux. The sense bytes 16 and 17 really
point to the offending byte (I've tried to set a invalid resolution 
an others). There is a 8 byte window header you can't 
see in the hexdump above. The offending byte is at position 25 (0x02).
This means 'grayscale monochrome'. Dirks M3096G doesn't seem to support
grayscale (probably that firmware bug?).


[fujitsu] Window set
[fujitsu] 000: 00 00 01 2c 01 2c 00 00 00 00 00 00 00 00 00 00
[fujitsu] 016: 03 b0 00 00 05 89 00 00 00 02 08 00 00 00 00 00
[fujitsu] 032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0
[fujitsu] 048: 20 00 00 00 00 84 00 00 00 00 00 00 00 00 00 00
[fujitsu] <cmd<
[fujitsu] 000: 24 00 00 00 00 00 00 00 48 00 00 00 00 00 00 00
[fujitsu] 016: 00 40 00 00 01 2c 01 2c 00 00 00 00 00 00 00 00
[fujitsu] 032: 00 00 03 b0 00 00 05 89 00 00 00 02 08 00 00 00
[fujitsu] 048: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[fujitsu] 064: 00 a0 20 00 00 00 00 84 00 00 00 00 00 00 00 00
[fujitsu] 080: 00 00
[fujitsu] Sense
[fujitsu] 000: f0 00 45 00 00 00 00 0a 00 00 00 00 26 00 00 80
[fujitsu] 016: 00 21
[fujitsu]       5/38/0: Invalid field in parm list


Oliver