[sane-devel] UMAX backend with sanei_thread, Mac OS-X users please try, OS/2 users please try!

Franz Bakan Franz Bakan" <fbakan@gmx.net
Wed, 21 Jan 2004 00:39:21 +0100 (CET)


Hello,

On Mon, 12 Jan 2004 21:00:16 +0100, Oliver Rauch wrote:

>I just replaced the fork() calls by sanei_thread_*() calls for the sane-umax 
>backend. I tested it wirk fork() and threads on linux. This version is in the 
>sane cvs now.
>
>Please could some Mac OS-X and OS/2 users test this version!

I have testers, but no definite result so far regarding the thread()-version.

But an error-report regarding 1.0.13:

Scanner: UMAX S-6E       V2.0C
SCSI-Card: Adpatec  AHA-1520/1522

When the user does not redirect '1' to a file the scanner works and finishes normal.

When he redirects the image-data to a file image.pnm the scanner starts to work,
but after a while it ends with:

[umax] starting scan
[sanei_scsi] sanei_scsi_cmd: Writing PSRBlock->u.cmd.data_len= 1
[umax] do_calibration
[umax] wait_scanner
[sanei_scsi] sanei_scsi_cmd: Writing PSRBlock->u.cmd.data_len= 0
[sanei_scsi] sanei_scsi_cmd:  command 0x00 failed.
PSRBlock->status= 0x04
PSRBlock->u.chm.ha_status= 0x00
PSRBlock->u.cmd.target_status= 0x00
[umax] scanner reports Error during device I/O, waiting ...
[sanei_scsi] sanei_scsi_cmd: Writing PSRBlock->u.cmd.data_len= 0
[sanei_scsi] sanei_scsi_cmd:  command 0x00 failed.
PSRBlock->status= 0x04
PSRBlock->u.chm.ha_status= 0x00
PSRBlock->u.cmd.target_status= 0x00
...
PSRBlock->status= 0x04
PSRBlock->u.chm.ha_status= 0x00
PSRBlock->u.cmd.target_status= 0x00
[sanei_scsi] sanei_scsi_cmd: Writing PSRBlock->u.cmd.data_len= 0
[umax] check condition sense handler (scsi_fd = 0)
[umax] check condition sense: VENDOR SPECIFIC
[umax] -> no error (#0)
[umax] -> calibration by driver
[umax] scanner ready
[umax] driver is doing calibration
[umax] request sense call is disabled
[umax] WARNING: missing information about shading-data
[umax]          driver tries to guess missing values!
[umax]          Calibration is done with selected image geometry and depth!
[umax] scanner sends 66 lines with 7647 pixels and 1 bytes/pixel
[umax] calculating average value for 8 bit shading data!
[umax] read_shading_data
[sanei_scsi] sanei_scsi_cmd: Reading PSRBlock->u.cmd.data_len= 7647
[umax] 8 bit shading-line 1 read
...
[sanei_scsi] sanei_scsi_cmd: Writing PSRBlock->u.cmd.data_len= 7647
[umax] shading-data sent
[umax] start_scan
[umax] starting scan
[sanei_scsi] sanei_scsi_cmd: Writing PSRBlock->u.cmd.data_len= 1
[umax] sane_get_parameters
[umax] reader_process started
[umax] reader_process: allocating SCSI buffer[1]
[umax] reader_process: starting to READ data
[umax] trim_rowbufsize: row_bufsize = 33150 bytes = 13 lines
[umax] reading 2983500 bytes in blocks of 33150 bytes
[umax] wait_scanner
[sanei_scsi] sanei_scsi_cmd: Writing PSRBlock->u.cmd.data_len= 0
[sanei_scsi] sanei_scsi_cmd:  command 0x00 failed.
PSRBlock->status= 0x04
PSRBlock->u.chm.ha_status= 0x00
PSRBlock->u.cmd.target_status= 0x00
[umax] scanner reports Error during device I/O, waiting ...
[sanei_scsi] sanei_scsi_cmd: Writing PSRBlock->u.cmd.data_len= 0
[sanei_scsi] sanei_scsi_cmd:  command 0x00 failed.
PSRBlock->status= 0x04
PSRBlock->u.chm.ha_status= 0x11
PSRBlock->u.cmd.target_status= 0x00
[sanei_scsi] sanei_scsi_cmd: Writing PSRBlock->u.cmd.data_len= 0
[umax] scanner ready
[umax] umax_queue_read_image_data_req for buffer[0], length = 33150
[sanei_scsi] sanei_scsi_cmd: Reading PSRBlock->u.cmd.data_len= 33150
[umax] umax_queue_read_image_data_req: id for buffer[0] is 0
[umax] umax_reader_process: read image data queued for buffer[0] 
[umax] umax_queue_read_image_data_req for buffer[1], length = 33150
[sanei_scsi] sanei_scsi_cmd: Reading PSRBlock->u.cmd.data_len= 33150
[umax] umax_queue_read_image_data_req: id for buffer[1] is 0
[umax] umax_reader_process: read image data queued for buffer[1] 
[umax] umax_wait_queued_image_data for buffer[0] (id=0)
[umax] sane_read: read 8192 bytes
[umax] sane_read: read 8192 bytes
[umax] sane_read: read 8192 bytes
[umax] sane_read: read 8192 bytes
[umax] umax_reader_process: buffer of 33150 bytes read; 2950350 bytes to go
...
[umax] umax_reader_process: buffer of 33150 bytes read; 1657500 bytes to go
[umax] umax_queue_read_image_data_req for buffer[1], length = 33150
[sanei_scsi] sanei_scsi_cmd: Reading PSRBlock->u.cmd.data_len= 33150
[umax] sane_read: read 382 bytes
[umax] umax_queue_read_image_data_req: id for buffer[1] is 0
[umax] umax_reader_process: read image data queued for buffer[1] 
[umax] umax_wait_queued_image_data for buffer[0] (id=0)
[umax] sane_read: read 8192 bytes
[umax] sane_read: read 8192 bytes
[umax] sane_read: read 8192 bytes
[umax] sane_read: read 8192 bytes
[umax] umax_reader_process: buffer of 33150 bytes read; 1624350 bytes to go
[umax] umax_queue_read_image_data_req for buffer[0], length = 33150
[sanei_scsi] sanei_scsi_cmd: Reading PSRBlock->u.cmd.data_len= 33150
[sanei_scsi] sanei_scsi_cmd: DosDevIOCtl failed. rc= 65314 
[umax] umax_queue_read_image_data_req: command returned status Error during device I/O
[umax] ERROR: umax_reader_process: unable to queue read image data request!
...

DosDevIOCtl failed. rc= 65314  means 'Interface Busy'

Do you think it makes sense to add 'wait()s' and retry a few times before
giving up or should I suggest to change the card/scanner/cables?

BTW: Sane 1.0.5 works for this user.

Franz