1
0
Fork 0
forked from forks/qmk_firmware

Relocate usb_detach to utils (#5121)

* Relocate usb_detach to utils

* Relocate usb_detach to utils - fix up files after move
This commit is contained in:
zvecr 2019-02-18 17:03:44 +00:00 committed by Drashna Jaelre
parent 545f95c8f4
commit 1a6a2a7b75
7 changed files with 24 additions and 105 deletions

View file

@ -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");
}
}

View file

@ -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.

View file

@ -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");
}
}

View file

@ -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.

18
util/usb_detach/Makefile Normal file
View file

@ -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)

View file

@ -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.

View file

@ -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>