资讯详情

联想拯救者 Lenovo Legion 通电自启 插电自启 通电开机 插电开机 Wake on AC

联想拯救者 Lenovo Legion 通电自启 插电自启 通电开机 插电开机 Wake on AC

文章目录

  • 联想拯救者 Lenovo Legion 通电自启 插电自启 通电开机 插电开机 Wake on AC
  • 说明
  • 一、我的电脑
  • 二、详细流程
    • 1.BIOS选项
    • 2.查阅改BIOS的资料
    • 3.修改BIOS失败
    • 4.改变想法:不修改:BIOS?
    • 5.Wake on Lan原理
    • 6.尝试Wake on Lan失败
    • 7.修改BIOS成功
    • 8.找到相关的唤醒BIOS参数
    • 9.Wake on AC
  • 总结
    • State After G3
    • Wake on Lan


说明

我对硬件和系统的底部一无所知。这个简单的功能已经折腾了两天了。所以我想写一本日志。日志很杂,但我发现B站的救援人员官方账户有150个w粉丝,所以挂在博客上,希望对大家有所帮助。

本文涉及对BIOS由于硬件环境不同,修改可能导致无法启动和保修。At Your Own Risk


一、我的电脑

拯救者R720-15ikbn,6-7年前的电脑。618计划购买显示器,所以笔记本打算盖上,然后用立式支架支撑。但屏幕覆盖后,电源开关被覆盖,此时需要通过外部手段启动。可以是Wake on AC或者Wake on Lan。我碰巧有一个天猫精灵公牛插座。所以一开始我打算用通电开机,但是因为BIOS相关参数一直找不到,但这两天一直在研究Wake on Lan了。结果很郁闷,研究时无意中发现了通电自启选项,Wake on Lan反而搞不定…

二、详细流程

1.BIOS选项

首先不管是Wake on AC还是Wake on Lan,一切都要打开相应的BIOS参数。检查数据后,一般与电源相关的设置应合理放置Power在相关项目中。联想的救世主,以及神州和雷神的一些型号BIOS是InsydeH20 Setup Utility。按F2进入BIOS只会显示InformationConfigurationSecurityBootExit几张选项卡。当我发现别人时BIOS有很多参数,我自己只有一点,我意识到这些参数应该被隐藏起来。然后解这些隐藏的菜单,进入正确的菜单BIOS的修改过程

2.查阅改BIOS的资料

一开始,我在哔哩哔哩找到了两段视频(感谢万能哔哩哔哩): BIOS解锁高级菜单(雷神zero) 神舟 华硕 联想各品牌bios一般解锁教程 解锁功耗墙 延长鸡血时间 内存超频 解放电脑性能

在Windows上直接修改BIOS,安装一个叫做Intel? Management Engine Interface这个驱动程序可以在联想的官方驱动程序页面上下载。有了这个接口,我们可以在第三方找到相应版本的修改工具,以下是B站UP提供的网盘地址: 第3方汇集 Intel CSME System Tools

下载压缩包后,只需解压Flash Programming Tool/WIN64下的FPTW64和两个dll文件。FPTW64可以在命令行下用于备份BIOS镜像和刷写BIOS镜像。备份了BIOS镜像后,我们需要从镜像中提取与菜单相关的东西SetupUtility反编译文件。会有反编译文件Grayoutif和Suppressif这样的关键词,参考Step to UEFI (146)Grayoutif ,Suppressif和Setup联动的探索

Grayoutif和Suppressif是常用的控制命令。Grayoutif它的作用是设定一个 item 跟随另一个 item 变化设置为灰色,不能修改参考1。Suppressif它的作用是设定一个 item 跟随另一个 item 变化自动隐藏参考2。

B站的UP通过简单调整和这两个关键字相关的布尔值实现对BIOS的解锁。

如果您感兴趣,可以查看以上两个视频。顺便说一句,把评论区翻过来

3.修改BIOS失败

