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


55

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

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

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

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


Answers:


21

有时可以在插入设备的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邮件列表中找到详细信息,例如该线程


6
在2.6.36之后,“ suspend”不适用于内核。
alexisdm 2014年

假设dmesg报告正确的设备ID(“ usb 9-4:USB断开连接”),则在最新的Arch Linux上不起作用。/sys/bus/usb/devices/9-4之后就没有路了。
l0b0

1
1. dmesg:警告!功率/级别已弃用;使用电源/控制代替2. superuser.com/questions/371068/...
socketpair

suspend不再支持最新版本的内核....
格特·范登贝尔赫

6

重置设备或其连接的集线器,设备应重新出现。这是一个小程序可以做到这一点:

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”中宣传的“每端口电源切换”,但实际上它不起作用。芯片组可能支持它,但是对于制造商来说,将端口电源引脚直接连接到电源而不是通过芯片组比较容易/便宜。


5

我发现此答案在我的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

这似乎在我的现代Fedora 25系统上达到了目的。其他一些方法不再可行。
xenithorb

5
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

3

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

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

$i您可以在其中使用适当的设备ID /sys/bus/pci/drivers/ehci_hcd


请发布比链接更多的内容;包括一些细节,因此人们不必单击即可获得答案。
jasonwryan 2014年


-5

我不确定我是否正确理解了您的问题,但是在我的系统上,如果已插入USB设备但未安装USB设备,则可以“看到”

$> fdisk -l

这告诉我与之关联的设备(即/ dev / sdd1之类的东西),然后手动安装它。


5
再说一次:不,问题不是关于文件系统变得不可访问(即卸载),而是关于设备变得不可访问(内核看不到设备,因此当然没有/dev)。
吉尔(Gilles)“所以,别再邪恶了”,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.