Sofortiges Aufwachen aus dem Ruhezustand durch USB 3.0-Geräte

Sofortiges Aufwachen aus dem Ruhezustand durch USB 3.0-Geräte

Normalerweise wird mein Computer normal in den Ruhezustand versetzt und wieder aktiviert. Wenn ich jedoch eine USB 3.0-Festplatte anschließe, wird der Computer bei jedem Versuch, den Ruhezustand zu aktivieren, sofort aktiviert, selbst nachdem er ausgehängt und getrennt wurde.

Alle USB-Geräte sind in (unten) deaktiviert /proc/acpi/wakeupund ich kann keine Fehler in /var/log/syslogBezug auf die USB-Festplatte oder den Standby- bzw. Aktivierungsprozess erkennen.

Die gleiche Festplatte, die an einen USB 2.0-Anschluss angeschlossen ist, verursacht nicht das gleiche Problem. Das Gleiche gilt für USB 2.0-Festplatten, die an USB 3.0-Anschlüsse angeschlossen sind. Selbst wenn überhaupt keine USB-Geräte angeschlossen sind, wird der Computer sofort aus dem Standby-Modus geweckt, wenn seit dem Start jemals eine USB 3.0-Festplatte angeschlossen war.

Bei dem System handelt es sich um ein Dell Precision M6700. Das Problem trat bei 14.04 auf und besteht bei 14.10 weiterhin.

Was könnte die Ursache dafür sein und wie kann ich das Problem weiter beheben?

> cat /proc/acpi/wakeup
Device  S-state   Status   Sysfs node
P0P1      S4    *disabled
USB1      S3    *disabled
USB2      S3    *disabled
USB3      S3    *disabled
USB5      S3    *disabled
USB6      S3    *disabled
USB7      S3    *disabled
RP01      S4    *disabled  pci:0000:00:1c.0
PXSX      S4    *disabled
RP02      S4    *disabled  pci:0000:00:1c.1
PXSX      S4    *disabled  pci:0000:03:00.0
RP05      S4    *disabled
PXSX      S4    *disabled
RP06      S4    *disabled
PXSX      S4    *disabled
RP07      S4    *disabled
PXSX      S4    *disabled
RP08      S4    *disabled  pci:0000:00:1c.7
PXSX      S4    *disabled  pci:0000:0c:00.0
PEG0      S4    *disabled  pci:0000:00:01.0
PEGP      S4    *disabled
PEG1      S4    *disabled
PEG2      S4    *disabled
PEG3      S4    *disabled
USB4      S3    *disabled
RP03      S4    *disabled  pci:0000:00:1c.2
RP04      S4    *disabled  pci:0000:00:1c.3
PXSX      S4    *disabled
GLAN      S4    *enabled   pci:0000:00:19.0
EHC1      S0    *enabled   pci:0000:00:1d.0
EHC2      S0    *enabled   pci:0000:00:1a.0
XHC       S0    *enabled   pci:0000:00:14.0
HDEF      S4    *disabled  pci:0000:00:1b.0
LID0      S3    *enabled 
PBTN      S3    *enabled

Bearbeiten - Das explizite Deaktivieren von Geräten löst das Problem nicht

Ich habe jetzt versucht, das Wecken für alle Geräte (außer dem Netzschalter) zu deaktivieren.

Zuerst habe ich die Geräte deaktiviert /proc/acpi/wakeupund dann zur Sicherheit /sys/devices/nach allen wakeupDateien gesucht:

find /sys/devices/ -name "wakeup" -print -exec grep enabled {} \;

Dann setze ich sie alle explizit auf disabled, zB:

sudo bash -c "echo disabled > /sys/devices/pci0000:00/0000:00:19.0/power/wakeup"

Nur den Netzschalter aktiviert lassen:

cat /sys/devices/LNXSYSTM:00/LNXPWRBN:00/power/wakeup
# enabled

Danach wird der Computer immer noch sofort aus dem Ruhezustand geweckt (sofern jemals eine USB 3.0-Festplatte angeschlossen wurde).

Außerdem wurden nach dem Aufwachen die folgenden Geräte zurückgesetzt auf enabled:

/sys/devices/pci0000:00/0000:00:19.0/power/wakeup
/sys/devices/LNXSYSTM:00/device:00/PNP0C0A:00/power_supply/BAT0/power/wakeup

Das PCI-Gerät scheint mein LAN zu sein, da es auch in Folgendem zurückgesetzt wird /proc/acpi/wakeup:

Device  S-state   Status   Sysfs node
...
GLAN      S4    *enabled   pci:0000:00:19.0
...

Können noch weitere, in den Geräten nicht aufgeführte Faktoren für das Aufwachen verantwortlich sein?

Bearbeiten – Detaillierte lsusb-Informationen hinzugefügt

Zusätzliche Informationen angefordert vonFabby:

> Bus 004 Device 002: ID 357d:7788  
> Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               3.00
>   bDeviceClass            0 (Defined at Interface level)
>   bDeviceSubClass         0 
>   bDeviceProtocol         0 
>   bMaxPacketSize0         9
>   idVendor           0x357d 
>   idProduct          0x7788 
>   bcdDevice            0.00
>   iManufacturer          10 
>   iProduct               11 
>   iSerial                 3 
>   bNumConfigurations      1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength          121
>     bNumInterfaces          1
>     bConfigurationValue     1
>     iConfiguration          0 
>     bmAttributes         0xc0
>       Self Powered
>     MaxPower                2mA
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass         8 Mass Storage
>       bInterfaceSubClass      6 SCSI
>       bInterfaceProtocol     80 Bulk-Only
>       iInterface              0 
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x81  EP 1 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0400  1x 1024 bytes
>         bInterval               0
>         bMaxBurst              15
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x02  EP 2 OUT
>     Couldn't open device, some information will be missing
>     bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0400  1x 1024 bytes
>         bInterval               0
>         bMaxBurst              15
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       1
>       bNumEndpoints           4
>       bInterfaceClass         8 Mass Storage
>       bInterfaceSubClass      6 SCSI
>       bInterfaceProtocol     98 
>       iInterface              0 
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x01  EP 1 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0400  1x 1024 bytes
>         bInterval               0
>         bMaxBurst               0
>         Command pipe (0x01)
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x82  EP 2 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0400  1x 1024 bytes
>         bInterval               0
>         bMaxBurst               0
>         MaxStreams             32
>         Status pipe (0x02)
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x83  EP 3 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0400  1x 1024 bytes
>         bInterval               0
>         bMaxBurst              15
>         MaxStreams             32
>         Data-in pipe (0x03)
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x04  EP 4 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0400  1x 1024 bytes
>         bInterval               0
>         bMaxBurst              15
>         MaxStreams             32
>         Data-out pipe (0x04)
> 

Antwort1

Erstens war es für mich nicht offensichtlich, dass es sich bei der XHCAuflistung in der wakeupAusgabe um ein USB 3.0-Gerät handelte.

XHC       S0    *enabled   pci:0000:00:14.0

Allerdings löst auch das Deaktivieren des Weckstatus dieses Geräts das Problem nicht.

sudo bash -c "echo disabled > \
    /sys/devices/pci0000:00/0000:00:14.0/power/wakeup"  # Problem persists.

Die einzige funktionierende Lösung, die ich gefunden habe, besteht darin, den Gerätetreiber mit den folgenden Befehlen zu unbindaktualisieren :bind

sudo bash -c ' \
  echo -n "0000:00:14.0" > /sys/bus/pci/drivers/xhci_hcd/unbind && \
  echo -n "0000:00:14.0" > /sys/bus/pci/drivers/xhci_hcd/bind;'

Ich muss dies jedes Mal tun, zwischen dem Anschließen eines USB 3.0-Speichergeräts und dem Ruhezustand des Computers, aber es funktioniert zuverlässig.

Es ist zu beachten, dass die xhci_hcdKomponente des Pfads nur für USB 3.0-Geräte gültig ist. Dieser Teil des Pfads muss je nach Bustyp, der zurückgesetzt werden muss, variiert werden und kann einer von oder uhci_hcdfür andere Arten von Speichergeräten sein.sdhci-pciehci-pci

Antwort2

Entschuldigen Sie, dass ich eine Antwort hinzufüge, aber mein Ruf reicht nicht aus, um Kommentare hinzuzufügen ...

(Welches istwarum ich mir dein Problem anschaue!) ;-) :P

Haben Sie versucht, den USB-Bus zurückzusetzen, von dem die Festplatte vor dem Suspendieren getrennt wurde?

Wenn Sie nicht wissen, wie, könnten Sie:

  1. Maschine herunterfahren
  2. Trennen Sie alle USB-Geräte
  3. Entfernen Sie sämtliche Stromkabel, USVs, Batterien, …
  4. Maschine einschalten (ja: ohne Stromkabel!)
  5. Stellen Sie die in Schritt 3 entfernte Stromversorgung wieder her
  6. Booten Sie den Computer
  7. Führen Sie Folgendes durch:lsusb --verbose > /tmp/good-bus.txt 2>&1
  8. Stecken Sie die Festplatte ein
  9. Führen Sie Folgendes durch:lsusb --verbose > /tmp/bad-bus.txt 2>&1
  10. Unmounten der Festplatte
  11. Werfen Sie die Diskette aus
  12. Entfernen Sie die Festplatte
  13. Führen Sie Folgendes durch:lsusb --verbose > /tmp/worse-bus.txt 2>&1
  14. Führen Sie Folgendes durch:diff --text /tmp/good-bus.txt /tmp/bad-bus.txt > /tmp/test-g-b.txt
  15. Führen Sie Folgendes durch:diff --text /tmp/good-bus.txt /tmp/worse-bus.txt > /tmp/test-g-w.txt

Und dann melden Sie sich hier mit der Ausgabe von /tmp/test-gb.txt und /tmp/test-gw.txt zurück.

verwandte Informationen