Как заставить работать WakeOnLAN, когда мой сетевой контроллер использует модуль sky2?
У меня есть материнская плата Aopen i945GMM-HL. Он по-прежнему работает нормально, и BIOS настроен на включение WakeOnLAN для включения компьютера, но после недавнего обновления ОС эти магические пакеты просто больше не работают.
Вот вывод команды lspci -v для сетевого адаптера:
03:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8053 PCI-E Gigabit Ethernet Controller (rev 22)
Subsystem: AOPEN Inc. Device 0607
Flags: bus master, fast devsel, latency 0, IRQ 43
Memory at fdefc000 (64-bit, non-prefetchable) [size=16K]
I/O ports at ce00 [size=256]
[virtual] Expansion ROM at fdd00000 [disabled] [size=128K]
Capabilities: [48] Power Management version 2
Capabilities: [50] Vital Product Data
Capabilities: [5c] MSI: Enable+ Count=1/2 Maskable- 64bit+
Capabilities: [e0] Express Legacy Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Kernel driver in use: sky2
бегущая версия 3.4.6-1 ядра.
2 ответа
Я хотел поделиться некоторой информацией - это может помочь с вашей проблемой wakeonlan (WOL) с устройством Marvell.
У меня есть устройство Shuttle с Marvell Technology Group Ltd. 88E8056 PCI-E Gigabit Ethernet Controller (версия 12). Я использовал Ubuntu 10.04 LTS и XBMC с драйвером Sky2 v1.25. WOL работает нормально в этой настройке.
Недавно мне пришлось обновить систему до 12.04 LTS как часть другой истории и столкнуться с проблемой WOL, которая больше не работает со Sky2 v1.30.
Сбой драйвера Sky2 из-за обработки параметров Y2_HW_WOL_ON
а также Y2_HW_WOL_OFF
и регистр пишет, во время sky2_wol_init
функция.
Я ни в коем случае не разработчик Linux, но использую комбинацию lspci
а также setpci
В командах я обнаружил регистры в устройстве Marvell, которые были установлены драйвером v1.25 и драйвером v1.30, а теперь вручную установил регистр с помощью setpci при запуске драйвера v1.30. Wakeonlan снова работает с 12.04 LTS и драйвером v1.30 без перекомпиляции!
Регистр (в моей системе) находится по адресу 0x41
и требует установки значения в 0x80
, Мой чип Marvell находится на шине PCI в 02:00.0
, найденный используя lspci
,
Я добавил эту команду в тот же скрипт запуска, который использовался для запуска последовательности ethtool:
setpci -s 02:00 41.b=80
Итак, мерзкий взлом, но отлично работает. Я бы исправил sky2.c
драйвер, если бы я знал, как построить драйвер ядра в моей системе...
Приведенная ниже информация получена от ОП, поскольку он не может ответить на свой вопрос еще 7 часов.
Решение этой проблемы было довольно простым. Видимо, когда было сделано ядро, которое я использовал, опции управления питанием никогда не читались из BIOS. Все это изменилось, но некоторые BIOS неправильно сообщают свои данные, что приводит к поломке некоторых функций управления питанием для некоторых пользователей. Обходные пути были опубликованы в списке рассылки ядра Linux в виде исправлений, но было решено добавить вместо них параметр модуля.
Так. Если вам трудно заставить wakeonlan работать с вашей системой, несмотря на то, что говорит ethtool и ваши настройки BIOS, попробуйте поместить это в файл.conf (например, sky2.conf) в /etc/modprobe.d/
options sky2 legacy_pme=1
К вашему сведению, если выгрузите модуль sky2, чтобы попробовать его с опцией legacy_pme, обязательно включите wakeonlan с помощью
sudo ethtool -s eth0 wol g
перед выключением системы