沒有usb 3 Arch linux 3.15.1
直到我上次重新啟動,我才能使用我的 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
用於使文件可執行。然後重新啟動並測試它。更多有用的資源: