--- 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 */

