diff --git a/host/libhackrf/src/hackrf.c b/host/libhackrf/src/hackrf.c index 4bf5fd7b..2030f3d4 100644 --- a/host/libhackrf/src/hackrf.c +++ b/host/libhackrf/src/hackrf.c @@ -268,15 +268,27 @@ libusb_device_handle* hackrf_open_usb(const char* const desired_serial_number) libusb_device_handle* usb_device = NULL; libusb_device** devices = NULL; const ssize_t list_length = libusb_get_device_list(g_libusb_context, &devices); + int match_len = 0; printf("Number of USB devices: %ld\n", list_length); + if( desired_serial_number ) { + /* If a shorter serial number is specified, only match against the suffix. + * Should probably complain if the match is not unique, currently doesn't. + */ + match_len = strlen(desired_serial_number); + if ( match_len > 32 ) + return NULL; + } + for (ssize_t i=0; i 0 ) { @@ -289,7 +301,7 @@ libusb_device_handle* hackrf_open_usb(const char* const desired_serial_number) if( serial_number_length == 32 ) { serial_number[32] = 0; printf(" %s", serial_number); - if( strncmp(serial_number, desired_serial_number, 32) == 0 ) { + if( strncmp(serial_number + 32-match_len, desired_serial_number, match_len) == 0 ) { printf(" match\n"); break; } else {