--- initializers.h	2004-06-16 06:19:23.000000000 +0100
+++ initializers.h.new	2004-06-27 15:06:27.314301737 +0100
@@ -52,3 +52,7 @@
 /* This function is required to activate all four slots on the UCR-61S2B
  * flash reader */
 int usb_stor_ucr61s2b_init(struct us_data *us);
+
+/* Any ucr-61s* product released after this date does not need the extra initialization */
+#define UCR61S3_DATE "20020509145305401" //ths date is not yet known this is just a starting point
+
--- initializers.c	2004-06-16 06:19:13.000000000 +0100
+++ initializers.c.new	2004-06-27 15:06:25.328578240 +0100
@@ -68,24 +68,31 @@
 	int res, partial;
 	static char init_string[] = "\xec\x0a\x06\x00$PCCHIPS";
 
-	US_DEBUGP("Sending UCR-61S2B initialization packet...\n");
+	if (strcmp(us->serial, UCR61S3_DATE) < 0){
+		printk(KERN_INFO USB_STORAGE "Running extra initialization\n");
+		
+		US_DEBUGP("Sending UCR-61S2B initialization packet...\n");
 
-	bcb->Signature = cpu_to_le32(US_BULK_CB_SIGN);
-	bcb->Tag = 0;
-	bcb->DataTransferLength = cpu_to_le32(0);
-	bcb->Flags = bcb->Lun = 0;
-	bcb->Length = sizeof(init_string) - 1;
-	memset(bcb->CDB, 0, sizeof(bcb->CDB));
-	memcpy(bcb->CDB, init_string, sizeof(init_string) - 1);
+		bcb->Signature = cpu_to_le32(US_BULK_CB_SIGN);
+		bcb->Tag = 0;
+		bcb->DataTransferLength = cpu_to_le32(0);
+		bcb->Flags = bcb->Lun = 0;
+		bcb->Length = sizeof(init_string) - 1;
+		memset(bcb->CDB, 0, sizeof(bcb->CDB));
+		memcpy(bcb->CDB, init_string, sizeof(init_string) - 1);
 
-	res = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, bcb,
+		res = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, bcb,
 			US_BULK_CB_WRAP_LEN, &partial);
-	if(res)
-		return res;
+		if(res)
+			return res;
 
-	US_DEBUGP("Getting status packet...\n");
-	res = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, bcs,
+		US_DEBUGP("Getting status packet...\n");
+		res = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, bcs,
 			US_BULK_CS_WRAP_LEN, &partial);
 
-	return (res ? -1 : 0);
+		return (res ? -1 : 0);
+	} else {
+		//don't run the extra initialisation	
+		return 0;
+	}
 }
