python usb 复位_如何从命令行重置USB设备?

问题描述

是否可以重置USB设备的连接,而无需从PC断开/连接?

具体来说,我的设备是数码相机。我正在使用gphoto2,但最近我收到“设备读取错误”,所以我想尝试执行连接的software-reset。

从我可以告诉的是,没有为相机加载内核模块。唯一与外表相关的是usbhid。

最佳解决办法

将以下内容保存为usbreset.c

/* usbreset -- send a USB port reset to a USB device */

#include

#include

#include

#include

#include

#include

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;

}

在终端中运行以下命令:

编译程序:

$ cc usbreset.c -o usbreset

获取要重置的USB设备的总线和设备ID:

$ lsusb

Bus 002 Device 003: ID 0fe9:9010 DVICO

让我们的编译程序可执行:

$ chmod +x usbreset

用sudo权限执行程序;通过运行lsusb命令找到和 id的必要替代:

$

你可能感兴趣的:(python,usb,复位)