
Мой компьютер обычно засыпает и просыпается нормально. Но когда я подключаю жесткий диск USB3.0, даже после того, как он был размонтирован и отключен, машина немедленно просыпается каждый раз, когда я пытаюсь засыпания.
Все USB-устройства отключены /proc/acpi/wakeup
(см. ниже), и я не вижу никаких ошибок, /var/log/syslog
относящихся ни к USB-диску, ни к процессу перехода в режим ожидания или выхода из него.
Тот же диск, подключенный к порту USB 2.0, не вызывает той же проблемы, как и диски USB 2.0, подключенные к портам USB 3.0. Даже если вообще не подключено ни одного устройства USB, компьютер немедленно выходит из режима ожидания, если диск USB 3.0 был подключен с момента запуска.
Система — Dell Precision M6700, проблема возникла в версии 14.04 и сохраняется в версии 14.10.
Что может быть причиной этого и как можно устранить неполадку?
> 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
Редактировать - Явное отключение устройств не решает проблему
Я сейчас попробовал отключить пробуждение для всех устройств (кроме кнопки питания).
Сначала я отключил устройства, /proc/acpi/wakeup
а затем, чтобы убедиться, выполнил поиск /sys/devices/
всех wakeup
файлов:
find /sys/devices/ -name "wakeup" -print -exec grep enabled {} \;
Затем я явно устанавливаю их все на disabled
, например:
sudo bash -c "echo disabled > /sys/devices/pci0000:00/0000:00:19.0/power/wakeup"
Оставляем включенной только кнопку питания:
cat /sys/devices/LNXSYSTM:00/LNXPWRBN:00/power/wakeup
# enabled
После этого компьютер по-прежнему немедленно выходит из режима ожидания (всякий раз, когда к нему подключается диск USB 3.0).
Также после пробуждения следующие устройства были сброшены до enabled
:
/sys/devices/pci0000:00/0000:00:19.0/power/wakeup
/sys/devices/LNXSYSTM:00/device:00/PNP0C0A:00/power_supply/BAT0/power/wakeup
Похоже, что устройство PCI — это моя локальная сеть, поскольку оно также сброшено в /proc/acpi/wakeup
:
Device S-state Status Sysfs node
...
GLAN S4 *enabled pci:0000:00:19.0
...
Могут ли быть другие факторы, не указанные в устройствах, которые отвечают за пробуждение?
Редактировать - Добавлена подробная информация lsusb
Добавлена информация, запрошеннаяФабби:
> 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)
>
решение1
Во-первых, мне не было очевидно, что XHC
в wakeup
выводе указано устройство USB 3.0.
XHC S0 *enabled pci:0000:00:14.0
Однако даже отключение статуса пробуждения этого устройства не решает проблему.
sudo bash -c "echo disabled > \
/sys/devices/pci0000:00/0000:00:14.0/power/wakeup" # Problem persists.
Единственное рабочее решение, которое я нашел, — это unbind
использование 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;'
Мне приходится делать это каждый раз между подключением запоминающего устройства USB 3.0 и переводом компьютера в режим ожидания, но все работает стабильно.
Следует отметить, что xhci_hcd
компонент пути действителен только для устройств USB 3.0. Эту часть пути необходимо будет изменить в зависимости от типа шины, которую необходимо сбросить, и она может быть одной из uhci_hcd
, sdhci-pci
или ehci-pci
для других типов устройств хранения.
решение2
Извините за добавление ответа, но у меня недостаточно репутации, чтобы добавлять комментарии...
(Которыйпочему я смотрю на твою проблему!) ;-) :П
Пробовали ли вы сбросить настройки шины USB, от которой диск был отключен перед приостановкой?
Если вы не знаете как, можете ли вы:
- Выключите машину.
- Отключите все USB-устройства.
- Удалите все силовые кабели, ИБП, батареи, ...
- Включите машину (да: без кабелей питания!)
- Подключите обратно все питание, отключенное на шаге 3.
- Загрузите машину
- Сделайте:
lsusb --verbose > /tmp/good-bus.txt 2>&1
- Подключите диск.
- Сделайте:
lsusb --verbose > /tmp/bad-bus.txt 2>&1
- Размонтировать диск
- Извлеките диск.
- Извлеките диск.
- Сделайте:
lsusb --verbose > /tmp/worse-bus.txt 2>&1
- Сделайте:
diff --text /tmp/good-bus.txt /tmp/bad-bus.txt > /tmp/test-g-b.txt
- Сделайте:
diff --text /tmp/good-bus.txt /tmp/worse-bus.txt > /tmp/test-g-w.txt
А затем сообщите здесь вывод /tmp/test-gb.txt и /tmp/test-gw.txt