我如何告诉 Windows 或 Linux 关闭特定设备(例如 USB 控制器、网卡、视频卡),即使其处于 D3 状态?从我对 ACPI 等的了解来看,操作系统可以控制这一点,因为它会将设备置于所述 D3 状态(如果支持),例如在将计算机置于睡眠 (S3) 模式时。我想知道是否有办法手动为某些设备执行此操作。
对于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 中如何运行?
答案1
对于 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,
将 auto 回显到 sys 文件 (/sys/devices/..../..../power/control) 是告诉内核为该特定设备启用运行时电源管理。我认为这要求内核的最低版本为 2.6.32,并且必须在内核配置文件 (CONFIG_PM_RUNTIME=y) 中启用运行时电源管理。
启动 D3 转换的事件是链接丢失。卸载驱动程序可能会阻止设备进入 D3,最好只是 ifdown(或 ifconfig ethX down)接口。
您可以使用以下命令确定设备的状态:
lspci-s 00:02.0-vv
对于 NDIS,相同事件(链路丢失)会启动向 D3 的转换(卸载/禁用设备/拉动电缆/断开链路伙伴)。您可以通过查看“属性”->“详细信息”->“电源数据”来了解设备的状态。此外,电源数据屏幕应告知您电源状态映射(即,在每个 Sx 状态中进入哪个 Dx 状态)。