Не получается настроить Wake On Lan

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

aniily
Сообщения: 64

Не получается настроить Wake On Lan

Сообщение aniily »

Под оффтопиком все работает, ноут из ждущего режима спокойно просыпается. А вот под Linux никак не получается настроить Wake On Lan.

Что уже настроено:
1. ethtool -s eth0 wol g // включили Wake On Lan по magic packet

2. echo -n PCIE > /proc/acpi/wakeup //разрешили сетевой карте через PCI Bridge включать компьютер

Код: Выделить всё

$ cat /proc/acpi/wakeup
Device    S-state      Status   Sysfs node
PCI0      S3    *enabled   no-bus:pci0000:00
PCIE      S4    *enabled   pci:0000:00:1e.0
USB1      S3    *disabled  pci:0000:00:1d.0
USB2      S3    *disabled  pci:0000:00:1d.1
USB3      S3    *disabled  pci:0000:00:1d.2
USB4      S3    *disabled  pci:0000:00:1a.0
USB5      S3    *disabled  pci:0000:00:1a.1
EHC2      S3    *disabled  pci:0000:00:1a.7
EHCI      S3    *disabled  pci:0000:00:1d.7
AZAL      S3    *disabled  pci:0000:00:1b.0
RP01      S3    *disabled  pci:0000:00:1c.0
RP02      S3    *disabled  pci:0000:00:1c.1
RP03      S3    *disabled
RP04      S3    *disabled  pci:0000:00:1c.3
RP05      S3    *disabled
RP06      S3    *disabled
LID      S3    *enabled
PBTN      S4    *enabled
MBTN      S5    *disabled


Код: Выделить всё

$ lspci -tv
-[0000:00]-+-00.0  Intel Corporation Mobile PM965/GM965/GL960 Memory Controller Hub
           +-02.0  Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (primary)
           +-02.1  Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (secondary)
           +-1a.0  Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #4
           +-1a.1  Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5
           +-1a.7  Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2
           +-1b.0  Intel Corporation 82801H (ICH8 Family) HD Audio Controller
           +-1c.0-[0b]--
           +-1c.1-[0c]----00.0  Intel Corporation PRO/Wireless 4965 AG or AGN [Kedron] Network Connection
           +-1c.3-[0d-0e]--
           +-1d.0  Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1
           +-1d.1  Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2
           +-1d.2  Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #3
           +-1d.7  Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1
           +-1e.0-[03]--+-00.0  Broadcom Corporation BCM4401-B0 100Base-TX
           |            +-01.0  Ricoh Co Ltd R5C832 IEEE 1394 Controller
           |            +-01.1  Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter
           |            +-01.2  Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter
           |            \-01.3  Ricoh Co Ltd xD-Picture Card Controller
           +-1f.0  Intel Corporation 82801HEM (ICH8M) LPC Interface Controller
           +-1f.1  Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) IDE Controller
           +-1f.2  Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) SATA AHCI Controller
           \-1f.3  Intel Corporation 82801H (ICH8 Family) SMBus Controller


3. Уходим в suspend 2 ram. Например, используя

Код: Выделить всё

echo -n mem > /sys/power/state

Светодиоды на сетевой карте горят, то есть она не заснула со всем остальным, а продолжает дальше работать. Но почему-то компьютер не просыпается при получении magic packet.

Моя сетевая карта BCM4401 использует модуль b44. В dmesg нашел кое-что странное:

Код: Выделить всё

[ 4510.750150] PM: Preparing system for mem sleep
[ 4510.917441] Freezing user space processes ... (elapsed 0.01 seconds) done.
[ 4510.930119] Freezing remaining freezable tasks ... (elapsed 0.02 seconds) done.
[ 4510.950292] PM: Entering mem sleep
[ 4510.950318] Suspending console(s) (use no_console_suspend to debug)
[b][ 4510.952295] b44 ssb0:0: eth0: powering down PHY[/b]
[ 4510.952304] sd 2:0:0:0: [sda] Synchronizing SCSI cache
[ 4510.952791] sd 2:0:0:0: [sda] Stopping disk
[b][ 4511.011831] b44 0000:03:00.0: PCI INT A disabled[/b]
[ 4511.011845] ACPI handle has no context!