由于只是简单地调整逻辑表达式,而不是实际修改变量,视频介绍的方法不太可能是正确的BIOS影响功能本身。 按视频操作一波,重启按F2,没效果。 考虑到可能性BIOS版本太旧了。我的版本是4KCN23WW,所以去官网找最新的驱动。但我的电脑似乎被联想淘汰了,找不到我的R只能下载720驱动页面Y520的4KCN45WW安装。安装后,按照视频的方法重新操作,但在提取中SetupUtility反编译时,直接死循环。。。无奈只能通过上面提到的FPTW我刚开始备份的464工具KCN23WW驱动刷回去,刷的时候提示Writing Protection,大概是这个版本的BIOS有特殊的保护机制 然后我去驱动页面找历史BIOS驱动版本4KCN28WW回来重新安装,安装前BIOS上打开一个叫做BIOS BACK FLASH参数,似乎是版本回归相关的参数,懂,但打开以防万一 然后,我只能想办法。

4.改变想法:不修改:BIOS?

反编译在上面SetupUtility可以直接搜索文件BIOS菜单条目。所以要注意Power选项卡下的条目。但是我在这份文件中没有找到和AC还有Power任何与通电自启相关的关键词条目。Power下有一个Wake on PMEWake on Modem RingModem Ring好像和电话线有关,应该是打电话打开电脑?PME Event Wake Up:Short for Power Management Event(电源管理事件)是通过操作鼠标、键盘等设备启动的Wake on Lan也是其中之一。 结合文章Step to UEFI (146)Grayoutif ,Suppressif和Setup探索联动时提到:

这两个选项都不会影响设置Item例如,在选项隐藏之前,设定值 Enabled 是的,虽然它被隐藏了, 实际值还是 Enabled。设置后可以进入上述结论 Shell 使用 dmpstore 命令查看对应的变量来验证。

虽然BIOS条目是隐藏的,但实际上变量是有价值的。反编译的文件恰到好处Wake on PME条目的默认值是Enabled。

0xB7854    Setting: Wake on PME, Variable: 0x86 {05 91 16 15 17 15 02 04 34 12 86 00 04 10 00 01 00} 0xB7865     Option: Disabled, Value: 0x0 {09 07 0B 03 00 00 00} 0xB786C     Option: Enabled, Value: 0x1 (default) {09 07 0C 03 10 00 01} 0xB7873    End of Options {29 02} 

没有Wake on AC,而Wake on PME。所以我的解决方案变成了,没有修改BIOS,通过天猫精灵等智能家居平台联动Wake on Lan我找到了以下两篇文章: 利用天猫精灵实现计算机WOL网络唤醒 小爱同学网络唤醒(Wake on Lan,WOL)启动电脑

借用第一篇文章中的方案图: 在这里插入图片描述 这里需要家里有一个软路由或一个小服务器,我通常不玩软路由。但在第二篇文章中,我提到他的网络路由器刷梅林?我碰巧有一个非常垃圾的网络路由器躺着吃灰。所以我发现这个网络可以刷软路由。Openwrt相应型号的固件在官网找到。然后开始开始。Wake on Lan

5.Wake on Lan原理

关于Wake on Lan,这里有一篇文章写得很全面(有一点:操作系统负责处理睡眠模式下的网络唤醒,但是关机后系统没有运行,所以网络唤醒交由主板处理): WOL 网络唤醒避坑指南:常见问题的分析与内容补充 Wake on Lan缩写WOL,大概是关机后,主板仍对网卡保持微弱的供电,在外面看的时候就是关机后网卡灯还亮着,网卡会监听4343。然后我们可以发送一个特定格式的UDP包,一般叫做魔术包,包的格式是用6个FF开头(6个字节),后面跟上网卡的MAC地址重复16遍。网卡的Mac地址也是6个字节。所以加起来就是6+16*6=102个字节。当对应网卡收到这个包的时候,就会开机。 上面提到的智能家居的联动,需要一个家庭路由器/服务器,就是需要我们在上面跑一个API,当智能家居平台调用这个API时,就会触发向内网中发送一个魔术包。具体实现的话,这个API其实就是跑一个服务器,然后暴露一个接口,接口的具体功能就是发送魔术包。上面的文章用的是python脚本写,然而用java、python都是可以写的,很简单。 这里需要注意的一点是,平常我们的路由器使用DHCP服务器,所以网卡的IP地址可能会变。导致我们的魔术包发送不到准确的ip上。有些教程提到可以在路由上绑定网卡的ip和mac地址。以前我有这么试过,但可能是交换机的问题,直接把包发送给对应的ip,有时候不生效。 所以还有另外一个办法,就是向局域网中发送广播包。例如要给192.168.1.1发送魔术包,但是我们不指定这个ip地址,而是发给192.168.1.255,这样在这个局域网192.168.1.0/24内所有的在线的ip都会收到这个包,当然只有mac地址匹配了,对应的机器才会开机。至于局域网内有哪些设备是在线的?直接登录路由器后台就可以看到了

