[sane-devel] Mac OS X 10.3.3- Sane Backend 1.0.14 - Microtek ScanMaker II - New Information

David B Brown david_b_brown@mac.com
Wed, 5 May 2004 15:01:18 +0100


--Apple-Mail-5-231779877
Content-Type: multipart/alternative; boundary=Apple-Mail-4-231779869


--Apple-Mail-4-231779869
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	charset=US-ASCII;
	format=flowed

Hi,

	every time a new version of the Sane Backend's becomes available I 
always have another go to see if anything has changed to make my 
configuration work. I also find that when I come back to this afresh I 
always get a little further forward.

	When you run scanimage, the Microtek scanner incorretly reports itself 
8 times, each under a different LUN, this has been consistent since the 
new Max OSX SCSI code was implemented to support Mac OS X 10.3.

	[MacCoylton:~] dave% scanimage -L
device `microtek:iokitscsi@<016333000000001e2a70b923>' is a Microtek 
ScanMaker II/IIXE flatbed scanner
device `microtek:iokitscsi@<016338000000001e28c472d6>' is a Microtek 
ScanMaker II/IIXE flatbed scanner
device `microtek:iokitscsi@<01633a000000001e18c239cd>' is a Microtek 
ScanMaker II/IIXE flatbed scanner
device `microtek:iokitscsi@<0162c4000000001e05d02fe7>' is a Microtek 
ScanMaker II/IIXE flatbed scanner
device `microtek:iokitscsi@<01633d000000001e0530106a>' is a Microtek 
ScanMaker II/IIXE flatbed scanner
device `microtek:iokitscsi@<0162cc000000001e04869288>' is a Microtek 
ScanMaker II/IIXE flatbed scanner
device `microtek:iokitscsi@<0162cf000000001e03c78ee9>' is a Microtek 
ScanMaker II/IIXE flatbed scanner
device `microtek:iokitscsi@<0161e1000000001e02a59e9b>' is a Microtek 
ScanMaker II/IIXE flatbed scanner
[MacCoylton:~] dave%

	If you check using ioreg, each of these is on the same SCSI ID, but a 
different LUN, the last one reported is actually on LUN 0.

	If I run scanimage without specifically specifying a device, then I 
always get and error about the scsi buffer being smaller than one scan 
line. The error is a bit of a red herring, and the real issue is that 
the code is trying to communicate with the scanner using the wrong LUN, 
in this case on LUN 7 in the above example which is the first one 
listed.

	ISSUE: My coding is rusty and my knowledge of the SCSI API used for 
Mac OS X is worse, but I believe that the Mac OS X scsi code doesn't 
support specifying a LUN and SCSI ID in the microtek.conf file. From my 
testing if the code has to search for the scanners it only uses the 
vendor and device name, and ends up attached to the wrong LUN

	If I run scanimage  with the -d option set to the last device listed 
ie the one thats LUN 0, the scan actually starts. I then have two 
scenarios each with there own problems as follows


	Scenario 1:- If I run with an unconstrained size, then the first pass 
happens ok, and then scanimage exists with an error before the scanner 
physically returns to the start for the second pass. Here's some debug 
trace:-

