web-dev-qa-db-ja.com

ネットワークコントローラーがsky2モジュールを使用しているときにWakeOnLANを機能させるにはどうすればよいですか?

Aopeni945GMM-HLマザーボードを持っています。それでも正常に動作し、BIOSはWakeOnLANがマシンの電源を入れることができるように設定されていますが、最近のOSアップデート以降、これらのマジックパケットは機能しなくなりました。

NICの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

ランニングver。カーネルの3.4.6-1。

2
user123524

いくつかの情報を共有したかったのですが、これはMarvellデバイスでのwakeonlan(WOL)の問題に役立つ可能性があります。

Marvell Technology Group Ltd. 88E8056 PCI-Eギガビットイーサネットコントローラー(rev 12)を搭載したシャトルデバイスを持っています。 Sky2ドライバーv1.25を使用してUbuntu10.04LTSとXBMCを実行しています。この設定では、WOLは正常に実行されています。

最近、別のストーリーの一部として12.04 LTSにアップグレードする必要があり、Sky2v1.30でWOLの問題が発生しなくなりました。

Sky2ドライバーは、Y2_HW_WOL_ONおよびY2_HW_WOL_OFFのパラメーター処理のために失敗し、sky2_wol_init関数中にレジスターが書き込みます。

私は決してLinux開発者ではありませんが、lspciコマンドとsetpciコマンドの組み合わせを使用して、ドライバーv1.25とドライバーによって設定されたMarvellデバイスのレジスターをスニッフィングしました。 v1.30であり、v1.30ドライバーの実行時にsetpciを使用してレジスターを手動で設定するようになりました。 Wakeonlanは、再コンパイルせずに12.04 LTSおよびv1.30ドライバーで再び動作します!

(私のシステムの)レジスタは0x41にあり、その値を0x80に設定する必要があります。私のMarvellチップは02:00.0のPCIバス上にあり、lspciを使用して見つかりました。

Ethtoolシーケンスの実行に使用したのと同じ起動スクリプトにこのコマンドを追加しました。

setpci -s 02:00 41.b=80

だから、厄介なハックですが、うまくいきます。システムでカーネルドライバーを構築する方法を知っていれば、sky2.cドライバーを修正します…

1
Dave

以下の情報はOPからのもので、彼はさらに7時間自分の質問に答えることができません。

この問題の解決策は非常に簡単でした。どうやら私が使用していたカーネルが作られたとき、電源管理オプションがBIOSから読み取られることはありませんでした。すべてが変更されましたが、一部のBIOSはデータを誤って報告するため、一部のユーザーの一部の電源管理機能が破損します。回避策はパッチとしてLinuxカーネルメーリングリストに投稿されましたが、代わりにモジュールオプションを追加することが決定されました。

そう。 ethtoolとBIOS設定に記載されているにもかかわらず、wakeonlanをシステムで動作させるのに苦労している場合は、これを/etc/modprobe.d/の.confファイル(sky2.confなど)に入れてみてください。

options sky2 legacy_pme=1

参考までに、sky2モジュールをアンロードしてlegacy_pmeオプションを自分で試す場合は、必ずwakeonlanをオンに戻してください。

Sudo ethtool -s eth0 wol g

システムの電源を切る前

1
tgm4883