無 USB 3 Arch linux 3.15.1

無 USB 3 Arch linux 3.15.1

直到上次重新啟動之前,我都可以使用 USB 3 連接埠。我不久前剛剛安裝了系統,所以在那之前我一直在配置和安裝驅動程序,但那是我實際上一直在進行工作的會話。其卸下並再次啟動,看看是否會弄亂它,因為它沒有回來,所以沒有。現在我被困住了。我在許多論壇上看到人們遇到了問題,但該連接埠通常顯示在 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-短程巴士

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,我也無法複製這些文件。很明顯系統中的其他地方出了問題。Don不知道這是否有幫助或混淆,但這是一個細節。

編輯 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

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

答案1

尋找設備
首先,我們要找出設備編號。如果連接埠已啟用並且您可以使用命令查看它,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/能力/dpkg(ubuntu/debian/mint):
dpkg --get-selections | grep pm-utils
如果有東西被退回,你可以pm。

為了吃豆人包管理器(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/unbindecho -n "yyyy:yy:yy.y" > /sys/bus/pci/drivers/xhci_hcd/unbind取消綁定這兩個設備,並使用echo -n "xxxx:xx:xx.x" > /sys/bus/pci/drivers/xhci_hcd/bindecho -n "yyyy:yy:yy.y" > /sys/bus/pci/drivers/xhci_hcd/bind綁定設備。我放置第一個 echo 命令是為了讓我們在使用 . 查看日誌時看到綁定和解除綁定何時發生journalctl -b -u systemd-suspend。更多資訊:能源管理使用 systemd/systemctl。儲存該檔案然後運行sudo chmod a+x /usr/lib/systemd/system-sleep/xhci_hcd.sleep以使其可執行。我個人會重新啟動系統以確保新文件生效,但我相信它可能會立即生效。如果沒有,並且您讓系統進入睡眠狀態(或掛起/休眠),請查看如何重置上面的連接埠。

pm 掛起腳本(pm utils 已安裝)
如果您使用 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以使檔案可執行。然後重新啟動並測試它。

更多有用的資源:

相關內容