WOL网络唤醒设置

BIOS/UEFI 层级配置

这是所有设置的前提。如果硬件层关闭,系统层做再多努力也无效。

  1. 进入 BIOS:通常是开机连续按 DelF2
  2. 电源管理设置 (Power Management)
    • Wake On LANResume By PCI-E Device:设为 Enabled
    • ErP Ready:设为 Disabled(这是关键!ErP 开启会将待机功耗降至 0.5W 以下,直接切断网卡电源)。
    • Deep Sleep:设为 Disabled

操作系统设置

、 Windows 操作系统配置

Windows 默认倾向于在关机时“彻底休眠”,这有时会干扰网卡状态。

1. 网卡属性设置

  1. 右键“此电脑” -> 管理 -> 设备管理器
  2. 找到你的网卡(如 Realtek 或 Intel Ethernet),右键 -> 属性
  3. 高级选项卡:找到 “Wake on Magic Packet”,设为 Enabled
  4. 电源管理选项卡:
    • 勾选“允许计算机关闭此设备以节约电源”。
    • 勾选“允许此设备唤醒计算机”。
    • 勾选“只允许幻数据包唤醒计算机”。

2. 关闭快速启动 (Fast Startup)

Windows 的快速启动会将系统进入一种特殊的休眠态,有时会导致网卡驱动不响应 WOL。

  • 控制面板 -> 电源选项 -> 选择电源按钮的功能 -> 取消勾选“启用快速启动”

Linux 操作系统配置

由于你遇到 Linux 下失效的问题,这里是重点。Linux 的电源管理策略通常比 Windows 更保守。

1. 使用 ethtool 手动开启

使用 ip address 命令查看网卡名称:

sudo ip address

检查状态(假设网卡名为 eth0):

Bash

sudo ethtool eth0 | grep Wake-on
  • 如果 Wake-on: d,说明被禁用。
  • 执行开启命令:sudo ethtool -s eth0 wol g

2. 持久化设置 (防止重启失效)

单纯执行命令重启后会重置。作为程序员,建议通过 NetworkManagerSystemd 解决。

方法 A:NetworkManager (推荐)

# 查看连接 ID
nmcli connection show
# 开启 WOL (替换 'Wired connection 1' 为你的连接名)
nmcli connection modify "Wired connection 1" 802-3-eth.wake-on-lan magic

方法 B:Systemd Service (最彻底) 如果 NM 不管用,创建一个服务在关机前强制开启: 创建 /etc/systemd/system/wol.service:

[Unit]
Description=Enable Wake On Lan
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/ethtool -s eth0 wol g

[Install]
WantedBy=multi-user.target

然后启用它:sudo systemctl enable wol.service