[microtek] sane_read:  buffsize: 130900,  unscanned: 13
[microtek] pack_into_ring...
[microtek] pack_into_dest...
[microtek] pack_into_dest:  rl: 32768  sz: 130900  hc: 0
[microtek] sane_read...
[microtek] pack_into_dest...
[microtek] pack_into_dest:  rl: 32768  sz: 130900  hc: 32768
[microtek] sane_read...
[microtek] pack_into_dest...
[microtek] pack_into_dest:  rl: 32768  sz: 130900  hc: 65536
[microtek] sane_read...
[microtek] pack_into_dest...
[microtek] pack_into_dest:  rl: 32596  sz: 130900  hc: 98304
[microtek] sane_read...
[microtek] read_from_scanner...
[microtek] .get_scan_status 0...
[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:6 isWrite:0
[sanei_scsi] isRead dst_size:6
[sanei_scsi] Executing command
[sanei_scsi] ExecuteTaskSync OK Trasferred 6 bytes
[microtek] get_scan_status(6): 0, 850, 13  -> #0
[microtek] >  0 52  3  d  0  0
[microtek] read_from_scanner: gss busy, linewidth, remaining:  0, 850, 
13
[microtek] sane_read:  max_scsi: 154, rem: 13, nlines: 13
[microtek] .read_scan_data...
[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:11050 isWrite:0
[sanei_scsi] isRead dst_size:11050
[sanei_scsi] Executing command
[sanei_scsi] ExecuteTaskSync OK Trasferred 11050 bytes
[microtek] sane_read:  buffsize: 11050,  unscanned: 0
[microtek] pack_into_ring...
[microtek] pack_into_dest...
[microtek] pack_into_dest:  rl: 11050  sz: 130900  hc: 0
[microtek] sane_read...
[microtek] end_scan...
[microtek] .stop_scan...
[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:0 isWrite:1
[sanei_scsi] isWrite src_size:0
[sanei_scsi] Executing command
[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes
[microtek] sane_start...
[microtek] sane_get_parameters...
[microtek] sane_get_parameters:  regular 3-pass color
[microtek] sane_get_parameters:  res_code = 33 (21)
[microtek] sane_get_parameters:  dots_per_mm:  3.937008
[microtek] sane_get_parameters:  units_per_mm:  11.811024
[microtek] WIDTHPIX:  before exp: 850
[microtek] sane_get_parameters:  lines: 1400  ppl: 850  bpl: 850
[microtek] set_pass_parameters:  three-pass, on 2
[sanei_debug] Setting debug level of sanei_scsi to 6.
[microtek] .wait_ready 0...
[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:0 isWrite:1
[sanei_scsi] isWrite src_size:0
[sanei_scsi] Executing command
[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes
[microtek] finagle_precal...
[microtek] .scanning_frame...
[microtek] .scanning_frame:  in- 0,0  2549,4199
[microtek] .scanning_frame: out- 0,0  2549,4199
[sanei_scsi] cmd2: cmd_size:6 src_size:9 dst_size:0 isWrite:1
[sanei_scsi] isWrite src_size:9
[sanei_scsi] Executing command
[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes
[microtek] .accessory...
[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:0 isWrite:1
[sanei_scsi] isWrite src_size:0
[sanei_scsi] Executing command
[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes
[microtek] .download_gamma...
[microtek] .download_gamma:  256 entries of 1 bytes, max 255
[microtek] .download_gamma: by default
[sanei_scsi] cmd2: cmd_size:10 src_size:256 dst_size:0 isWrite:1
[sanei_scsi] isWrite src_size:256
[sanei_scsi] Executing command
[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes
[microtek] .mode_select 0...
[microtek] .mode_select:  pap_len: 4199
[sanei_scsi] cmd2: cmd_size:6 src_size:10 dst_size:0 isWrite:1
[sanei_scsi] isWrite src_size:10
[sanei_scsi] Executing command
[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes
[microtek] .wait_ready 0...
[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:0 isWrite:1
[sanei_scsi] isWrite src_size:0
[sanei_scsi] Executing command
[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes
[microtek] .start_scan...
[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:0 isWrite:1
[sanei_scsi] isWrite src_size:0
[sanei_scsi] Executing command
[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes
[microtek] .get_scan_status 0...
[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:6 isWrite:0
[sanei_scsi] isRead dst_size:6
[sanei_scsi] Executing command
[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes
[microtek] get_scan_status(0): 0, 0, 0  -> #0
[microtek] >  0  0  0  0  0  0
[microtek] sane_start:  SCSI buffer smaller that one scan line!
[microtek] end_scan...
[microtek] .stop_scan...
[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:0 isWrite:1
[sanei_scsi] isWrite src_size:0
[sanei_scsi] Executing command
[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes
scanimage: sane_start: Out of memory
[microtek] sane_cancel...
[microtek] end_scan...
[microtek] sane_close...
[microtek] sane_exit...
[microtek] sane_exit:  MICROTEK says goodbye.
[MacCoylton:~] dave%


Scenario 2 :-  If I run with a constrained size, then the scanner 
appears to have executed all three passes, or is at least coming to the 
end of the third pass, but before the scanner physcially returns to the 
start I get a kernal panic. The command I used for this test was

[MacCoylton:~] dave% scanimage -d 
"microtek:iokitscsi@<0161e1000000001e02a59e9b>" -x 30 -y 30

here's the debug trace immediately before the kernal panic, I copied 
this down by hand so forgive me if I have any typo's

[microtek] read_from_scanner...
[microtek] .get_scan_status 0...
[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:6 isWrite:0
[sanei_scsi] isRead dst_size:6
[sanei_scsi] Executing command
[sanei_scsi] ExecuteTaskSync OK Transferred 6 bytes
[microtek] get_scan_status(6): 0, 118, 118  -> #0
[microtek] > 0 76 0 76 0 0
[microtek] read_from_scanner: gss busy, linewidth, remaining: 0, 118, 
118
[microtek] sane_read: max_scsi: 1110, rem: 118, nline: 118
[microtek] .read_scan_data...
[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:13924 isWrite:0
[sanei_scsi] isRead dst_size:13924
[sanei_scsi] Executing command

As you can see this stops on issuing a SCSI command, and the panic.log 
show the panic was within the adaptec driver.


Cheers

David

	

--Apple-Mail-4-231779869
Content-Transfer-Encoding: 7bit
Content-Type: text/enriched;
	charset=US-ASCII

Hi, 


	every time a new version of the Sane Backend's becomes available I
always have another go to see if anything has changed to make my
configuration work. I also find that when I come back to this afresh I
always get a little further forward. 


	When you run scanimage, the Microtek scanner incorretly reports
itself 8 times, each under a different LUN, this has been consistent
since the new Max OSX SCSI code was implemented to support Mac OS X
10.3. 


	[MacCoylton:~] dave% scanimage -L 

device `microtek:iokitscsi@<<016333000000001e2a70b923>' is a Microtek
ScanMaker II/IIXE flatbed scanner

device `microtek:iokitscsi@<<016338000000001e28c472d6>' is a Microtek
ScanMaker II/IIXE flatbed scanner

device `microtek:iokitscsi@<<01633a000000001e18c239cd>' is a Microtek
ScanMaker II/IIXE flatbed scanner

device `microtek:iokitscsi@<<0162c4000000001e05d02fe7>' is a Microtek
ScanMaker II/IIXE flatbed scanner

device `microtek:iokitscsi@<<01633d000000001e0530106a>' is a Microtek
ScanMaker II/IIXE flatbed scanner

device `microtek:iokitscsi@<<0162cc000000001e04869288>' is a Microtek
ScanMaker II/IIXE flatbed scanner

device `microtek:iokitscsi@<<0162cf000000001e03c78ee9>' is a Microtek
ScanMaker II/IIXE flatbed scanner

device `microtek:iokitscsi@<<0161e1000000001e02a59e9b>' is a Microtek
ScanMaker II/IIXE flatbed scanner

[MacCoylton:~] dave% 


	If you check using ioreg, each of these is on the same SCSI ID, but a
different LUN, the last one reported is actually on LUN 0. 


	If I run scanimage without specifically specifying a device, then I
always get and error about the scsi buffer being smaller than one scan
line. The error is a bit of a red herring, and the real issue is that
the code is trying to communicate with the scanner using the wrong
LUN, in this case on LUN 7 in the above example which is the first one
listed.  


	<color><param>FFFD,0000,0000</param>ISSUE: My coding is rusty and my
knowledge of the SCSI API used for Mac OS X is worse, but I believe
that the Mac OS X scsi code doesn't support specifying a LUN and SCSI
ID in the microtek.conf file. From my testing if the code has to
search for the scanners it only uses the vendor and device name, and
ends up attached to the wrong LUN</color>


	If I run scanimage  with the -d option set to the last device listed
ie the one thats LUN 0, the scan actually starts. I then have two
scenarios each with there own problems as follows 



	<color><param>0000,0000,FFFE</param>Scenario 1:- If I run with an
unconstrained size, then the first pass happens ok, and then scanimage
exists with an error before the scanner physically returns to the
start for the second pass. Here's some debug trace:-

</color>

[microtek] sane_read:  buffsize: 130900,  unscanned: 13

[microtek] pack_into_ring...

[microtek] pack_into_dest...

[microtek] pack_into_dest:  rl: 32768  sz: 130900  hc: 0

[microtek] sane_read...

[microtek] pack_into_dest...

[microtek] pack_into_dest:  rl: 32768  sz: 130900  hc: 32768

[microtek] sane_read...

[microtek] pack_into_dest...

[microtek] pack_into_dest:  rl: 32768  sz: 130900  hc: 65536

[microtek] sane_read...

[microtek] pack_into_dest...

[microtek] pack_into_dest:  rl: 32596  sz: 130900  hc: 98304

[microtek] sane_read...

[microtek] read_from_scanner...

[microtek] .get_scan_status 0...

[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:6 isWrite:0

[sanei_scsi] isRead dst_size:6

[sanei_scsi] Executing command

[sanei_scsi] ExecuteTaskSync OK Trasferred 6 bytes

[microtek] get_scan_status(6): 0, 850, 13  -> #0

[microtek] >  0 52  3  d  0  0

[microtek] read_from_scanner: gss busy, linewidth, remaining:  0, 850,
13

[microtek] sane_read:  max_scsi: 154, rem: 13, nlines: 13

[microtek] .read_scan_data...

[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:11050 isWrite:0

[sanei_scsi] isRead dst_size:11050

[sanei_scsi] Executing command

[sanei_scsi] ExecuteTaskSync OK Trasferred 11050 bytes

[microtek] sane_read:  buffsize: 11050,  unscanned: 0

[microtek] pack_into_ring...

[microtek] pack_into_dest...

[microtek] pack_into_dest:  rl: 11050  sz: 130900  hc: 0

[microtek] sane_read...

[microtek] end_scan...

[microtek] .stop_scan...

[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:0 isWrite:1

[sanei_scsi] isWrite src_size:0

[sanei_scsi] Executing command

[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes

[microtek] sane_start...

[microtek] sane_get_parameters...

[microtek] sane_get_parameters:  regular 3-pass color

[microtek] sane_get_parameters:  res_code = 33 (21)

[microtek] sane_get_parameters:  dots_per_mm:  3.937008

[microtek] sane_get_parameters:  units_per_mm:  11.811024

[microtek] WIDTHPIX:  before exp: 850

[microtek] sane_get_parameters:  lines: 1400  ppl: 850  bpl: 850

[microtek] set_pass_parameters:  three-pass, on 2

[sanei_debug] Setting debug level of sanei_scsi to 6.

[microtek] .wait_ready 0...

[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:0 isWrite:1

[sanei_scsi] isWrite src_size:0

[sanei_scsi] Executing command

[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes

[microtek] finagle_precal...

[microtek] .scanning_frame...

[microtek] .scanning_frame:  in- 0,0  2549,4199

[microtek] .scanning_frame: out- 0,0  2549,4199

[sanei_scsi] cmd2: cmd_size:6 src_size:9 dst_size:0 isWrite:1

[sanei_scsi] isWrite src_size:9

[sanei_scsi] Executing command

[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes

[microtek] .accessory...

[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:0 isWrite:1

[sanei_scsi] isWrite src_size:0

[sanei_scsi] Executing command

[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes

[microtek] .download_gamma...

[microtek] .download_gamma:  256 entries of 1 bytes, max 255

[microtek] .download_gamma: by default

[sanei_scsi] cmd2: cmd_size:10 src_size:256 dst_size:0 isWrite:1

[sanei_scsi] isWrite src_size:256

[sanei_scsi] Executing command

[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes

[microtek] .mode_select 0...

[microtek] .mode_select:  pap_len: 4199

[sanei_scsi] cmd2: cmd_size:6 src_size:10 dst_size:0 isWrite:1

[sanei_scsi] isWrite src_size:10

[sanei_scsi] Executing command

[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes

[microtek] .wait_ready 0...

[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:0 isWrite:1

[sanei_scsi] isWrite src_size:0

[sanei_scsi] Executing command

[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes

[microtek] .start_scan...

[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:0 isWrite:1

[sanei_scsi] isWrite src_size:0

[sanei_scsi] Executing command

[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes

[microtek] .get_scan_status 0...

[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:6 isWrite:0

[sanei_scsi] isRead dst_size:6

[sanei_scsi] Executing command

[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes

[microtek] get_scan_status(0): 0, 0, 0  -> #0

[microtek] >  0  0  0  0  0  0

[microtek] sane_start:  SCSI buffer smaller that one scan line!

[microtek] end_scan...

[microtek] .stop_scan...

[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:0 isWrite:1

[sanei_scsi] isWrite src_size:0

[sanei_scsi] Executing command

[sanei_scsi] ExecuteTaskSync OK Trasferred 0 bytes

scanimage: sane_start: Out of memory

[microtek] sane_cancel...

[microtek] end_scan...

[microtek] sane_close...

[microtek] sane_exit...

[microtek] sane_exit:  MICROTEK says goodbye.

[MacCoylton:~] dave% 



<color><param>0000,0000,FFFD</param>Scenario 2 :-  If I run with a
constrained size, then the scanner appears to have executed all three
passes, or is at least coming to the end of the third pass, but before
the scanner physcially returns to the start I get a kernal panic. The
command I used for this test was 


</color>[MacCoylton:~] dave%
<color><param>0000,0000,0000</param>scanimage -d
"microtek:iokitscsi@<<0161e1000000001e02a59e9b>" -x 30 -y 30


here's the debug trace immediately before the kernal panic, I copied
this down by hand so forgive me if I have any typo's 


[microtek] read_from_scanner...

[microtek] .get_scan_status 0...

[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:6 isWrite:0

[sanei_scsi] isRead dst_size:6 

[sanei_scsi] Executing command

[sanei_scsi] ExecuteTaskSync OK Transferred 6 bytes

[microtek] get_scan_status(6): 0, 118, 118  -> #0

[microtek] > 0 76 0 76 0 0 

[microtek] read_from_scanner: gss busy, linewidth, remaining: 0, 118,
118 

[microtek] sane_read: max_scsi: 1110, rem: 118, nline: 118 

[microtek] .read_scan_data...

[sanei_scsi] cmd2: cmd_size:6 src_size:0 dst_size:13924 isWrite:0

[sanei_scsi] isRead dst_size:13924

[sanei_scsi] Executing command 


As you can see this stops on issuing a SCSI command, and the panic.log
show the panic was within the adaptec driver. 



Cheers


David </color>


	


--Apple-Mail-4-231779869--

--Apple-Mail-5-231779877
content-type: application/pgp-signature; x-mac-type=70674453;
	name=PGP.sig
content-description: This is a digitally signed message part
content-disposition: inline; filename=PGP.sig
content-transfer-encoding: 7bit

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (Darwin)

iD8DBQFAmPOv+6rGH1tFACgRAoswAKCVZkeoL54k2Cxi2fRE42UkjtIF+gCgwGgY
BCI4u7RKKrnj/thHFssoQlA=
=lg/8
-----END PGP SIGNATURE-----

--Apple-Mail-5-231779877--