commit d69b31d27d36ebb95c3b4636dcd5e245854f5c39
Author: finwo <finwo@pm.me>
Date: Thu, 26 Jan 2023 23:57:25 +0100
Project init
Diffstat:
4 files changed, 60 insertions(+), 0 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -0,0 +1 @@
+/usbreset
diff --git a/Makefile b/Makefile
@@ -0,0 +1,15 @@
+SRC=$(wildcard src/*.c)
+NAME=usbreset
+DESTDIR?=/usr/local
+
+CFLAGS?=
+
+.PHONY: default
+default: $(NAME)
+
+$(NAME): $(SRC)
+ cc $(CFLAGS) $(SRC) -o $@
+
+.PHONY: install
+install: $(NAME)
+ install $(NAME) $(DESTDIR)/bin
diff --git a/README.md b/README.md
@@ -0,0 +1,6 @@
+USB Reset
+=========
+
+This repository is a git mirror of Alan Stern's usbreset utility.
+
+Origin: https://marc.info/?l=linux-usb&m=121459435621262&w=2
diff --git a/src/usbreset.c b/src/usbreset.c
@@ -0,0 +1,38 @@
+/* usbreset -- send a USB port reset to a USB device */
+
+#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;
+}