当前位置: 首页>>技术教程>>正文


USB插槽有时会突然停止工作

, , ,

问题描述

在笔记本电脑上安装了re-installing Lubuntu 12.04系统后,几天后又安装了不同的程序,出现了一个较老的问题re-emerged:没有明显的原因,外部鼠标以及有时其他USB连接的设备(包括硬盘)停止工作。硬盘显示它有张力,因为那里有灯,插入时外部鼠标闪烁一秒钟。

I have posted a different version of this problem before。我现在将其保留为两个答案的示例。他们都不在这里工作。

记录out-in不执行任何操作,重新启动则执行任何操作。

该事件似乎完全是随机的,重新启动后会在几天或几周后重新出现,或者很少会在几个小时后重新出现。

我猜最重要的是:

Nov 24 14:06:55 cprq-HP-Compaq-nx8220-PY518EA-ABB kernel: [29953.822962] usb 3-1: USB disconnect, device number 3
Nov 24 14:06:57 cprq-HP-Compaq-nx8220-PY518EA-ABB kernel: [29955.069427] uhci_hcd 0000:00:1d.0: host controller process error, something bad happened!
Nov 24 14:06:57 cprq-HP-Compaq-nx8220-PY518EA-ABB kernel: [29955.069439] uhci_hcd 0000:00:1d.0: host controller halted, very bad!
Nov 24 14:06:57 cprq-HP-Compaq-nx8220-PY518EA-ABB kernel: [29955.069461] uhci_hcd 0000:00:1d.0: HC died; cleaning up
Nov 24 14:06:57 cprq-HP-Compaq-nx8220-PY518EA-ABB kernel: [29955.069492] usb 2-2: USB disconnect, device number 2
  • 我注意到,在大多数情况下,只有外部鼠标和键盘会受到影响,而外部HDD不会受到影响。或者如果是,则重新插入即可解决问题。

  • 我使用WinXP进行双重启动:在Windows中永远不会发生,因此这不是硬件问题

  • 我使用了Lubuntu Quantal 12.10,同样的问题也发生了。升级到那不是解决方案

  • 在某些情况下,仅重新启动2次甚至3次即可解决该问题。


在Linux Mint 14(定量)Xfce中使用相同的PC /硬件,问题几乎消失了(此后发生了一次)。我不确定此’solution’是否来自使用Xfce或Mint(我认为Mint 14 Nadia使用与Lubuntu Quantal相同的内核)。

最佳办法

内核与硬件问题

如果您排除了可能的硬件问题,例如电压/电流问题,USB端口/集线器故障,则可能是内核问题。

如果您对启动时可能出现的非启动问题/黑屏问题感到满意,则可以尝试安装12.04存储库中提供的量化内核。

请记住-大多数黑屏问题是由于安装了专有图形驱动程序引起的。在升级内核之前,最幸运的是先删除这些。

要安装量化内核:

sudo apt-get install linux-generic-lts-quantal

切记要进行完整的系统备份,以使您在新内核中断后无法修复时可以恢复。

次佳办法

USB 2.0的电源问题

USB 2.0的最大可用电流为500mA,但是应注意,多个端口上的+ 5V实际上可能在同一总线上。例如,在台式机的情况下,机器正面的USB端口可能全部在同一条总线上,而机器背面的端口通常是另一条总线,或者每组USB总线具有完全独立的+ 5V电源USB 2.0插座。

USB 2.0 standards定义的低电流设备最多可消耗100mA(1个单位),而高电流设备最多可消耗5个单位(500mA)。没有外部电源的硬盘驱动器通常是高电流设备。

如果+ 5V线下降到4.75V以下,则设备应停止工作,这就是为什么许多大功率设备可能在某些计算机上引起问题的原因。

除此之外,如果设备正在汲取足够的电流以将+ 5V线拉得过低,则向每条总线提供+ 5V的电路可能会拒绝re-negotiate高功率能力。这就是为什么如果由于电源问题而导致大功率设备出现故障,则必须先拆除re-attached才能使它们工作,并且为什么在整个掉电/上电周期都可能重启的情况下,重新启动不允许它们进入re-attach。

请注意,如果一个或多个低功耗设备已插入USB总线,则可能没有足够的容量来运行高功率设备(例如外部硬盘驱动器)。

因此,需要计划使用大功率设备,如果存在问题,则需要在任何一条总线上单独使用该设备,或者给其单独的+ 5V电源。

虽然USB 2.0标准文档可能有点难以阅读,但wikipedia page on the subject of USB 2.0中有一些很好的信息和说明。

还要注意,通过外部USB集线器设备插入许多低功率设备也会导致总线电源线上的电压降,从而导致部分或全部设备被禁用。