Может быть дело в этом?
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Не получается настроить Wake On Lan

Сообщение serzh-z »

Кажется, для WOL достаточно лишь поддержки со со стороны BIOS. Нет необходимости пользоваться Suspend.
Спасибо сказали:
aniily
Сообщения: 64

Re: Не получается настроить Wake On Lan

Сообщение aniily »

serzh-z писал(а):
04.05.2012 01:21
Кажется, для WOL достаточно лишь поддержки со со стороны BIOS. Нет необходимости пользоваться Suspend.

Ну, почему же. Например, если в Windows не включить Wake On Lan в свойствах сетевой карты, то оно работать не будет и в suspend (ждущий режим) сетевая карта будет просто выключена.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Не получается настроить Wake On Lan

Сообщение serzh-z »

aniily
Windows редактирует параметры BIOS. Сужу по описанию архитектуры WOL, где никакого суспенда не требуется.
Спасибо сказали:
aniily
Сообщения: 64

Re: Не получается настроить Wake On Lan

Сообщение aniily »

serzh-z писал(а):
04.05.2012 02:47
aniily
Windows редактирует параметры BIOS. Сужу по описанию архитектуры WOL, где никакого суспенда не требуется.

По поводу Suspend: Я собственно и не утверждаю, что для работы WOL обязательно нужен суспенд. =) Моей целью является возможность из системы уходить суспенд и иметь возможность по команде удаленно выводить её из суспенда.

По поводу BIOS: года два назад я уже настраивал под Linux WOL на этой машине. И там как раз и нужно было каждый раз перед выключением системы 1. включать wol в сетевой карте
2. включать возможность пробуждения по прерыванию от PCI бриджа, к которому собственно и подключена эта сетевая карта.
Это же и есть те параметры BIOS, которые необходимо установить системе, чтобы WOL заработало. Сейчас почему-то это уже не работает. Вот и хотелось бы разобраться в чем проблема. Делать каждый раз в инит-скриптах это приходилось, потому что они сбрасывались после каждой загрузки. А непосредственно в SETUP BIOS у меня никаких параметров таких нет. Он вообще у меня не особенно функциональный. Там вообще никаких параметров практически нет, только можно посмотреть параметры установленного оборудования.

Спасибо сказали:
noUser
Сообщения: 138
ОС: Arch

Re: Не получается настроить Wake On Lan

Сообщение noUser »

Тоже нет в биосе никаких параметнов хоть он у меня и навороченный с графикой. Мне было достаточно сделать ethtool -s eth0 wol g
Это нужно делать при каждом запуске и после хибернейта. Т к биос wol не поддерживает, то он очищает данную настройку сетевухи при каждом запуске. Тут модификация биоса могла бы помочь.
Из спящего режима по wol не выйти, только хибернейт ( надо запихать ethtool куда-то в запуск перед/после хибернейта или при поднятии интерфейса).
Можно ли пробросить волшебный пакет из интернета? Комп за натом.
Спасибо сказали:
aniily
Сообщения: 64

Re: Не получается настроить Wake On Lan

Сообщение aniily »

noUser писал(а):
20.05.2012 20:38
Тоже нет в биосе никаких параметнов хоть он у меня и навороченный с графикой. Мне было достаточно сделать ethtool -s eth0 wol g
Это нужно делать при каждом запуске и после хибернейта. Т к биос wol не поддерживает, то он очищает данную настройку сетевухи при каждом запуске. Тут модификация биоса могла бы помочь.
Из спящего режима по wol не выйти, только хибернейт ( надо запихать ethtool куда-то в запуск перед/после хибернейта или при поднятии интерфейса).

