lsusbにUSBデバイスが表示されないときにUSBデバイスをデジタルで再挿入する方法

lsusbにUSBデバイスが表示されないときにUSBデバイスをデジタルで再挿入する方法

デバイスがスリープモードから復帰するたびに、USBオーディオインターフェースが認識されなくなりました。ケーブルを抜いて再接続または再起動すると、期待どおりに機能します。しかし、一日にも何度もこのようなことをするのは迷惑なことのようです。

usbresetデバイスがに表示されないため、オプションではありませんlsusb。システムがスリープモードの前にUSBを無効にするのを防ぐためにカーネルパラメータを追加しようとしましたが、GRUB設定を更新することはできません。実行すると、sudo grub-mkconfig -o /boot/grub/grub.cfg 次の結果が表示されます。

[lenny@archlinux ~]$ sudo grub-mkconfig -o /boot/grub/grub.cfg 
[sudo] password for lenny: 
insmod: ERROR: could not load module part_gpt: No such file or directory

UEFIにスリープモード中にUSBポートを無効にするオプションがあることを確認しましたが、何も見つかりませんでした。私はGigabyte B550 Aorus PRO(正確に覚えているならv2)を使います。

この問題を解決する方法についてのアイデアはありますか?

編集:これは私の結果ですlsusb

[meekah@archlinux ~]$ lsusb -t
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/10p, 480M
    |__ Port 006: Dev 002, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 001: Dev 004, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 001: Dev 004, If 1, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 003: Dev 006, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 003: Dev 006, If 1, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 003: Dev 006, If 2, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 004: Dev 008, If 0, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 004: Dev 008, If 1, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 004: Dev 008, If 2, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 004: Dev 008, If 3, Class=Application Specific Interface, Driver=[none], 480M
    |__ Port 007: Dev 003, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 010: Dev 005, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 001: Dev 007, If 0, Class=Vendor Specific Class, Driver=xone-dongle, 480M
/:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/4p, 10000M
/:  Bus 003.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/4p, 480M
/:  Bus 004.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/4p, 10000M
[meekah@archlinux ~]$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 003: ID 048d:5702 Integrated Technology Express, Inc. RGB LED Controller
Bus 001 Device 004: ID 0c45:7016 Microdia USB DEVICE
Bus 001 Device 005: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 006: ID 04d9:a067 Holtek Semiconductor, Inc. USB Gaming Mouse
Bus 001 Device 007: ID 045e:02fe Microsoft Corp. XBOX ACC
Bus 001 Device 008: ID 1397:0507 BEHRINGER International GmbH UMC202HD 192k
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
[meekah@archlinux ~]$ 

ご覧のとおり、私のオーディオインターフェイスはキーボードとマウスと同様にバス1にあります。ただし、次のコマンドを実行した後、デバイスは再び正常に開きません。

sudo sh -c 'echo 0 > /sys/bus/usb/devices/usb1/bConfigurationValue; sleep 2; echo 0 > /sys/bus/usb/devices/usb1/bConfigurationValue'

スリープ時間を延長してみましたが、キーボードのLEDが再び点灯しているだけで、実際には機能しませんでした。キーボードを再接続してもまだ機能しません。 USBコントローラが再び正しく開かないようです。

編集2:Grubを再び動作させることができました。 (この問題が発生した人は、/etc/default/grubの内容が/boot/grub/grub.cfgの内容に置き換えられているようです。私はまったくそうではありません。 Linuxカーネルパラメータを追加しましたが、usbcore.autosuspend=-1スリープ後もオーディオインターフェイスはまだ消えました。

編集3:再起動しても問題が解決しないことがわかりました。この問題は、システムの電源を切り、最初から完全に起動または再接続しなければ解決できません。

編集4:今コンピュータを一晩節電モードに設定したので、目を覚ますとオーディオインターフェイスが正しく認識されます。もう一度試してみて、スリープモードに設定してから数秒後に目を覚ますと、オーディオインターフェースが再び消えました。

編集5:今夜寝た後、オーディオインターフェースを認識できませんでした。今回は手動でマシンをスリープモードにしましたが、前回は自動的に設定されているかどうかわかりません。

ベストアンサー1

したがって、lsubが存在しないことは、基本的な列挙さえも起こらないか失敗することを示します。これには2つの潜在的な犯人があります。

  1. USBデバイスのファームウェアは停止、クラッシュを処理できず、適切な電源サイクルが必要です。
  2. USBホストコントローラのファームウェアは、一時停止後に正しく再列挙されません。

最初のケースでは、実際に電源を切ることができるUSBハブポートにない限り、プラグを抜いて再接続する以外に問題を解決する可能性はあまりありません。 2. 事例解決の副作用

2番目の場合:USBデバイスがどのバスにあるかを調べる必要があります。残念ながら、これは静的ではありませんが、ほとんどの場合、起動中および一時停止中(PCIeハードウェアをホットプラグしても)数字は変わりません。lsusb -t実行中にも使用できます。デバイスは、どのバス上にあるかを確認するために実行され続けます。

sudo sh -c 'echo 0 > /sys/bus/usb/devices/usb{number of the bus}/bConfigurationValue; sleep 2; echo 0 > /sys/bus/usb/devices/usb{number of the bus}/bConfigurationValue'その後、バスセグメントを閉じて2秒後に再び開くことができます。 (キーボードのバスをオフにすると自動的に再びオンになるため、コマンドを使用してこれを行う傾向があります。)これにより、USBバスセグメントが再列挙されます。

おすすめ記事