web-dev-qa-db-ja.com

特定の(PCI [e])デバイスをスリープ/オフ(D3)状態にするようにWindowsまたはLinuxに指示するにはどうすればよいですか?

WindowsまたはLinuxに特定のデバイス(USBコントローラー、ネットワークカード、ビデオカードなど)の電源を切るように指示するにはどうすればよいですか?つまり、デバイスをD3状態にしますか? ACPIなどについて私が知っているごくわずかなことから、オペレーティングシステムはこれを制御できます。たとえば、コンピューターをスリープ(S3)モードにするときに、デバイスを上記のD3状態(サポートされている場合)にするためです。特定のデバイスに対してこれを手動で行う方法があるかどうか疑問に思っています。

Linuxの場合、 このスレッド を見つけました。これは、ドライバーがデバイスの電力を制御できるようにすることを提案しています。

 echo -n "auto" > /devices/pci0000:00/0000:00:02.0/power/control' 

次に、ドライバーをアンロードします。

 echo -n "0000:00:02.0" > /sys/bus/pci/drivers/i915/unbind

デバイスがスリープするようにします。

別の方法はありますか?おそらく、システム全体がスリープモードになったときに何が起こるかをエミュレートするためですか?

さらに、これはWindows 7でどのように機能しますか?

5

Linuxの場合、私はこのスレッドを見つけました。これは、ドライバーがデバイスの電力を制御できるようにすることを提案しています。

echo -n "auto">/devices/pci0000:00/0000:00:02.0/power/control 'および

次に、ドライバーをアンロードします。

echo -n "0000:00:02.0">/sys/bus/pci/drivers/i915/unbind

デバイスがスリープするようにします。

Linuxの場合、

Sysファイル(/sys/devices/..../..../power/control)にautoをエコーすると、その特定のデバイスに対してランタイム電源管理を有効にするようにカーネルに指示します。これには2.6.32の最小カーネルバージョンが必要であり、Runtime PMはカーネル構成ファイル(CONFIG_PM_RUNTIME = y)で有効にする必要があると思います。

D3への移行を開始するイベントは、リンクの喪失です。ドライバをアンロードすると、おそらくデバイスがD3に入るのを防ぐことができます。インターフェイスをifdown(またはifconfig ethX down)する方がよいでしょう。

次のコマンドを使用して、デバイスの状態を確認できます。

lspci -s 00:02.0 -vv

NDISの場合、同じイベント(リンクの喪失)がD3への移行を開始します(デバイスのアンロード/無効化/ケーブルプル/リンクパートナーの切断)。 [プロパティ]-> [詳細]-> [電源データ]を確認すると、デバイスの状態を確認できます。さらに、電源データ画面には、電源状態のマッピング(つまり、各Sx状態でどのDx状態が入力されるか)が通知されます。

3
xraso