6.尝试Wake on Lan失败

Wake on Lan在Windows下的配置,就是在设备管理器下,选择有线网卡,编辑里面和WOL相关的几个参数,并且勾选Allow this device to wake the computer。我有一个小工具叫做WakeOnLanMonitor,可以监听4343的UDP端口。可以打开这个小工具,然后在安卓端下载WakeOnLan的App,向局域网广播魔术包。这时WakeOnLanMonitor就可以收到魔术包并显示出来。这个工具可以用来检查我们发送的魔术包是否正确。 当设置好网卡后,可以让系统进入Sleep(睡眠),然后测试在Windows系统睡眠的情况下是否能通过网络唤醒。这一步我可以成功。系统进入睡眠后,发送魔术包,键盘灯马上就能亮起。但是关机后,则无法唤醒。这个时候通过登录路由器后台,可以发现,当电脑完成关机后,会马上从路由器后台的在线设备上下掉。说明关机后,主板并没有向网卡供电。 查阅资料后,尝试了以下的办法:

  • 在电源管理中,将"快速启动"取消勾选
  • 在电源管理中,修改高级电源设置,将Link State Power ManagementSettingOff修改为Moderate power saving
  • 网卡的属性>高级选项卡中,Green EthernetEnergy-Efficient EthernetPower Saving Mode这些关于节能的选项统统设为Disabled 无奈尝试了诸多方法,反复开关机后,都无法解决关机后网卡断电的问题,无奈只能回到BIOS的思路上来。因为问题最有可能出在BIOS上

7.修改BIOS成功

我在B站又找到了这个视频: 联想拯救者R9000P 解锁BIOS高级选项 升级内存 视频下方提供了一个国外大神只做的工具: [TOOL] Lenovo (H20) Bios Unlocker and Locker 视频里和帖子里的拯救者都是最近的较新的型号,用的是最新的图形化BIOS。但是我在帖子里看到,有位老铁的Y700 15-ISK用这个工具解锁成功。这个型号和我的电脑差不多是同一个时间点推出的。抱着试一试的心态,不行的话要么买编程器回来,要么RNM618直接换新了。。。 下载了exe工具下来,以管理员身份运行,运行完后提示The system could not find the environment option that was entere。但是帖子里有提到这一点。所以直接重启按F2,欧了

8.查找唤醒相关的BIOS参数

解锁菜单后,由于BIOS中的条目是在纷繁复杂,由于在SetupUtility的反编译文件同样为我们提供了关于菜单相关的条目,所以从这个文件中找线索。 搜索Power,最后是直接搜索Wake,发现了这堆内容,厚礼蟹~

