--- avrdude-5.11.1/usbasp.h	2011-09-15 09:37:05.000000000 -0500
+++ avrdude_5.11.1_xwopen/usbasp.h	2012-01-11 12:53:19.000000000 -0600
@@ -28,6 +28,9 @@
 #define	USBASP_SHARED_VID   0x16C0  /* VOTI */
 #define	USBASP_SHARED_PID   0x05DC  /* Obdev's free shared PID */
 
+#define	USBASP_XWOPEN_VID   0x16C0  /* VOTI */
+#define	USBASP_XWOPEN_PID   0x05DC  /* Obdev's free shared PID */
+
 #define	USBASP_OLD_VID      0x03EB  /* ATMEL */
 #define	USBASP_OLD_PID	    0xC7B4  /* (unoffical) USBasp */
 
--- avrdude-5.11.1/usbasp.c	2011-09-15 09:37:05.000000000 -0500
+++ avrdude_5.11.1_xwopen/usbasp.c	2012-01-11 14:27:45.000000000 -0600
@@ -405,6 +405,16 @@
   } else if (usbOpenDevice(&PDATA(pgm)->usbhandle, USBASP_SHARED_VID, "www.fischl.de",
 		    USBASP_SHARED_PID, "USBasp") != 0) {
 
+       /* try to match just on IDs, not descriptions */
+    if (usbOpenDevice(&PDATA(pgm)->usbhandle, USBASP_XWOPEN_VID, NULL,
+		    USBASP_XWOPEN_PID, NULL) != 0) {
+
+      fprintf(stderr,
+	      "%s: error: could not find USB device "
+	      "\"XWOpen\" with vid=0x%x pid=0x%x. Trying old VID/PID\n",
+  	      progname, USBASP_XWOPEN_VID, USBASP_XWOPEN_PID);
+
+
     /* check if device with old VID/PID is available */
     if (usbOpenDevice(&PDATA(pgm)->usbhandle, USBASP_OLD_VID, "www.fischl.de",
 		      USBASP_OLD_PID, "USBasp") != 0) {
@@ -425,7 +435,7 @@
   	      progname);
     }
   }
-
+  }
   return 0;
 }

