gpt4 book ai didi

linux - 如何在不实际拔下 USB 调制解调器的情况下逻辑断开和重新连接 USB 调制解调器

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:28:45 29 4
gpt4 key购买 nike

我想像开机重启一样重启 USB 调制解调器,而无需重启并在 Linux 机器中物理拔掉它。我试过执行此程序:

  • echo -n 0 >/sys/devices/platform/omap/ti81xx-usbss/musb-hdrc.0/usb1/bConfigurationValue
  • echo -n 1 >/sys/devices/platform/omap/ti81xx-usbss/musb-hdrc.0/usb1/bConfigurationValue

但我只能断开它,但第二个命令失败了。提供以下打印品:

hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
usb 1-1: new full speed USB device using musb-hdrc and address 4
usb 1-1: device descriptor read/64, error -19
usb 1-1: device descriptor read/64, error -19
usb 1-1: new full speed USB device using musb-hdrc and address 5
usb 1-1: device descriptor read/64, error -19
usb 1-1: device descriptor read/64, error -19
usb 1-1: new full speed USB device using musb-hdrc and address 6
usb 1-1: device not accepting address 6, error -19
usb 1-1: new full speed USB device using musb-hdrc and address 7
usb 1-1: device not accepting address 7, error -19
hub 1-0:1.0: unable to enumerate USB device on port 1

有什么方法可以自动执行此重置过程。这样,如果我 insmod 一个模块,它应该注册 USB 设备,当我 rmmod 一个模块时,它应该断开 USB 设备。

有没有这样的模块?

最佳答案

这就像您想要在接口(interface)上以管理方式关闭/不关闭的任何其他接口(interface)。

#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <linux/usbdevice_fs.h>

void main(int argc, char **argv)
{
const char *filename;
int fd;

filename = argv[1];
fd = open(filename, O_WRONLY);
ioctl(fd, USBDEVFS_RESET, 0);
close(fd);
return;
}

编译代码:

$ gcc -o usb-reset usb-reset.c

我在 /dev/ttyACM0 将 Arduino 连接到我的 ubuntu 机器,我将尝试通过以下方式重置 Arduino:

sudo ./usb-reset/dev/ttyACM0

这重置了板子!

关于linux - 如何在不实际拔下 USB 调制解调器的情况下逻辑断开和重新连接 USB 调制解调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30568394/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com