0x9FB88 		Suppress If: {0A 82}
0x9FB8A 			Variable 0xAD8 equals 0x20 {12 06 D8 0A 20 00}
0x9FB90 			Setting: DeepSx Power Policies, Variable: 0x4 {05 91 72 0A 73 0A F6 02 05 00 04 00 10 10 00 06 00}
0x9FBA1 				Option: Disabled, Value: 0x0 {09 07 04 00 30 00 00}
0x9FBA8 				Suppress If: {0A 82}
0x9FBAA 					Variable 0xAE3 equals 0x2 {12 86 E3 0A 02 00}
0x9FBB0 						Variable 0xAE3 equals 0x4 {12 06 E3 0A 04 00}
0x9FBB6 						Or {16 02}
0x9FBB8 						Variable 0xAE3 equals 0x3 {12 06 E3 0A 03 00}
0x9FBBE 						Or {16 02}
0x9FBC0 					End {29 02}
0x9FBC2 					Option: Enabled in S4-S5/Battery, Value: 0x3 {09 07 74 0A 00 00 03}
0x9FBC9 					Option: Enabled in S3-S4-S5/Battery, Value: 0x5 {09 07 76 0A 00 00 05}
0x9FBD0 					Option: Enabled in S3-S4-S5, Value: 0x6 {09 07 77 0A 00 00 06}
0x9FBD7 				End If {29 02}
0x9FBD9 				Option: Enabled in S4-S5, Value: 0x4 {09 07 75 0A 00 00 04}
0x9FBE0 			End of Options {29 02}
0x9FBE2 		End If {29 02}
0x9FBE4 		Setting: LAN Wake From DeepSx, Variable: 0x5 {05 91 78 0A 79 0A F7 02 05 00 05 00 10 10 00 01 00}
0x9FBF5 			Option: Enabled, Value: 0x1 {09 07 03 00 00 00 01}
0x9FBFC 			Option: Disabled, Value: 0x0 {09 07 04 00 30 00 00}
0x9FC03 		End of Options {29 02}
0x9FC05 		Suppress If: {0A 82}
0x9FC07 			Variable 0x2F4 equals 0x0 {12 06 F4 02 00 00}
0x9FC0D 			Setting: Wake on LAN Enable, Variable: 0xC {05 91 E9 04 EA 04 F8 02 05 00 0C 00 10 10 00 01 00}
0x9FC1E 				Option: Enabled, Value: 0x1 {09 07 03 00 30 00 01}
0x9FC25 				Option: Disabled, Value: 0x0 {09 07 04 00 00 00 00}
0x9FC2C 			End of Options {29 02}
0x9FC2E 			Setting: SLP_LAN# Low on DC Power, Variable: 0xD {05 91 ED 04 EE 04 F9 02 05 00 0D 00 10 10 00 01 00}
0x9FC3F 				Option: Enabled, Value: 0x1 {09 07 03 00 30 00 01}
0x9FC46 				Option: Disabled, Value: 0x0 {09 07 04 00 00 00 00}
0x9FC4D 			End of Options {29 02}
0x9FC4F 			Setting: K1 off, Variable: 0xE {05 91 EB 04 EC 04 FA 02 05 00 0E 00 10 10 00 01 00}
0x9FC60 				Default: Other {5B 85 00 00 08}
0x9FC65 					Value {5A 82}
0x9FC67 						Variable 0xAD8 equals value in list (0x73, 0x74) {14 8A D8 0A 02 00 73 00 74 00}
0x9FC71 							64 Bit Unsigned Int: 0x1 {45 0A 01 00 00 00 00 00 00 00}
0x9FC7B 							64 Bit Unsigned Int: 0x0 {45 0A 00 00 00 00 00 00 00 00}
0x9FC85 							Conditional {50 02}
0x9FC87 						End {29 02}
0x9FC89 					End {29 02}
0x9FC8B 				End {29 02}
0x9FC8D 				Option: Enabled, Value: 0x1 {09 07 03 00 30 00 01}
0x9FC94 				Option: Disabled, Value: 0x0 {09 07 04 00 00 00 00}
0x9FC9B 			End of Options {29 02}
0x9FC9D 			Setting: EFI Network, Variable: 0x210 {05 91 F9 04 FA 04 FB 02 34 12 10 02 10 10 00 01 00}
0x9FCAE 				Option: Enabled, Value: 0x1 {09 07 03 00 00 00 01}
0x9FCB5 				Option: Disabled, Value: 0x0 {09 07 04 00 30 00 00}
0x9FCBC 			End of Options {29 02}
0x9FCBE 		End If {29 02}
0x9FCC0 		Setting: Wake on WLAN and BT Enable, Variable: 0xF {05 91 EF 04 F0 04 FC 02 05 00 0F 00 10 10 00 01 00}
0x9FCD1 			Option: Enabled, Value: 0x1 {09 07 03 00 00 00 01}
0x9FCD8 			Option: Disabled, Value: 0x0 {09 07 04 00 30 00 00}
0x9FCDF 		End of Options {29 02}
0x9FCE1 		Suppress If: {0A 82}
0x9FCE3 			Variable 0x2FC equals 0x0 {12 06 FC 02 00 00}
0x9FCE9 			Setting: DeepSx Wake on WLAN and BT Enable, Variable: 0x10 {05 91 F1 04 F2 04 FD 02 05 00 10 00 10 10 00 01 00}
0x9FCFA 				Option: Enabled, Value: 0x1 {09 07 03 00 00 00 01}
0x9FD01 				Option: Disabled, Value: 0x0 {09 07 04 00 30 00 00}
0x9FD08 			End of Options {29 02}
0x9FD0A 		End If {29 02}

