diff --git a/libnfc/drivers/acr122_usb.c b/libnfc/drivers/acr122_usb.c index a6392e8..4a88c61 100644 --- a/libnfc/drivers/acr122_usb.c +++ b/libnfc/drivers/acr122_usb.c @@ -427,12 +427,15 @@ acr122_usb_open(const nfc_context *context, const nfc_connstring connstring) goto free_mem; } - res = usb_set_altinterface(data.pudh, 0); - if (res < 0) { - log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_ERROR, "Unable to set alternate setting on USB interface (%s)", _usb_strerror(res)); - usb_close(data.pudh); - // we failed to use the specified device - goto free_mem; + // Check if there are more than 0 alternative interfaces and claim the first one + if (dev->config->interface->altsetting->bAlternateSetting > 0) { + res = usb_set_altinterface(data.pudh, 0); + if (res < 0) { + log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_ERROR, "Unable to set alternate setting on USB interface (%s)", _usb_strerror(res)); + usb_close(data.pudh); + // we failed to use the specified device + goto free_mem; + } } // Allocate memory for the device info and specification, fill it and return the info