diff --git a/src/ftdi.c b/src/ftdi.c
index 95028e5..eea3b38 100644
--- a/src/ftdi.c
+++ b/src/ftdi.c
@@ -717,8 +717,9 @@ int ftdi_usb_open_desc_index(struct ftdi_context *ftdi, int vendor, int product,
             {
                 if (libusb_get_string_descriptor_ascii(ftdi->usb_dev, desc.iProduct, (unsigned char *)string, sizeof(string)) < 0)
                 {
-                    ftdi_usb_close_internal (ftdi);
-                    ftdi_error_return_free_device_list(-8, "unable to fetch product description", devs);
+		    ftdi_usb_close_internal (ftdi);
+		    continue; // try next device, this may already have been opened
+                    //ftdi_error_return_free_device_list(-8, "unable to fetch product description", devs);
                 }
                 if (strncmp(string, description, sizeof(string)) != 0)
                 {
@@ -731,7 +732,8 @@ int ftdi_usb_open_desc_index(struct ftdi_context *ftdi, int vendor, int product,
                 if (libusb_get_string_descriptor_ascii(ftdi->usb_dev, desc.iSerialNumber, (unsigned char *)string, sizeof(string)) < 0)
                 {
                     ftdi_usb_close_internal (ftdi);
-                    ftdi_error_return_free_device_list(-9, "unable to fetch serial number", devs);
+		    continue; // try next device, this may already have been opened
+                    //ftdi_error_return_free_device_list(-9, "unable to fetch serial number", devs);
                 }
                 if (strncmp(string, serial, sizeof(string)) != 0)
                 {
