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
