ACPI ウェイクアップ状態をカーネルで変更できますか?

ACPI ウェイクアップ状態をカーネルで変更できますか?

最近、私は家の設定をより快適にするためにWake on LANの実験を始めましたが、その過程でACPIの設定について疑問に思いました。

すばやく確認した後、私のイーサネットコントローラがWOLをサポートしていることを確認し、それを試しました。

Settings for eth0:
    [...]
    Supports Wake-on: pumbg
    Wake-on: g

いくつかのテストの後、私は次の事実に気づきました。

  • 私のコンピュータが停止している間、他のデバイスではWOLが正常に動作します。
  • コンピュータがシャットダウンしても何も起こりません。

今の問題は、家に帰る前にコンピュータを準備できるようにWOLを使用したいということです。機能するためにコンピュータを一時停止モードにする必要がある場合(システムは数秒以内に再起動されます)、その機能は不要です。

詳しく見ると、私のイーサネットカードにS4があることがわかりました。S状態アイテム/proc/acpi/wakeup

Device  S-state   Status    Sysfs node
PXSX    S4        *enabled  pci:0000:09:00.0

私が読んだことによれば、これはシステムがS4(またはそれ以下)状態(休止状態に対応)にある場合にのみ私のイーサネットコントローラをトリガとして使用できることを意味します。これは、一時停止モード(S1 / S3)でWOLを使用できますが、一度だけ実行できない理由を説明しますpoweroff(これにより、システムがソフトシャットダウンのS5に切り替えられると思います)。

私はACPIについて知らず、ハードウェアの知識もイーサネットコントローラまで拡張されていません。私が知りたいのは、システムがオフになっているときにS5のイーサネットコントローラに電力を供給する方法はありますか?私(3.13)Linuxカーネルに権限がありますか、それともこれは私のマザーボード(またはコントローラ)の設計によって異なりますか?

書いて、どのデバイスをトリガーとして使用できるかを判断できるようです/proc/acpi/wakeup(現在はもう使用されていないと思います)。しかし、より具体的に説明し、デバイスがコンピュータを起こす可能性がある状態を判断できますか?

ベストアンサー1

これはマザーボードの設計によって異なります。

/proc/acpi/wakeupACPIテーブルのマザーボードの自己説明に基づいて作成されました。これには、コンピュータがウェイクアップイベントに使用できるすべてのデバイスと、そのウェイクアップがマザーボードでサポートされている状態が一覧表示されます。ウェイクアップソースを有効/無効にするよりも具体的に指定することはできませんが、BIOSメニューにはより多くの設定があります。

あなたは正しいです。poweroff機械をS5に入れます。しかし、S5とS4は非常に似た状態にあります。多くの場合、唯一の違いは、スリープ状態に設定されたマザーボードチップレジスタの特定のビットです。これは、ハードウェア側でマザーボードのI / Oポートを反転したり、I²Cデバイスに書き込んで関連レジスタを手動で変更したりする場合は、通常S5でウェイクアップを設定できることを意味します。機能するには、チップセット、SuperIOチップなどのデータシートを読み取る必要があります。あるいは、initデーモンを変更して、シャットダウンシーケンスの最後の部分を休止状態+再開などに置き換えて、BIOSがウェイクソースをアクティブに保つこともできます。

コンピュータがS4でウェイクアップをサポートしているので、最も簡単な解決策はpm-hibernate代わりに休止状態(たとえばvia)を使用することですpoweroff

おすすめ記事