Skip to content

Instantly share code, notes, and snippets.

@stav
Created May 15, 2016 21:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stav/e08f849d78af2688ecf30722c0940d0a to your computer and use it in GitHub Desktop.
Save stav/e08f849d78af2688ecf30722c0940d0a to your computer and use it in GitHub Desktop.
Send a USB port reset to a USB device
/*
usbreset -- send a USB port reset to a USB device
http://askubuntu.com/questions/645#answer-661
cc usbreset.c -o usbreset
lsusb |grep DUB
Bus 001 Device 021: ID 2001:1a02 D-Link Corp. DUB-E100 Fast Ethernet Adapter(rev.C1) [ASIX AX88772]
sudo /home/stav/bin/usbreset /dev/bus/usb/001/007
*/
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <linux/usbdevice_fs.h>
int main(int argc, char **argv)
{
const char *filename;
int fd;
int rc;
if (argc != 2) {
fprintf(stderr, "Usage: usbreset device-filename\n");
return 1;
}
filename = argv[1];
fd = open(filename, O_WRONLY);
if (fd < 0) {
perror("Error opening output file");
return 1;
}
printf("Resetting USB device %s\n", filename);
rc = ioctl(fd, USBDEVFS_RESET, 0);
if (rc < 0) {
perror("Error in ioctl");
return 1;
}
printf("Reset successful\n");
close(fd);
return 0;
}
@stav
Copy link
Author

stav commented Nov 27, 2016

See also the more complete Python version.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment