Linux

沒有usb 3 Arch linux 3.15.1

  • June 23, 2014

直到我上次重新啟動,我才能使用我的 USB 3 埠。不久前我剛剛安裝了系統,所以在那之前我一直在配置和安裝驅動程序,但那是我實際工作的會話。我確實安裝了 xf86-input-synaptics 驅動程序,但是我只是將其刪除並再次啟動以查看是否將其弄亂了,因為它沒有回來,所以沒有。現在我被困住了。我在許多論壇上看到人們遇到問題,但埠通常顯示在 lsusb、dmesg 或 lspci 中。

lsusb:

Bus 002 Device 005: ID 047b:0011 Silitek Corp. SK-1688U Keyboard
Bus 002 Device 004: ID 045e:0040 Microsoft Corp. Wheel Mouse Optical
Bus 002 Device 003: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 0bda:0139 Realtek Semiconductor Corp. RTS5139 Card Reader Controller
Bus 001 Device 003: ID 13d3:5134 IMC Networks 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

lspci | grep -i usb

00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)

dmesg | grep -i usb

[    1.278138] ACPI: bus type USB registered
[    1.278159] usbcore: registered new interface driver usbfs
[    1.278167] usbcore: registered new interface driver hub
[    1.278268] usbcore: registered new device driver usb
[    1.278630] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.278904] ehci-pci 0000:00:1a.0: new USB bus registered, assigned bus number 1
[    1.291224] ehci-pci 0000:00:1a.0: USB 2.0 started, EHCI 1.00
[    1.291408] hub 1-0:1.0: USB hub found
[    1.291716] ehci-pci 0000:00:1d.0: new USB bus registered, assigned bus number 2
[    1.304530] ehci-pci 0000:00:1d.0: USB 2.0 started, EHCI 1.00
[    1.304982] hub 2-0:1.0: USB hub found
[    1.597732] usb 1-1: new high-speed USB device number 2 using ehci-pci
[    1.721971] hub 1-1:1.0: USB hub found
[    1.830738] usb 2-1: new high-speed USB device number 2 using ehci-pci
[    1.955115] hub 2-1:1.0: USB hub found
[    2.037276] usb 1-1.2: new high-speed USB device number 3 using ehci-pci
[    2.240377] usb 1-1.4: new high-speed USB device number 4 using ehci-pci
[    2.390210] usb 2-1.2: new high-speed USB device number 3 using ehci-pci
[    2.476044] hub 2-1.2:1.0: USB hub found
[    2.743395] usb 2-1.2.3: new low-speed USB device number 4 using ehci-pci
[    2.899768] usb 2-1.2.4: new low-speed USB device number 5 using ehci-pci
[    6.531535] scsi6 : SCSI emulation for RTS5139 USB card reader
[    6.531790] usbcore: registered new interface driver rts5139
[    6.632207] uvcvideo: Found UVC 1.00 device USB2.0 UVC 1M WebCam (13d3:5134)
[    6.636268] input: USB2.0 UVC 1M WebCam as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/input/input15
[    6.636452] usbcore: registered new interface driver uvcvideo
[    6.636456] USB Video Class driver (1.1.1)
[    7.114946] usbcore: registered new interface driver usbhid
[    7.114954] usbhid: USB HID core driver
[    7.125179] input: Microsoft Microsoft 3-Button Mouse with IntelliEye(TM) as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2.3/2-1.2.3:1.0/0003:045E:0040.0001/input/input18
[    7.125756    ] hid-generic 0003:045E:0040.0001: input,hidraw0: USB HID v1.10 Mouse [Microsoft Microsoft 3-Button Mouse with IntelliEye(TM)] on usb-0000:00:1d.0-1.2.3/input0
[    7.126179] input: Silitek Standard USB Keyboard  as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2.4/2-1.2.4:1.0/0003:047B:0011.0002/input/input19
[    7.126612] hid-generic 0003:047B:0011.0002: input,hidraw1: USB HID v1.00 Keyboard [Silitek Standard USB Keyboard ] on usb-0000:00:1d.0-1.2.4/input0

lshw -short 級匯流排

H/W path           Device  Class          Description
=====================================================
/0                         bus            G74Sx
/0/100/1a                  bus            6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2
/0/100/1a/1        usb1    bus            EHCI Host Controller
/0/100/1a/1/1              bus            Integrated Rate Matching Hub
/0/100/1d                  bus            6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1
/0/100/1d/1        usb2    bus            EHCI Host Controller
/0/100/1d/1/1              bus            Integrated Rate Matching Hub
/0/100/1d/1/1/2            bus            USB2.0 Hub
/0/100/1f.3                bus            6 Series/C200 Series Chipset Family SMBus Controller

到目前為止,我只是被告知設備壞了,因為它沒有出現在任何這些設備上。現在我已經看到它工作了,我知道它不是,它只是一個配置問題。

當它工作時, lsusb 的輸出包括一個 fesco 驅動程序(我認為)。使用 grep 時我看不到 fesco。

該電腦是華碩 G74sx 筆記型電腦。

任何和所有資訊表示讚賞。謝謝你。

編輯:

好的,所以我不知道這有多大幫助,但我有另一台機器(執行 linux)有一個工作的 usb3 埠。我開始檢查 xhci_hcd 和 ehci_hcd 中兩者之間的差異(以防萬一),發現在 /sys/bus/pci/drivers/ 中,工作系統有一個文件夾“xhci_hcd”,而非工作系統沒有。起初我想,“嘿,也許我可以將它從一個系統複製到另一個系統。即使是 root,我什至無法複製這些文件。很明顯,系統中的其他地方出現了問題。唐不知道這是否有幫助或混淆,但這是一個細節。

編輯 2:錯誤消息

該問題似乎與將系統置於掛起模式有關。我正在從實時磁碟啟動,因此我可以快速擦除任何更改。當我將機器置於掛起模式時,它通常會毫無問題地停機。當它恢復時,usb 3 工作正常。有時,出乎意料的是,出現了錯誤。一旦發生錯誤,我必須拔掉機器上的插頭並重置我的活動磁碟以恢復埠。

該消息不會持續很長時間,只有幾毫秒,但我在相機上得到了它。

錯誤資訊:

xhci_hcd 0000:04:00.0: PCI post-resume error -110!
xhci_hcd 0000:04:00.0: HC died; cleaning up
xhci_hcd 0000:04:00.0: HC died; cleaning up
dpm_run_callback(): pci_pm_resume+0x0/0xb0 returns -110
PM: Device 0000:04:00.0 failed to resume async: error -110
dpm_run_callback(): usb_dev_resume+0x0/0x20 [usbcore] returns -5
PM: Device 4-1.4 failed to resume async: error -5

編輯3:可能的答案?(需要測試)讀到這裡,我發現如果我手動解除綁定usb3然後呼叫systemctl suspend,然後當我喚醒它並手動綁定usb3設備時,它就可以工作了。我執行了 150 次,如果您認為它通常會失敗 2 到 10 次,那麼與平均值的標準差就足夠了,所以我假設它有效。我將綁定和取消綁定放入“/etc/pm/sleep.d/20_custom-xhci_hcd”。然後檢查以確保它是可執行的。

#!/bin/sh
#File: "/etc/pm/sleep.d/20_custom-xhci_hcd"

case "${1}" in
   hibernate|sleep)
       #unbind
       echo "Unbinding xhci device"
       echo -n "0000:04:00.0" > /sys/bus/pci/drivers/xhci_hcd/unbind
   ;;
   resume|thaw)
       # bind
       echo "Binding xhci device"
       ehco -n "0000:04:00.0" > /sys/bus/pci/drivers/xhci_hcd/bind
   ;;
esac

我不認為這個文件會被呼叫,因為我從未見過回顯輸出。仔細想想,這是有道理的,因為這台機器沒有 pm-utils,而是使用 systemd。所以我根據這個站點將它移動到 /usr/lib/systemd/system-sleep/並將其調整為:

#!/bin/sh
#File: "/usr/lib/systemd/system-sleep/xhci_hcd.sleep"

case $1/$2 in
   pre/*)
       #unbind
       echo "Unbinding xhci device"
       echo -n "0000:04:00.0" > /sys/bus/pci/drivers/xhci_hcd/unbind
   ;;
   post/*)
       # bind
       echo "Binding xhci device"
       ehco -n "0000:04:00.0" > /sys/bus/pci/drivers/xhci_hcd/bind
   ;;
esac

如同一網站所述。然後將其設置為可執行。我要測試一下,但我想我感受到了愛。如果可行,我會將其發佈到答案部分。

查找設備

首先,我們需要找出設備號是什麼。如果埠已啟用並且您可以使用命令查看它,lsusb則使用ls /sys/bus/pci/drivers/xhci_hcd. 該設備將是格式為 xxxx:xx:xx.x 的數字,並且很可能是ls命令返回的第一個條目。

重置埠

如果埠不可見,則表示埠不工作,但可以通過斷開機器的所有電源來重置。關閉電腦,取出所有電池和電源線,然後等待 10 秒鐘。然後重新插入電源線並啟動機器。然後再次查找設備編號。

我的設備號是 0000:04:00.0,但可能不同。我在其他地方看到的一個例子是 0000:00:14.0。記住或寫下您的號碼。我們將需要它來綁定和解除綁定。如果您有多個 USB 3 埠,則可能不止一個。

確定apt/aptitude/dpkg (ubuntu/debian/mint)的電源管理框架: 如果返回某些內容,則您有 pm

dpkg --get-selections | grep pm-utils

對於pacman 包管理器(arch)

pacman -Qe | grep pm-utils

,如果返回了某些東西,則您有 pm。

對於rpm 包管理器(fedora、centos 等):

rpm -qa | grep pm-utils

如果返回某些內容,則您有 pm。

對於其他人,你可以試試這些,我不知道它們是如何工作的,也沒有系統來測試它們。

*注意:*僅僅因為安裝的軟體包並不意味著您正在使用它,但很有可能您正在使用它。您可以做的另一件事很簡單cd /etc/pm/,如果存在,您可以將腳本放在那裡。從技術上講,我認為在這兩個地方都有一個解除綁定的腳本有什麼問題。如果有人想評論這是否屬實,或者是否有更好的方法來確定是否使用了 pm,那就太好了。

systemd 掛起腳本(沒有 pm utils)

如果您使用沒有 pm 的 systemd 或 systemctl,我們需要將腳本放入/usr/lib/systemd/system-sleep/xhci_hcd.sleep. 對於我的機器,腳本如下所示:

#!/bin/sh
#File: /usr/lib/systemd/system-sleep/xhci_hcd.sleep

case $1/$2 in
       pre/*)
               # Unbind
               echo "Unbinding xhci Device"
               echo -n "0000:04:00.0" > /sys/bus/pci/drivers/xhci_hcd/unbind
       ;;
       post/*)
               # bind xhci_dev
               echo "Rebinding xhci Device"
               echo -n "0000:04:00.0" > /sys/bus/pci/drivers/xhci_hcd/bind
       ;;
esac

在這兩種情況下,將 0000:04:00.0 替換為您的設備編號。如果您有多個設備號,請為每個設備號執行綁定和取消綁定。即,如果您有埠 xxxx:xx:xx.x 和 yyyy:yy:yy.y,您將需要取消綁定這兩個設備,然後echo -n "xxxx:xx:xx.x" > /sys/bus/pci/drivers/xhci_hcd/unbind綁定設備。我放了第一個 echo 命令,讓我們在使用. 有關使用 systemd/systemctl進行電源管理的更多資訊。保存該文件,然後執行以使其可執行。我個人會重新啟動系統以確保新文件生效,但我相信它可能會立即生效。如果沒有,並且您將系統置於睡眠狀態(或掛起/休眠),請查看您如何重置上面的埠。echo -n "yyyy:yy:yy.y" > /sys/bus/pci/drivers/xhci_hcd/unbind``echo -n "xxxx:xx:xx.x" > /sys/bus/pci/drivers/xhci_hcd/bind``echo -n "yyyy:yy:yy.y" > /sys/bus/pci/drivers/xhci_hcd/bind``journalctl -b -u systemd-suspend``sudo chmod a+x /usr/lib/systemd/system-sleep/xhci_hcd.sleep

pm suspend script (pm utils are installed)

如果你使用 pm utils 我們需要把腳本放入/etc/pm/sleep.d/20_custom-xhci_hcd

#!/bin/sh
#File: "/etc/pm/sleep.d/20_custom-xhci_hcd"

case "${1}" in
   hibernate|sleep)
       #unbind
       echo "Unbinding xhci device"
       echo -n "0000:04:00.0" > /sys/bus/pci/drivers/xhci_hcd/unbind
   ;;
   resume|thaw)
       # bind
       echo "Binding xhci device"
       ehco -n "0000:04:00.0" > /sys/bus/pci/drivers/xhci_hcd/bind
   ;;
esac

在這兩種情況下,將 0000:04:00.0 替換為您的設備編號。如果您有多個設備編號,請為每個設備執行綁定和取消綁定。有關 systemd 掛起腳本,請參閱腳本下方的說明,但chmod a+x /etc/pm/sleep.d/20_custom-xhci_hcd用於使文件可執行。然後重新啟動並測試它。

更多有用的資源:

引用自:https://unix.stackexchange.com/questions/138220