在 Ubuntu 10.04 中硬重置 USB

Cor*_*ory 7 linux usb usb-storage ubuntu-10.04

我有一个非常挑剔的 USB 设备(调制解调器)。有时它工作正常,但有时它拒绝连接。一旦它进入不良状态,我发现修复它的唯一解决方案是物理拔下设备并重新插入。但是,我并不总是可以物理访问它插入的机器,所以我“我正在寻找一种通过命令行执行此操作的方法。

这篇文章建议运行:

$ sudo modprobe -w -r usb_storage; sudo modprobe usb_storage
Run Code Online (Sandbox Code Playgroud)

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

$ sudo modprobe -r usb_storage
Run Code Online (Sandbox Code Playgroud)

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

有人知道这样做的方法吗?

注意:我在 serverfault 上交叉发布了这个,因为我不知道哪个更合适。我将删除和/或链接第一个回答的人。

Kam*_*ski 5

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

就在我连接设备之后:

dmesg | grep usb | tail -n 20
Run Code Online (Sandbox Code Playgroud)

我得到(也许除其他外):

[ 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
Run Code Online (Sandbox Code Playgroud)

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

接下来我去正确的地方:

cd /sys/bus/usb/drivers/usb
Run Code Online (Sandbox Code Playgroud)

以 root 身份调用(例如sudo bash首先):

echo 2-1.2 > unbind ; sleep 3 ; echo 2-1.2 > bind
Run Code Online (Sandbox Code Playgroud)

结果是我的 Rumble Pad 重新初始化自己,就好像它被插上又插上一样。我也测试了我的 USB 闪存驱动器。它(它的 LED)表现得好像什么也没发生,我的 KDE 仍然有反应并询问我是否要安装。

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


sml*_*sml 0

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

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

configuration: ... driver=iwlagn ...
Run Code Online (Sandbox Code Playgroud)

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

lsmod | grep iwlagn
Run Code Online (Sandbox Code Playgroud)

然后就做:

sudo modprobe -r iwlagn && sleep 2 && sudo modprobe iwlagn
Run Code Online (Sandbox Code Playgroud)

我喜欢把它sleep放在那里,以防设备需要一些时间才能断电。