- if (!uscpi->rigol_ds1000) {
- if ((ret = libusb_clear_halt(usb->devhdl, uscpi->bulk_in_ep)) < 0)
- sr_err("Failed to clear halt/stall condition for EP %d: %s.",
- uscpi->bulk_in_ep, libusb_error_name(ret));
- if ((ret = libusb_clear_halt(usb->devhdl, uscpi->bulk_out_ep)) < 0)
- sr_err("Failed to clear halt/stall condition for EP %d: %s.",
- uscpi->bulk_out_ep, libusb_error_name(ret));
- if ((ret = libusb_clear_halt(usb->devhdl, uscpi->interrupt_ep)) < 0)
- sr_err("Failed to clear halt/stall condition for EP %d: %s.",
- uscpi->interrupt_ep, libusb_error_name(ret));
+ dev = libusb_get_device(usb->devhdl);
+ libusb_get_device_descriptor(dev, &des);
+ if (des.idVendor == 0x1ab1 && des.idProduct == 0x0588
+ && scpi->firmware_version >= 24) {
+ /* Rigol DS1000 with firmware > 0.2.4 needs this. */
+ if ((ret = libusb_clear_halt(usb->devhdl, uscpi->bulk_in_ep)) < 0)
+ sr_err("Failed to clear halt/stall condition for EP %d: %s.",
+ uscpi->bulk_out_ep, libusb_error_name(ret));
+ if ((ret = libusb_clear_halt(usb->devhdl, uscpi->bulk_out_ep)) < 0)
+ sr_err("Failed to clear halt/stall condition for EP %d: %s.",
+ uscpi->bulk_out_ep, libusb_error_name(ret));