Да, у меня каждый раз при запуске устанавливается этот параметр.
Из спящего режима по wol ВЫЙТИ, у меня на ноуте это работает. Правда, только под виндой. Раньше работало под линуксом, а сейчас что-то никак не настроить. =(

noUser писал(а):
20.05.2012 20:38
Можно ли пробросить волшебный пакет из интернета? Комп за натом.

Да, можно. Magic Packet - это просто UDP пакет. Нужно просто прокинуть соответствующий UDP порт на адрес спящего компьютера. Посылать надо не широковещательный уже пакет, а пакет на этот конкретный адрес.
Но тут есть ещё одна тонкость. Роутер транслирует IP-адреса в MAC-адреса с помощью таблицы ARP. Проблема в том, что обычно если IP-адрес неактивен определенное время, то запись о нем выкидывается из ARP-таблицы.

Наша ситуация:
- компьютер уснул. Например, у него был статический адрес 192.168.1.204 ;
- роутер удалил по неактивности запись из ARP-таблицы о спящем компьютере;
- через какое-то время послали пакет с внешнего интерфейса;
- роутер видит, что этот UDP пакет надо перенаправить на компьютер с адресом 192.168.1.204 . Но в ARP-таблице нет записи об этом IP-адресе.
- тогда роутер посылает широковещательный запрос в локальную сети "Кто есть 192.168.1.204". Но наш компьютер спит и поэтому ответить не может.
- роутер, не получив ответа, не знает куда отправлять пакет и поэтому он его выкидывает.

Решение проблемы:
- есть роутеры, в которых есть возможность задания статической записи в ARP-таблице. Она не будет удалятся по неактивности
- есть роутеры, в которых есть возможность послать Magic Packet через их вэб-интерфейс. Тогда проброс портов собственно вообще не нужен.
- роутер имеет telnet/ssh и позволяет редактировать таблицу arp из консоли.

У меня последний вариант. Написал скрипт, который логинится из интернета на роутер, добавляет туда запись в arp-таблицу, разлогинивается и после этого уже отправляю magic packet. Все работает.
Спасибо сказали:
noUser
Сообщения: 138
ОС: Arch

Re: Не получается настроить Wake On Lan

Сообщение noUser »

aniily писал(а):
21.05.2012 12:28
Из спящего режима по wol ВЫЙТИ, у меня на ноуте это работает. Правда, только под виндой.

Гуглил как-то эту тему. Пришел к выводу, что собственно wol по своей спецификации с суспендом не работает. В этом режиме вообще комп не выключается и часть операционки вроде бы живет, вот она то и реагирует на какой-то сигнал от железа, ее и надо настраивать.

ПС : спасибо за советы :rolleyes: примерно так и делал, но про arp забыл
Спасибо сказали:
aniily
Сообщения: 64

Re: Не получается настроить Wake On Lan

Сообщение aniily »

noUser писал(а):
21.05.2012 23:38
aniily писал(а):
21.05.2012 12:28
Из спящего режима по wol ВЫЙТИ, у меня на ноуте это работает. Правда, только под виндой.

Гуглил как-то эту тему. Пришел к выводу, что собственно wol по своей спецификации с суспендом не работает. В этом режиме вообще комп не выключается и часть операционки вроде бы живет, вот она то и реагирует на какой-то сигнал от железа, ее и надо настраивать.

У меня WOL работает из ждущего режима. Если WOL разрешить, то в ждущем режиме сетевая карта остается включенной и на ней горят светодиоды.
А у тебя в хибернете с включенным WOL на сетевой карте горят светодиоды?
Спасибо сказали:
aniily
Сообщения: 64

Re: Не получается настроить Wake On Lan

Сообщение aniily »

Тема старая, просто решил на всякий случай написать результаты решения проблемы, если вдруг кому-нибудь пригодится.
Проблема была в изменении работы PM в ядре. Багу пофиксил и патч уже доступен в основной ветке разработки Linux. Технические детали проблемы описаны непосредственно в коммите.
С текущими ядрами этой проблемы быть не должно.
Спасибо сказали: