在 Ubuntu 10.04 中硬重置 USB

在 Ubuntu 10.04 中硬重置 USB

我有一个 USB 设备(调制解调器),它非常不稳定。有时它工作正常,但有时它拒绝连接。我发现,当它处于故障状态时,唯一的解决办法就是物理拔下设备然后再插回去。但是,我并不总是能够物理访问插入它的机器,所以我正在寻找一种通过命令行来执行此操作的方法。

这个帖子建议运行:

$ sudo modprobe -w -r usb_storage; sudo modprobe usb_storage

但是我得到了“未知选项 -w”的输出。这个稍微修改过的命令:

$ sudo modprobe -r usb_storage

失败并显示消息 FATAL: Module usb_storage is in use. 如果我尝试在运行之前 kill -9 标记为 [usb-storage] 的进程,它们会拒绝终止(我认为是因为它们与内核紧密相关)。

有人知道怎样做吗?

笔记:我在 serverfault 上交叉发布了这篇文章因为我不知道哪个更合适。我将删除和/或链接最先得到回答的那个。

答案1

我有 Ubuntu 14.04.4。我不知道这在 10.04 中是否有效。我在 Cyborg Rumble Pad(和通用 USB 闪存驱动器)上对其进行了测试。

连接设备后:

dmesg | grep usb | tail -n 20

我得到(也许还有其他东西):

[ 2875.790610] usb 2-1.2: new full-speed USB device number 7 using ehci-pci
[ 2875.887485] usb 2-1.2: New USB device found, idVendor=0738, idProduct=cb02
[ 2875.887489] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2875.887490] usb 2-1.2: Product: Cyborg Rumble Pad - PC/Xbox 360
[ 2875.887492] usb 2-1.2: Manufacturer: Saitek
[ 2875.887493] usb 2-1.2: SerialNumber: 0CFE6B97

关键部分是2-1.2字符串。它标识 USB 端口。好消息是,除非我将设备插入另一个端口,否则它不会改变,因此我只需获取一次字符串即可。

接下来我去正确的地方:

cd /sys/bus/usb/drivers/usb

并调用以 root 身份(例如sudo bash第一个):

echo 2-1.2 > unbind ; sleep 3 ; echo 2-1.2 > bind

结果是我的 Rumble Pad 重新初始化,就像它被拔出并再次插入一样。我也测试了我的 USB 闪存驱动器。它(它的 LED)表现得好像什么都没发生一样,我的 KDE 仍然有反应并询问我是否要挂载。

设备始终处于通电状态。如果您的调制解调器因电量不足而自行重置,则此方法将不起作用。

答案2

您可以尝试使用 重置 USB 设备usbreset。以下是源代码链接——http://marc.info/?l=linux-usb&m=121459435621262&w=2

您只需寻找要重置的设备(lsusb):

# lsusb
Bus 005 Device 004: ID 0951:1642 Kingston Technology DT101 G2

进而:

# usbreset /dev/bus/usb/005/004

答案3

usb_storage当您的设备是 USB 调制解调器时,为什么要尝试卸载该模块?

运行sudo lshw并找到你的 USB 调制解调器的条目。应该有一行configuration:这样的代码(显然你的驱动程序会有所不同):

configuration: ... driver=iwlagn ...

确认模块已加载(替换正确的驱动程序名称):

lsmod | grep iwlagn

然后就这样做:

sudo modprobe -r iwlagn && sleep 2 && sudo modprobe iwlagn

我喜欢把它放在sleep那里,以防设备需要一段时间才能关机。

答案4

我使用的是 Fedora,解除和绑定 USB 控制器对我有用。请注意,不同制造商的控制器 ID 不同,因此首先您需要在以下目录中找到您的控制器 ID:

/sys/bus/pci/drivers/ehci_hcd

制造商ID的格式为0000:00:xx.y

解除绑定:

cd /sys/bus/pci/drivers/xhci_hcd
echo -n "0000:00:xx.y" > unbind

捆绑:

echo -n "0000:00:xx.y" > bind

相关内容