diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index b60f78fbf9d..c94ec164b30 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -389,25 +389,23 @@ static const probe_info_s *scan_for_devices(bmp_info_s *info) #else const bool skip_ftdi = false; #endif - result = libusb_init(&info->libusb_ctx); - if (result == 0) { - const ssize_t cnt = libusb_get_device_list(info->libusb_ctx, &device_list); - if (cnt > 0) { - // Parse the list of USB devices found - for (size_t deviceIndex = 0; device_list[deviceIndex]; ++deviceIndex) { - libusb_device *const device = device_list[deviceIndex]; - result = libusb_get_device_descriptor(device, &device_descriptor); - if (result < 0) { - result = fprintf(stderr, "failed to get device descriptor"); - return (probe_info_s *)NULL; - } - if (device_descriptor.idVendor != VENDOR_ID_FTDI || !skip_ftdi) { - if (!process_vid_pid_table_probe(&device_descriptor, device, &probe_list)) - process_cmsis_interface_probe(&device_descriptor, device, &probe_list, info); - } + + const ssize_t cnt = libusb_get_device_list(info->libusb_ctx, &device_list); + if (cnt > 0) { + // Parse the list of USB devices found + for (size_t deviceIndex = 0; device_list[deviceIndex]; ++deviceIndex) { + libusb_device *const device = device_list[deviceIndex]; + result = libusb_get_device_descriptor(device, &device_descriptor); + if (result < 0) { + result = fprintf(stderr, "failed to get device descriptor"); + return (probe_info_s *)NULL; + } + if (device_descriptor.idVendor != VENDOR_ID_FTDI || !skip_ftdi) { + if (!process_vid_pid_table_probe(&device_descriptor, device, &probe_list)) + process_cmsis_interface_probe(&device_descriptor, device, &probe_list, info); } - libusb_free_device_list(device_list, (int)cnt); } + libusb_free_device_list(device_list, (int)cnt); } return probe_info_correct_order(probe_list); } @@ -418,6 +416,10 @@ int find_debuggers(bmda_cli_options_s *cl_opts, bmp_info_s *info) (void)info; if (cl_opts->opt_device) return 1; + + if (libusb_init(&info->libusb_ctx) != 0) + return 1; + /* Scan for all possible probes on the system */ const probe_info_s *probe_list = scan_for_devices(info); if (!probe_list) {