在BIOS下找到对应的条目,藏在Advanced>PCH-IO Configuration下。百度了下,pch全称为Platform Controller Hub,是intel公司的集成南桥。我没搞懂为什么会藏在这里?

  • : 网上搜到的文件:ipc_bios_user_manual_en-US.pdf 里面提到了:If enabled (Enabled), the devices switches itself to idle state, a mode with the lowest power consumption.如果启用 (Enabled),设备会将自身切换到空闲状态,这是一种功耗最低的模式。 这个条目一共有如下的选项
  • : DeepSx的意思是Deep Sleep State,直译过来就是深度睡眠状态,所以LAN Wake From DeepSx整句话翻译过来就是深度睡眠状态下的局域网唤醒
  • : WLAN:就是无线拉,BT就是Bluetooth蓝牙

找到这里,基本上可以认为离成功只差一步之遥了。首先DeepSx Power Policies肯定要开的,看字面意思,直接S4-S5就可以,S4是休眠状态,S5是关机状态。关于这部分内容,上面这篇文章有提到:WOL 网络唤醒避坑指南:常见问题的分析与内容补充。然后就是LAN Wake From DeepSx要Enabled,这就解决了嘛~

结果却出乎意料:在漫长的开机关机过程中,尝试了这三个条目的所有选项,都没能搞定关机后网卡断电的问题。怀疑是在Power的选项上出了问题:主板是硬件,而BIOS是软件,当修改了具体的BIOS参数后,硬件肯定无法主动识别到相关的修改,肯定是由BIOS去触发相应的电路开关进行修改。而曾经的Power选项是隐藏的,是否BIOS从未触发修改过这些隐藏的数值?所以尝试,将Wake on PME的Enabled设置为Disabled,开关机后,重新设置为Enabled,仍然无效

9.Wake on AC

折腾到这里已经晚上11点了,累的一笔。打算放弃,洗澡上床睡觉。结果洗澡的时候灵光闪现,恍恍惚惚中想到了偶然看到的State After G3这个参数。 这里头点进去,有两个选项,S0和S5,分别对应开机和关机

State After G3:G3这个状态好像是系统异常关机,例如停电之类的偶然事件导致的关机。所以为啥里头有一个S0呢?试试看?把这个值设置为S0,行不行就看G3这个状态如何定义了。如果关机后关闭插座电源也属于G3状态,那就妥了。但是又觉得不太合理?洗完澡,抱着试一试的心态,已经不抱什么希望了。关机,关电源插座,开插座,键盘灯亮了,它居然亮了?

最后就是在天猫精灵中设置每天晚上0点关闭插座,这样第二天只要唤醒插座,电脑就会自动开机了


总结

State After G3

虽然成功实现了通电自启,但是这个开关State After G3看名字好像不是给通电开机用的。不知道打开这个东西会不会对硬件造成损坏(电压不稳之类的),然而我对硬件也不太懂,有机会再做进一步研究把,但愿我的拯救者还能再活五百年

Wake on Lan

折腾Wake on Lan花了很长时间,最后没有效果很郁闷,想了下大概有几个原因把,等有机会再来更新:

  • 我用FPTW64刷BIOS刷出问题了
  • 大神的Unlock执行文件把BIOS改出问题了
  • 要实现WOL,还有其它BIOS开关要打开(感觉是这个)
  • 这个BIOS对WOL的适配有问题

标签: y520高静压变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台