Иногда я хочу выполнить эту операцию на определенном устройстве, как это определено идентификатором VID (идентификатор продавца) и идентификатором продукта (идентификатор продукта). Это сценарий, который я нашел полезным для этой цели, который использует библиотеку nifty libusb.
Первый запуск:
sudo apt-get install libusb-dev
Затем этот c ++-файл resetDeviceConnection должен выполнить эту задачу , сброса соединения устройства, идентифицированного с помощью vid и pid.
#include <libusb-1.0/libusb.h>
int resetDeviceConnection(UINT_16 vid, UINT_16 pid){
/*Open libusb*/
int resetStatus = 0;
libusb_context * context;
libusb_init(&context);
libusb_device_handle * dev_handle = libusb_open_device_with_vid_pid(context,vid,pid);
if (dev_handle == NULL){
printf("usb resetting unsuccessful! No matching device found, or error encountered!\n");
resetStatus = 1;
}
else{
/*reset the device, if one was found*/
resetStatus = libusb_reset_device(dev_handle);
}
/*exit libusb*/
libusb_exit(context);
return resetStatus;
}
(украденный из моего личного каталога TIL: https://github.com/Marviel/TIL/blob/master/unix_tools/Reset_specific_USB_Device .md)