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的必要替代:

$

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值