You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

33 lines
1.2 KiB

  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. int main(int argc, char**argv)
  10. {
  11. struct usbdevfs_ioctl command;
  12. int ret;
  13. int fd;
  14. int i;
  15. if (argc>1) {
  16. fd = open(argv[1],O_RDWR);
  17. if (fd<1){
  18. perror("unable to open file");
  19. return 1;
  20. }
  21. for (i=0;i<255;i++){ // hack: should fetch how many interface there is.
  22. command.ifno = i;
  23. command.ioctl_code = USBDEVFS_DISCONNECT;
  24. command.data = NULL;
  25. ret = ioctl(fd, USBDEVFS_IOCTL, &command);
  26. if(ret!=-1)
  27. printf("un claimed interface %d %d\n",i,ret);
  28. }
  29. } else {
  30. printf ("usage: %s /dev/bus/usb/BUS/DEVICE\n",argv[0]);
  31. printf("Release all interfaces of this usb device for usage in virtualisation\n");
  32. }
  33. }