前回の再起動までは、USB 3 ポートを使用できました。システムをインストールしたのはつい最近なので、それまではドライバーの設定とインストールを行っていましたが、実際に作業していたのはセッションでした。xf86-input-synaptics ドライバーはインストールしましたが、それが問題になっているかどうかを確認するために削除して再起動しました。ドライバーは戻ってこなかったので、問題はありませんでした。今は行き詰まっています。多くのフォーラムで、人々が問題を抱えているのを見ましたが、ポートは通常、lsusb、dmesg、または lspci に表示されます。
: ...
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
翻訳: 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 が表示されません。
コンピューターはAsus G74sxラップトップです。
どのような情報でも歓迎します。ありがとうございます。
編集:
わかりました。これがどれだけ役立つかはわかりませんが、動作する USB3 ポートを備えた別のマシン (Linux を実行) があります。xhci_hcd と ehci_hcd (念のため) の 2 つの違いを確認し始めたところ、/sys/bus/pci/drivers/ で、動作中のシステムには "xhci_hcd" フォルダーがありますが、動作していないシステムにはフォルダーがないことがわかりました。最初は、「1 つのシステムから別のシステムにコピーできるかもしれない」と考えました。ルートとしてでも、これらのファイルをコピーすることすらできません。明らかに、システムのどこかで何かがおかしくなっています。これが役立つかわかりにくくなるかはわかりませんが、詳細です。
編集 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/aptitude/dpkg(ubuntu/debian/mint):
dpkg --get-selections | grep pm-utils
何かが返された場合は、pm を使用します。
のためにpacman パッケージ マネージャー(arch)
pacman -Qe | grep pm-utils
何かが返された場合は、pm があります。
のためにrpm パッケージ マネージャー(fedora、centos など):
rpm -qa | grep pm-utils
何かが返された場合は、pm を使用します。
のためにその他これらを試すことはできますが、それらすべてがどのように機能するかはわかりませんし、テストするためのシステムもありません。
注記:パッケージがインストールされているからといって、それを使用しているとは限りませんが、使用している可能性は高いです。他にできることは、単純にcd /etc/pm/
、存在する場合はそこにスクリプトを置くことです。技術的には、両方の場所にアンバインド スクリプトを置くことに何の問題もないと思います。これが本当かどうか、または pm が使用されているかどうかを判断するより良い方法があるかどうかについてコメントを残したい人がいれば、それは素晴らしいことです。
systemd サスペンド スクリプト (pm ユーティリティなし)
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 がある場合、2 つのデバイスをアンバインドするにはecho -n "xxxx:xx:xx.x" > /sys/bus/pci/drivers/xhci_hcd/unbind
と が必要で、デバイスをバインドするにはと が必要です。最初の echo コマンドは、 を使用してログを確認するときに、バインドとアンバインドがいつ発生するかを確認できるように配置しました。詳細については、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
パワー管理systemd/systemctl を使用します。そのファイルを保存し、sudo chmod a+x /usr/lib/systemd/system-sleep/xhci_hcd.sleep
実行して実行可能にします。個人的には、新しいファイルが有効になるようにシステムを再起動しますが、すぐに有効になると思います。有効にならず、システムをスリープ (またはサスペンド/休止状態) にする場合は、上記のポートをリセットする方法を確認してください。
pm サスペンド スクリプト (pm ユーティリティがインストールされている)
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
ファイルを実行可能にします。その後、再起動してテストします。
その他の役立つリソース: