summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/jj40/tools/usb_detach.c33
-rw-r--r--keyboards/jj4x4/tools/README.md16
-rw-r--r--keyboards/jj4x4/tools/usb_detach.c33
-rw-r--r--keyboards/ymd96/tools/README.md16
-rw-r--r--util/usb_detach/Makefile18
-rw-r--r--util/usb_detach/readme.md (renamed from keyboards/jj40/tools/README.md)12
-rw-r--r--util/usb_detach/usb_detach.c (renamed from keyboards/ymd96/tools/usb_detach.c)1
7 files changed, 24 insertions, 105 deletions
diff --git a/keyboards/jj40/tools/usb_detach.c b/keyboards/jj40/tools/usb_detach.c
deleted file mode 100644
index c21e47a7a4..0000000000
--- a/keyboards/jj40/tools/usb_detach.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Found at https://www.linuxquestions.org/questions/linux-hardware-18/how-to-unclaim-usb-device-558138/#post3406986 */
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <linux/ioctl.h>
-#include <linux/usbdevice_fs.h>
-
-int main(int argc, char**argv)
-{
- struct usbdevfs_ioctl command;
- int ret;
- int fd;
- int i;
- if (argc>1) {
- fd = open(argv[1],O_RDWR);
- if (fd<1){
- perror("unable to open file");
- return 1;
- }
- for (i=0;i<255;i++){ // hack: should fetch how many interface there is.
- command.ifno = i;
- command.ioctl_code = USBDEVFS_DISCONNECT;
- command.data = NULL;
- ret = ioctl(fd, USBDEVFS_IOCTL, &command);
- if(ret!=-1)
- printf("un claimed interface %d %d\n",i,ret);
- }
- } else {
- printf ("usage: %s /dev/bus/usb/BUS/DEVICE\n",argv[0]);
- printf("Release all interfaces of this usb device for usage in virtualisation\n");
- }
-} \ No newline at end of file
diff --git a/keyboards/jj4x4/tools/README.md b/keyboards/jj4x4/tools/README.md
deleted file mode 100644
index 081984ed44..0000000000
--- a/keyboards/jj4x4/tools/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# JJ40 Tools
-
-## usb_detach.c
-
-When trying to flash on Linux, you may encounter a "Resource Unavailable" error. This means that Linux's HID driver has taken exclusive control of the keyboard, and the program script can't flash it.
-This program can force Linux to give up a device, so that the programming script can reset it.
-
-### To compile:
-```
-gcc usb_detach.c -o usb_detach
-```
-
-### To run:
-1. Use `lsusb` to discover the Bus and Device numbers for your keyboard.
-2. Run the program: `sudo ./usb_detach /dev/bus/usb/<BUS>/<DEVICE>`.
-3. Build and program the firmware as normal.
diff --git a/keyboards/jj4x4/tools/usb_detach.c b/keyboards/jj4x4/tools/usb_detach.c
deleted file mode 100644
index c21e47a7a4..0000000000
--- a/keyboards/jj4x4/tools/usb_detach.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Found at https://www.linuxquestions.org/questions/linux-hardware-18/how-to-unclaim-usb-device-558138/#post3406986 */
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <linux/ioctl.h>
-#include <linux/usbdevice_fs.h>
-
-int main(int argc, char**argv)
-{
- struct usbdevfs_ioctl command;
- int ret;
- int fd;
- int i;
- if (argc>1) {
- fd = open(argv[1],O_RDWR);
- if (fd<1){
- perror("unable to open file");
- return 1;
- }
- for (i=0;i<255;i++){ // hack: should fetch how many interface there is.
- command.ifno = i;
- command.ioctl_code = USBDEVFS_DISCONNECT;
- command.data = NULL;
- ret = ioctl(fd, USBDEVFS_IOCTL, &command);
- if(ret!=-1)
- printf("un claimed interface %d %d\n",i,ret);
- }
- } else {
- printf ("usage: %s /dev/bus/usb/BUS/DEVICE\n",argv[0]);
- printf("Release all interfaces of this usb device for usage in virtualisation\n");
- }
-} \ No newline at end of file
diff --git a/keyboards/ymd96/tools/README.md b/keyboards/ymd96/tools/README.md
deleted file mode 100644
index 081984ed44..0000000000
--- a/keyboards/ymd96/tools/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# JJ40 Tools
-
-## usb_detach.c
-
-When trying to flash on Linux, you may encounter a "Resource Unavailable" error. This means that Linux's HID driver has taken exclusive control of the keyboard, and the program script can't flash it.
-This program can force Linux to give up a device, so that the programming script can reset it.
-
-### To compile:
-```
-gcc usb_detach.c -o usb_detach
-```
-
-### To run:
-1. Use `lsusb` to discover the Bus and Device numbers for your keyboard.
-2. Run the program: `sudo ./usb_detach /dev/bus/usb/<BUS>/<DEVICE>`.
-3. Build and program the firmware as normal.
diff --git a/util/usb_detach/Makefile b/util/usb_detach/Makefile
new file mode 100644
index 0000000000..533c1928f4
--- /dev/null
+++ b/util/usb_detach/Makefile
@@ -0,0 +1,18 @@
+# the compiler: gcc for C program, define as g++ for C++
+CC = gcc
+
+# compiler flags:
+# -g adds debugging information to the executable file
+# -Wall turns on most, but not all, compiler warnings
+CFLAGS = -g -Wall
+
+# the build target executable:
+TARGET = usb_detach
+
+all: $(TARGET)
+
+$(TARGET): $(TARGET).c
+ $(CC) $(CFLAGS) -o $(TARGET) $(TARGET).c
+
+clean:
+ $(RM) $(TARGET)
diff --git a/keyboards/jj40/tools/README.md b/util/usb_detach/readme.md
index 081984ed44..ac42944ee4 100644
--- a/keyboards/jj40/tools/README.md
+++ b/util/usb_detach/readme.md
@@ -1,16 +1,14 @@
-# JJ40 Tools
-
-## usb_detach.c
+# usb_detach
When trying to flash on Linux, you may encounter a "Resource Unavailable" error. This means that Linux's HID driver has taken exclusive control of the keyboard, and the program script can't flash it.
This program can force Linux to give up a device, so that the programming script can reset it.
-### To compile:
-```
-gcc usb_detach.c -o usb_detach
+## To compile:
+```bash
+make clean && make
```
-### To run:
+## To run:
1. Use `lsusb` to discover the Bus and Device numbers for your keyboard.
2. Run the program: `sudo ./usb_detach /dev/bus/usb/<BUS>/<DEVICE>`.
3. Build and program the firmware as normal.
diff --git a/keyboards/ymd96/tools/usb_detach.c b/util/usb_detach/usb_detach.c
index c21e47a7a4..786ab5e674 100644
--- a/keyboards/ymd96/tools/usb_detach.c
+++ b/util/usb_detach/usb_detach.c
@@ -1,5 +1,6 @@
/* Found at https://www.linuxquestions.org/questions/linux-hardware-18/how-to-unclaim-usb-device-558138/#post3406986 */
#include <stdio.h>
+#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>