--- backend/microtek2.c.alt Tue Jul 11 17:56:08 2000 +++ backend/microtek2.c Tue Jul 11 18:08:23 2000 @@ -2217,6 +2217,12 @@ if ( md->revision == 1.00 ) md->model_flags |= MD_OFFSET_2; break; + case 0x99: + *model_string = "Scanmaker X6"; + if ( md->revision == 1.00 ) + md->model_flags |= MD_OFFSET_2; + md->model_flags |= MD_X6_SHORT_TRANSFER; + break; case 0x9a: *model_string = "Phantom 636cx / C6"; /* The Phantom 636cx says it supports the SLIDE mode, but it */ @@ -6571,6 +6577,7 @@ SANE_Bool endiantype; SANE_Status status; size_t size; + Microtek2_Device *md; DBG(30, "scsi_read_image: ms=%p, buffer=%p\n", ms, buffer); @@ -6586,7 +6593,11 @@ if ( md_dump >= 2 ) dump_area2(cmd, RI_CMD_L, "readimagecmd"); - size = ms->src_buffer_size; + md = ms->dev; + if (md->model_flags & MD_X6_SHORT_TRANSFER) + size = ms->transfer_length; + else + size = ms->src_buffer_size; status = sanei_scsi_cmd(ms->sfd, cmd, sizeof(cmd), buffer, &size); /* ms->buf.src_buffer[ms->buf.current_src], &size);*/ --- backend/microtek2.h.old Tue Jul 11 17:59:54 2000 +++ backend/microtek2.h Tue Jul 11 18:08:27 2000 @@ -778,6 +778,8 @@ #define MD_OFFSET_2 256 /* Image data starts 2 bytes */ /* from the beginning of a */ /* scanline */ +#define MD_X6_SHORT_TRANSFER 512 /* X6 USB crashes if you read + too much */ u_int32_t n_control_bytes; /* for read_control_bits; the */ /* number is model dependent */