使用的电缆类型也可能影响大功率设备的可靠性。例如,通过常规的长USB电缆插入的外部硬盘驱动器可能会出现500mA的压降,足以使其自身失效以防止损坏其电路或驱动电机。这些设备通常随附一条特殊的短电缆或’Y’电缆,该电缆插入两个USB端口以帮助解决电源问题。请注意,这只是与电缆相关的问题的部分解决方案,它’s doesn’t实际上允许提供500mA以上的电流,因为相邻的USB端口很可能在计算机内部使用同一5V 500mA电源。即使在’Y’电缆的第二个插头使用单独的总线的情况下,也无法获得高电流,因为它没有数据连接可从USB总线请求它。仅其中一个端口将被启用为高电流源。

由于USB键盘和鼠标的使用非常普遍,因此将它们都插入同一总线时有时会出现问题。 power-on处的峰值负载电流可能超过USB总线的设计规格,并导致其中一个或两个设备被禁用或发生故障。

解决这些问题的方法通常是仅使用最少的低功率设备,仅使用设计合理的低功率设备,确保将它们插入具有单独+ 5V线的不同总线中,并且在使用高功率集线器的情况下涉及高功率设备来解决许多USB 2.0总线电源上出现的电源问题。如果无法使用有源集线器,则仅应在计算机加电并且稳定了低功率设备的电流消耗之后才能插入高功率设备。

在此还应注意,笔记本电脑和上网本等计算机可能内部集成了低功耗USB设备。内部读卡器,无线3G适配器和网络摄像头等硬件通常内部连接到USB总线。这可能是具有自己的+ 5V电源的专用总线,或者可能与一个或多个外部USB端口共享。

第三种办法

我正在发生类似的事情。 This blog post提供了部分解决方案。

这对我有用:

sudo -s
cd /sys/bus/pci/drivers/xhci_hcd/
for file in ????:??:??.? ; do
 echo -n "$file" > unbind
 echo -n "$file" > bind
done

如该专栏文章所述,不同的系统挂在不同的位置,因此,如果以上操作不起作用,则可能要尝试使用/sys/bus/pci/drivers/ehci_hcd//sys/bus/pci/drivers/uhci_hcd/替换/sys/bus/pci/drivers/xhci_hcd/(如果存在其中之一)。

第四种办法

旧帖子和回复与USB 3.0不相关。因此,以下是重置已停止提供数据的3.0总线的方法:

su -

并以root身份:

echo -n "0000:06:00.0" | tee /sys/bus/pci/drivers/xhci_hcd/unbind
echo -n "0000:06:00.0" | tee /sys/bus/pci/drivers/xhci_hcd/bind

此后,就像重启后一样,USB应该重新开始正常工作。


Explanation

如果您使用的是其他驱动程序,这就是我的解决方法,请使用它作为参考:

lsusb -t将输出此内容-记录快速总线的xhci_hcd驱动程序,它是3.0驱动程序名称:

$ lsusb -t
        /:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
        /:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
            |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=dvb_usb_it913x, 480M
        /:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
            |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
            ...etc

要查找的目录是/sys/bus/pci/drivers/xhci_hcd

        drwxr-xr-x  2 root root    0   5 21:48 ./
        drwxr-xr-x 28 root root    0   1 00:21 ../
        lrwxrwxrwx  1 root root    0   6 00:29 0000:06:00.0 -> ../../../../devices/pci0000:00/0000:00:1c.3/0000:06:00.0/
        --w-------  1 root root 4096   5 22:33 bind
        lrwxrwxrwx  1 root root    0   5 22:32 module -> ../../../../module/xhci_hcd/
        --w-------  1 root root 4096   5 22:32 new_id
        --w-------  1 root root 4096   5 22:32 remove_id
        --w-------  1 root root 4096   5 22:32 uevent
        --w-------  1 root root 4096   5 22:33 unbind

就我而言,我需要取消绑定"0000:06:00.0"

ps。如果您需要重新绑定USB 2.0驱动程序,请按照上述说明操作,但要使用ehci-pci或外观为here(值得一试)。

第五种办法

基于lsusb

#lsusb
Bus 002 Device 002: ID 04f3:0230 Elan Microelectronics Corp. 3D Optical Mouse
Bus 003 Device 002: ID 04f3:0103 Elan Microelectronics Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

进行lsusb -t,输出将采用以下格式

$ lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/8p, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
        |__ Port 6: Dev 3, If 0, Class=HID, Driver=usbhid, 1.5M

注意两个输出中的Bus 00X号和1.1 /2.0 USB版本。如果鼠标和键盘现在位于1.1上,请尝试将它们移至2.0端口,或者反过来。

这不能解决驱动程序问题,但是可以解决(如果可行)。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10326.html,未经允许,请勿转载。