it-swarm.cn

如何重新连接逻辑断开的USB设备?

USB存储设备可能会在逻辑上断开连接:该设备仍处于插入状态,但在操作系统中不可见(例如,未在/proc/bus/usb下列出)。也许其他USB或其他可移动设备也可能发生这种情况。例如,这可能发生:

  • 在Nautilus卸载USB存储设备之后 ;
  • 在VirtualBox声明使用USB存储设备后(将其连接到来宾中时,该设备将从Linux主机中消失,如果从来宾中分离,则该设备不会自动重新出现)。

驱动程序或硬件中发生了什么,最重要的是,(如何)可以在逻辑上重新连接设备(无需物理上将其插拔再插入)?

请注意,此问题与安装无关。在“逻辑断开”状态下,内核认为USB总线上没有任何内容(因此/dev下当然没有条目。)

56

有时可以在插入设备的USB总线分支上执行电源循环:

# echo suspend > /sys/bus/usb/devices/1-1/power/level
# echo auto > /sys/bus/usb/devices/1-1/power/level

1-1应该根据您的配置进行调整。通过弹出lsusb -t,可以查看设备插入USB树的哪一部分。

您可以在linux-usb邮件列表中找到详细信息,例如 此线程

21
jon_d
udevadm info -a -n /dev/sdb

现在检查内核。例如。如果连接到Front UIP的端口2,则为1-1.2,如果连接到Front UIP的端口1,则为1-1.1。

对于端口2:要断开USB连接:

echo '1-1.2' | tee /sys/bus/usb/drivers/usb/unbind

连接USB:

echo '1-1.2' | tee /sys/bus/usb/drivers/usb/bind
8
Udaya

重置设备或其连接的集线器,设备应重新出现。这是一个用于执行此操作的小程序:

http://marc.info/?l=linux-usb-users&m=116827193506484

它适用于我尝试过的大多数USB驱动器,但也有例外,例如我的Kingston DT 101 II 4GB,它在重置后无法执行INQUIRY和READ CAPACITY命令,并且在重启后仍然无法使用。

如果设备通过端口供电,则可以在不断开设备电源的情况下对设备重新通电,并且USB集线器支持每端口电源控制。这是一个控制功率的小程序:

http://marc.info/?l=linux-usb-devel&m=113724451205634

不幸的是,几乎没有USB集线器支持此功能,而且很难找到一个支持该功能的集线器。制造商不做广告。许多集线器都与此有关,例如,如果您执行“ lsusb -v”,则可以看到在“ wHubCharacteristic”中宣传的“每端口电源切换”,但实际上它不起作用。芯片组可能支持它,但是对于制造商来说,将端口电源引脚直接连接到电源而不是通过芯片组比较容易/便宜。

6
user6223

我发现 此答案 在我的Gentoo系统上运行良好。如果设备是系统的重要组成部分(例如,鼠标或键盘),也请记住重新启用设备。

Sudo sh -c 'AUTHFILE="/sys/bus/usb/devices/5-2/authorized" ; echo 0 > "$AUTHFILE" ; sleep 1 ; echo 1 > "$AUTHFILE"'

要查看您正在禁用/重新启用的内容:

cat /sys/bus/usb/devices/5-2/product
5
Avio

我已经尝试了上述大多数建议,但是它们对我没有用。我发现了如何从命令行重置USB设备: https://askubuntu.com/a/290519

echo $i >/sys/bus/pci/drivers/ehci_hcd/bind

$i中,您可以使用/sys/bus/pci/drivers/ehci_hcd中的相应设备ID。

4
Kakanakov

以下将断开USB设备的连接。

Sudo eject /dev/sde

以下将重新连接USB设备。

Sudo eject -t /dev/sde

以上适用于我的Linux Mint。
参考: http://www.upubuntu.com/2011/09/how-to-remount-usb-stick-without.html

1
Matthew Wai