症状本身就告诉你该查哪里
网络唤醒要么好使要么不好使,而真正有用的诊断信息藏在"它从什么时候开始不好使"里。动手改任何东西之前,先把你的故障对号入座:
| 症状 | 几乎总是 |
|---|---|
| 从来就没成功过 | BIOS 或网卡驱动里 WOL 没开 |
| 休眠能唤醒,关机后不能 | 快速启动,或"从 S5 唤醒"没开 |
| 本来好用,断了一次电以后不行了 | 网卡失去待机供电 / BIOS 设置被重置 |
| 能用一阵,闲置几小时后失效 | 网卡深度省电,或 ARP/交换机表项老化 |
| 同一个房间能唤醒,从机房不行 | 不同网段——广播不过路由 |
| 能唤醒这台,旁边一模一样的那台不行 | MAC 抄错,或那台的 BIOS 设置不同 |
这几行对应的是真正不同的原因,你的排查顺序应该跟着你所在的那一行走,而不是照一份通用清单挨个试。
Magic Packet 到底是什么
理解这个包能消除大量迷思:
6 个字节的 0xFF + 目标 MAC 重复 16 次
FF FF FF FF FF FF AABBCCDDEEFF × 16
= 总共 102 字节整个协议就这么多。 它以 UDP 广播发送,通常发到 255.255.255.255。
由此直接推出三个结论,它们解释了大部分困惑:
- 没有任何回应。 WOL 是"发完不管"的。你的中控系统无法告诉你唤醒是否成功——它只能告诉你包发出去了。"软件显示成功"的含义仅仅是"广播离开了本机"。
- 没有认证,除 MAC 外没有寻址。 网段上任何设备都能发。
- 因为是广播,它默认不跨路由器。 这是最大的架构性坑,下面单说。
9 端口还是 7 端口?
端口其实是无关紧要的——网卡认的是那个魔术字节模式,不是端口。但发送方总得挑一个,而设备接受的端口并不一致:9 是常见默认值,有些硬件只监听 7。
稳妥做法是两个都发。 SoftControl 的 WOL 驱动就是这么做的:向配置的端口(默认 9)广播,如果那个端口不是 7,再向 7 端口补发一次——因为多发一个 102 字节的包成本为零,而一台唤不醒的投影主机的成本是跑一趟现场。
如果你用的工具只发一个端口而某台机器唤不醒,先换另一个端口试试,再去怀疑网卡。
头号原因:快速启动会让"关机后唤醒"失效
这是 Windows 上"休眠能唤醒、关机后不行"的最常见原因。
Windows 的快速启动并不是真正的关机。它把内核会话休眠了,而在很多网卡驱动上,这条路径不会武装唤醒过滤器——尽管同一块网卡从休眠唤醒完全正常。
症状精确且可复现:休眠 → 能唤醒;关机 → 死的。
修法:关掉快速启动(控制面板 → 电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置 → 取消勾选"启用快速启动")。在标牌或展厅主机上你本来就该关掉它——快速启动还会带来一些只有真正冷启动才能清掉的陈旧状态问题。
网卡本身相关的设置:设备管理器 → 网络适配器 → 电源管理 → 勾选"允许此设备唤醒计算机",在高级选项卡里启用 Wake on Magic Packet(魔术包唤醒)。有些驱动还会额外提供 "Wake on pattern match" 和 "Shutdown Wake-On-Lan" 或 "Wake from S5" 选项——S5 就是完全关机状态,如果这个选项存在而被禁用了,无论你怎么配其他项,关机后唤醒永远不会成功。
断电之后
WOL 要求机器关闭期间网卡持续获得待机供电。 市电中断后、或机器被拔掉电源后,常见有两件事发生变化:
- 部分 BIOS/UEFI 会重置 "Wake on LAN / Power on by PCI-E" 设置,或者 CMOS 电池没电导致整个配置回退。
- 网卡可能要等系统启动过一次才会重新武装唤醒过滤器。 一台断电后再没被手动开过机的机器,可能根本唤不醒——没有任何东西被武装起来在监听。
这一点在展厅里值得写进设计:如果楼里晚上会拉闸,光靠 WOL 不是可靠的早晨开机方案。 用 BIOS 里的"来电自动开机 / power on after power failure"让机器在市电恢复时自己启动,WOL 留给日常场景。
"Checking Media Presence"——联想和它的同类
一台机器开机时显示 Checking Media Presence… / Media Present / Start PXE over IPv4 然后卡住或穿过去,说明它已经醒了,但去尝试网络启动了,而不是加载 Windows。
这其实不算 WOL 故障——唤醒是成功的。 问题是启动顺序错了:网卡排在固态硬盘前面,而唤醒事件经常会触发网络启动路径。
修法:在 BIOS 里把 SSD 放到启动优先级第一,如果你不做网络装机,把 PXE / Network Boot 整个关掉。另外找一下 "Network Stack" 也关掉。之后机器就会唤醒并从本地启动。
部分联想机型上,开启 WOL 之后就会出现这个症状,因为开 WOL 会连带打开网络堆栈。关掉 PXE、保留 WOL 才是正确组合。
跨网段唤醒
发往 255.255.255.255 的广播永远不会离开本网段,路由器会丢弃它。这就是为什么在同一台交换机上用笔记本能唤醒、从机柜间的控制服务器就不行。
三个方案,由优到次:
1. 把发送方放进同一个 VLAN。 控制主机和目标机器同网段,问题自然消失。展厅工程里这通常做得到,也是最不脆弱的答案。
2. 定向广播。 不发 255.255.255.255,改发目标网段的广播地址——192.168.10.0/24 就是 192.168.10.255。这个包是可路由的,但路由器必须被配置为转发定向广播(Cisco 设备上是在目的接口配 ip directed-broadcast)。很多网络出于安全默认禁用它,所以需要网络管理方点头。
3. 在目标网段放一个中继。 一台常开的小设备(或者一台一直不关的标牌主机)通过 TCP 收到指令后,在本地发出广播。在你控制不了的网络里,这是最可靠的选项。
另外要注意交换机的 MAC 表项会老化。 一台关了几小时的机器可能已经不在交换机 MAC 表里了,这意味着单播的 WOL 包无处可去——这既是协议为什么用广播的原因,也是定向广播优于"单播到 IP"的原因。
无线网络
纯 WOL 走 Wi-Fi 基本上是不工作的。 magic packet 机制假设有一块有线网卡在断电期间仍保持链路;Wi-Fi 适配器在机器关闭时会断开关联。有一个独立标准(WoWLAN),但支持情况参差不齐。
任何无人值守场景都用有线。 这不是一个值得去搏的限制。
MAC 地址格式
MAC 是这个包唯一的寻址信息,所以抄错一位就是致命且无声的。 多数工具接受的格式——SoftControl 的驱动会把下面这些全部规范化:
AA:BB:CC:DD:EE:FF
AA-BB-CC-DD-EE-FF
AA.BB.CC.DD.EE.FF
aabbccddeeff要用"将会接网线的那个网口"的 MAC,在同时有 Wi-Fi 和有线网卡的机器上,它不一定是排在最前面的那个。ipconfig /all 会按适配器分别列出,取标着 Ethernet 的那个。
完整排查清单(按顺序)
- BIOS/UEFI:Wake on LAN / Power on by PCI-E 开启;PXE/网络启动 关闭;启动顺序 SSD 第一。
- BIOS:如果展厅晚上拉闸,把"来电自动开机"设为开启。
- Windows:快速启动 关闭。
- 网卡驱动:勾选"允许此设备唤醒计算机";开启 Wake on Magic Packet;若有 "Shutdown Wake-On-Lan"/S5 选项则开启。
- 网线:有线以太网,机器关闭状态下网口指示灯仍亮——如果关机后灯是灭的,说明网卡没有待机供电,其他一切都不用查了。
- 与发送方同网段,或已配置定向广播。
- MAC 正确,且是正确那块网卡的。
- 9 和 7 两个端口都试。
第 5 步是最快的单项测试。 把机器关掉,看网口。没有链路灯就意味着 WOL 根本不可能工作,你在十秒内就把范围缩小到了 BIOS/硬件,一行软件都不用碰。
用 SoftControl 控制
SoftControl 原生支持网络唤醒,和 TCP、UDP、PJLink、串口、Modbus 并列,所以"先把播放主机叫醒、再控制投影机"是同一个界面里的同一段序列。它的 WOL 驱动会把任何常见 MAC 格式规范化,并同时向配置端口和 7 端口广播。
有一条要老实重复的边界:WOL 是发完不管的,所以任何中控系统都无法确认唤醒成功。 无人值守展厅的正确做法是:发出 magic packet,然后去轮询那台机器——尝试建立一个 TCP 连接,或者向播放器发一个 HTTP 请求——用它真的起来了作为依据,而不是相信"发送成功"。