usb_detach.c (1243B)
1 /* Found at https://www.linuxquestions.org/questions/linux-hardware-18/how-to-unclaim-usb-device-558138/#post3406986 */ 2 #include <stdio.h> 3 #include <sys/ioctl.h> 4 #include <sys/types.h> 5 #include <sys/stat.h> 6 #include <fcntl.h> 7 #include <linux/ioctl.h> 8 #include <linux/usbdevice_fs.h> 9 10 int main(int argc, char**argv) 11 { 12 struct usbdevfs_ioctl command; 13 int ret; 14 int fd; 15 int i; 16 if (argc>1) { 17 fd = open(argv[1],O_RDWR); 18 if (fd<1){ 19 perror("unable to open file"); 20 return 1; 21 } 22 for (i=0;i<255;i++){ // hack: should fetch how many interface there is. 23 command.ifno = i; 24 command.ioctl_code = USBDEVFS_DISCONNECT; 25 command.data = NULL; 26 ret = ioctl(fd, USBDEVFS_IOCTL, &command); 27 if(ret!=-1) 28 printf("un claimed interface %d %d\n",i,ret); 29 } 30 } else { 31 printf ("usage: %s /dev/bus/usb/BUS/DEVICE\n",argv[0]); 32 printf("Release all interfaces of this usb device for usage in virtualisation\n"); 33 } 34 }