Gil*_*il' 63 linux usb usb-drive
USB 存储设备有可能在逻辑上断开连接:该设备仍处于插入状态,但在操作系统中是不可见的(例如,它未在 下列出/proc/bus/usb
)。也许这也可能发生在其他类型的 USB 或其他可移动设备上。例如,这可能发生:
驱动程序或硬件中发生了什么,最重要的是,(如何)可以逻辑地重新连接设备(无需物理地将其拔出并重新插入)?
请注意,此问题与安装无关。在“逻辑断开”状态下,内核认为 USB 总线上没有任何内容(因此当然在 下没有条目/dev
)。
jon*_*n_d 22
有时可以在插入设备的 USB 总线的分支上执行电源循环:
# echo suspend > /sys/bus/usb/devices/1-1/power/level
# echo auto > /sys/bus/usb/devices/1-1/power/level
Run Code Online (Sandbox Code Playgroud)
该1-1
应调整配置。您可以通过lsusb -t
在弹出之前运行来查看您的设备插入 USB 树的哪个部分。
您可以在 linux-usb 邮件列表中找到详细信息,例如此线程。
小智 10
udevadm info -a -n /dev/sdb
Run Code Online (Sandbox Code Playgroud)
现在检查内核。例如,如果它连接到前端 UIP 的端口 2,那么它将是 1-1.2,如果它连接到前端 UIP 的端口 1,那么它将是 1-1.1。
对于端口 2:断开 USB 连接:
echo '1-1.2' | tee /sys/bus/usb/drivers/usb/unbind
Run Code Online (Sandbox Code Playgroud)
连接 USB:
echo '1-1.2' | tee /sys/bus/usb/drivers/usb/bind
Run Code Online (Sandbox Code Playgroud)
小智 6
重置设备或其连接的集线器,设备应该会重新出现。这是一个小程序来做到这一点:
http://marc.info/?l=linux-usb-users&m=116827193506484
它适用于我尝试过的大多数 USB 驱动器,但也有例外,例如我的金士顿 DT 101 II 4GB,它在重置后无法使用查询和读取容量命令,并且在重新启动之前仍然无法使用。
如果设备从端口获得电源,您可以在不拔下电源的情况下重新启动设备,并且您的 USB 集线器支持每个端口的电源控制。下面是一个控制电源的小程序:
http://marc.info/?l=linux-usb-devel&m=113724451205634
不幸的是,几乎没有 USB 集线器支持此功能,而且很难找到支持它的集线器。制造商不做广告。许多集线器也对此撒谎,例如,如果您执行“lsusb -v”,您可以看到“wHubCharacteristic”中广告的“每端口电源切换”,但实际上它不起作用。芯片组可能支持它,但制造商将端口电源引脚直接连接到电源而不是通过芯片组更容易/更便宜。
我发现这个答案在我的 Gentoo 系统上效果很好。如果您的设备是系统的重要部分(例如鼠标或键盘),请记住重新启用您的设备。
sudo sh -c 'AUTHFILE="/sys/bus/usb/devices/5-2/authorized" ; echo 0 > "$AUTHFILE" ; sleep 1 ; echo 1 > "$AUTHFILE"'
Run Code Online (Sandbox Code Playgroud)
要查看您要禁用/重新启用的内容:
cat /sys/bus/usb/devices/5-2/product
Run Code Online (Sandbox Code Playgroud)
以下将断开 USB 设备。
sudo eject /dev/sde
Run Code Online (Sandbox Code Playgroud)
以下将重新连接 USB 设备。
sudo eject -t /dev/sde
Run Code Online (Sandbox Code Playgroud)
以上适用于我的 Linux Mint。
归档时间: |
|
查看次数: |
101298 次 |
最近记录: |