本帖最后由 bohos2008 于 2026-11-15 09:34 编辑
校园网只发 5GHz,我这台老 E431 却只有 2.4GHz 单频网卡。下单 Intel Wireless-AC 7260、拆机装好,开机被一行 1802 拦在 BIOS 里。这篇把后来查到的机制、做过的验证、以及最终怎么给 BIOS 打补丁,从头到尾记一遍。 序:一个只发 5GHz 的校园网
开学回校连 Wi-Fi,手机和同学的笔记本都能搜到校园网,我这台 ThinkPad E431 的可用网络列表里却干干净净。去信息中心问了一趟,答复很干脆:2.4GHz 因为太挤已经关停,现在只提供 5GHz 接入,没有 2.4G 可选。 问题一下落到硬件上。原装网卡只支持 2.4GHz,射频层面就听不见 5GHz,系统里刷新、重置、换信道全是白忙——这不是网速快慢,是连不连得上。我翻出抽屉里闲置的 RTL8723BE,查完规格又放了回去,同样是单频卡;于是下单了一块 Intel Wireless-AC 7260:2x2、双频、5GHz 867Mbps。 拆后盖、拧螺丝、把两根天线扣回去,合盖开机。屏幕亮起,没有熟悉的开机声,只有一行字: 1802: Unauthorized network card is plugged in - Power off and remove the network card.
1802: 插入了未经授权的网卡 - 关闭电源并卸下网卡。 当时还不知道,这行字跟驱动、跟信号、跟 Windows 都没关系。后面几天的功课,比换一块网卡麻烦得多。 一、先把这台机器和它的硬件 ID 说清楚
后面所有判断都以实际读数为准,不靠猜。我在本机做了一遍只读枚举: 项目 | 实测值 | | 机型 / 机器类型 | LENOVO ThinkPad E431,MT 62772E2(Win32_ComputerSystem.Model、BaseBoard 均为 62772E2) | | BIOS | HEET52WW (1.33),2018-06-21 | | 芯片组 | Intel HM77(8086:1E57);另有 ME 接口 8086:1E3A | | 原装 WLAN | Broadcom BCM43142,PCI\VEN_14E4&DEV_4365&SUBSYS_061117AA&REV_01,1x1 / 2.4GHz | | 原装蓝牙 | USB\VID_04CA&PID_2007,Broadcom Bluetooth 4.0 | | 有线网卡 | Realtek RTL8168,PCI\VEN_10EC&DEV_8168&SUBSYS_501817AA |
两个细节后面会用到:无线网卡 MAC 与蓝牙 MAC 只差末位(同一块 combo 卡共用地址池,具体值不公开);SUBSYS_061117AA 里 17AA 就是 Lenovo 的子系统厂商号。 联想官方平台规格(ThinkPad_E431_Spec.PDF)也写明:全机只有 One PCI Express Half Mini Card slot,Bluetooth 4.0 是 integrated in selected WLAN PCIe Half Mini Card。记住这句,第五节那个「蓝牙会不会冲突」的疑问就迎刃而解了。 二、选型:两块卡,只有一块真的能上 5GHz
| RTL8723BE | Intel Wireless-AC 7260 HMW | | 频段 | 仅 2.4GHz | 2.4 / 5GHz 双频 | | 规格 | 802.11b/g/n,1T1R 150Mbps | 802.11ac,2x2,5GHz 867Mbps | | 5GHz 射频 | 芯片里根本没有 | 有(另有 Wireless-N 7260 版本为 5GHz 300Mbps) | | 总线 ID | Realtek PCIe;BT 走 USB | 8086:08B1;BT 走 USB 8087:07DC |
RTL8723BE 官方规格就是 2.4GHz 单频,换上去等于原地踏步,而且它跟我原机那类单频卡本来就是同一档。7260HMW 是 PCIe 半高 mini card,物理上完全插得进 E431 的 WLAN 槽,也是唯一能补上 5GHz 的那块。 偏偏就是它报了 1802。去翻资料发现这不是个例:BIOS-mods 上 2015 年就有人记录给 E431 装 AC-7260 报 1802,2021 年国内有人换 AX200,同一行字。 三、1802 是什么,为什么装驱动、改注册表都没用
联想官方知识库对这条报错的归因毫不遮掩:「此报错一般是主板 BIOS 不支持网卡导致,也就是 BIOS 的白名单没有这个型号的网卡」。硬件维护手册给的处置更直接:1. 卸下网卡;2. 更换主板。 关键在于它出现的时机:POST 阶段,操作系统还没加载。我连设备管理器都来不及打开,任何驱动、注册表、设备管理器层面的操作都够不着它。重新插拔、清灰、换天线当然也一样。 四、白名单真正校验的是 PCI 子系统 ID
不少人以为 BIOS 只看 vendor/device ID,其实联想认的是 PCI 子系统 ID——原厂 FRU 卡里烧了联想定制的号。对照第一节那串读数就很清楚了: 原装卡(通过): PCI\VEN_14E4&DEV_4365&SUBSYS_061117AA ← 17AA = Lenovo零售 7260(拦下): 8086:08B1 + Intel 原生子系统 ID ← 无 17AA零售版 7260 型号再主流、驱动再全,POST 一律判「未经授权」。这也解释了为什么同一块零售卡插别的品牌笔记本好好的,进 ThinkPad 就变砖头。所谓「改网卡 ID 伪装成联想卡」对 Intel 7260 实操困难,老 ThinkPad 的 no-1802 只适用 T4x 时代,都不用浪费时间。 顺带说清一个边界:白名单只校验 WLAN 的 PCI 设备,蓝牙走 mini PCIe 槽的 USB 引脚,本来不在校验范围内;只是 1802 直接中止开机,这点没有实际意义。 五、免刷的三条路,以及那个「蓝牙会不会打架」的疑问
路线一(推荐):换联想 FRU 04W3763 / 04W3764,Broadcom BCM943228HMB(BCM43228 + BCM20702),2x2 802.11abgn、2.4/5GHz 双频 300Mbps + BT4.0。两个编号是同一块卡的不同 FRU 批次,不是「一个带蓝牙一个不带」。它在 E431 官方零件表内,装上直接开机、不报错、不动 BIOS。要说清楚:这是 802.11n 的 5GHz,不是 WiFi 5 ac,但「对上校园网只发的 5GHz 信号」完全够用。 这里有个高频疑问:新卡带蓝牙,原机本来也有蓝牙,会不会冲突?不会。PSREF 已经写明 E431 只有一个 mini PCIe 槽、蓝牙集成在 WLAN 卡里,主板上没有独立蓝牙模块——旧卡一拔,旧 WiFi 和旧蓝牙一起走;本机两个 MAC 连号正是 combo 卡的证据。新旧卡蓝牙同属 Broadcom BCM20702 系,驱动一套,插上大概率就认。Windows 本身也只允许一个本地蓝牙 radio(真凑出两个,第二个会报代码 10),而这台机器根本凑不出两个。 换 2x2 卡要注意三件事:原卡 1x1 可能只接了 MAIN 灰线,AUX 黑线必须补上;蓝牙地址随卡更换,已配对设备要删掉重配;设备管理器残留的灰色旧条目,开「显示隐藏设备」卸载即可。 路线二:USB 双频网卡,零风险,代价是长期占一个 USB 口。 路线三:改 BIOS 白名单,把手上这块 7260 用起来。下面几节都是围绕它做的验证。 六、我试过「直接软件刷」,三道锁把路堵死了
我写了一个纯只读的自检脚本在本机跑了一遍,读到的就是这台 E431、BIOS 1.33——所以下面的判定不是泛泛推测,是针对实际机器的。结论:读可以、改可以,写不回去。 - 官方刷写通道:E431 更新包是单个 .FL1(BIOS+EC 合并),官方命令类似 winflash64 /ipf bios ec /file xxx.FL1 /sd。改过的镜像过不了 RSA 签名 capsule 校验(对应 NIST SP 800-147 的固件保护要求),/sd 只跳过版本检查。同代 S1 Yoga 上有人试 /sv /sd,到烧写阶段直接蓝屏重启。
- 底层直写:FPT / flashrom / AFUWIN / RWEverything 被 PRR + BIOS_CNTL.BLE + SMM_BWP + Flash Descriptor 拦住,E431 上的典型报错是 Error 280: Failed to disable write protection for the BIOS space。bios-mods 版主的结论很直白:只能 SPI 编程器 + SOIC8 夹子。
- 竞态漏洞:联想 LEN-2015-001「Speed Racer」公告里 E431/E531 确实受 BIOSWE/BLE 竞态影响,但修复版本是 HEET47WW (1.28);我这台 1.33 又启用反回刷,降不回去。即便停在 1.25,那个窗口是微秒级,PoC 只够改几个字节,写不进 4MB 整块固件。
七、我把官方 BIOS 包拆开看了一遍
为了确认「下载官方包 → 改几个字节 → 软件刷回去」是否可行,我下载了 heuj19ww.exe(约 7MB)和光盘镜像 heuj19wd.iso(约 17MB)做验证: - ISO 里能搜到 13 处 _FVH 固件卷签名,但多数是散落的随机字节。给分析工具加上 FV Header 合法性过滤(ZeroVector 全 0、FvLength 4KB 对齐且 ≤16MB、HeaderLength 合规、完整落在文件内)后,合法固件卷从 13 个降到 4 个;同时去掉了 17AA 之类的噪音命中,自测仍通过。
- 全文搜不到 LenovoWmaPolicyDxe、Whitelist、1802 等明文 → 官方更新包是压缩 / 签名封装的固件,不是芯片里的裸 dump。
- 更重要的是,它不含这台机器的 UUID、序列号、NVRAM。拿它当编程器镜像刷,轻则丢机器唯一数据,重则直接点不亮。
所以「软件」能做到的边界很清楚:RWEverything 导出报告或 FPTw64 -d backup.bin -bios(-d 是读)可以拿到 dump,改文件可以离线做,只有写回绕不过硬件。 八、为什么不做一份「通用改版 BIOS」给大家直刷
有人建议把改好的镜像发出来给同型号的人直接用,这条路我不走,理由很硬: SPI 芯片里不只有 BIOS 区,还有 Flash Descriptor、Intel ME 固件区(本机确有 ME 接口)、GbE 区、平台 NVRAM,以及逐台唯一的 UUID、序列号、网卡 MAC,还有这一代 Win8 机型常见的 MSDM/OA 密钥表。刷别人的整片镜像,等于把别人的身份写进自己主板:资产与保修信息错乱、两台机器撞 MAC、Windows 激活异常;Descriptor 或 ME 区不匹配时可能直接不亮。BIOS 版本相同也不保险,NVRAM 变量、启动顺序、supervisor 密码都是逐台独立的。 能共享的是补丁方法,不是镜像。 正确的原则是:只改自己 dump 里的白名单模块,其余字节一个不动。 九、硬件刷路径与已知副作用
已有成功案例的完整参数:拆到主板,用 CH341A + SOIC8 夹子读 U6 位的 cFeon EN25Q32(4MB),旁边 U5 的 QH64(8MB)不要动;芯片位号可能随批次变,一律以编程器实际读到的 ID 为准。读出备份后,用 UEFITool 删除 LenovoWmaPolicyDxe.efi,另存,再擦除 → 查空 → 写入 → 校验。 副作用要提前知道:刷完原装博通卡会变成「代码 10」;机器失保修;之后不能再运行官方 BIOS 更新程序(会把白名单刷回来)。在没有编程器之前,任何写命令都不要碰。 十、最后:如何用写好的补丁给自己的 BIOS 打上
先把概念说准:这里说的「写好的补丁」不是一份能刷进任意 E431 的通用镜像,而是我写好的补丁工具 e431_bios_tool.py。它对你自己 dump 出来的固件做定点修改,把目标模块整段置 0xFF(等效 UEFITool 的 Remove),输出一个文件大小、所有偏移、无关字节都不变的 patched.rom。工具的 selftest 已在合成固件卷上通过,但只在合成固件上验证过;真实 dump 到手一定要先 analyze 再决定,不要盲删。 配套还有一个纯只读的 e431_softflash_probe.py,用来查 BIOS 版本、分析镜像是不是裸 dump、打印安全命令清单,全程不碰寄存器和固件。 步骤: # 0. 准备:CH341A 编程器 + SOIC8 夹子;断电、拔电池、防静电# 1. 读出整片,连读两次并比对,另存两份原始备份certutil -hashfile E431_read1.rom SHA256certutil -hashfile E431_read2.rom SHA256 # 两次必须完全一致cp E431_read1.rom E431_original.rom # 备份至少两份# 2. 确认编程器识别到的芯片型号与容量(以读数为准,勿照抄 U5/U6 位号)# 3. 先分析,定位白名单模块与固件卷结构python e431_bios_tool.py analyze E431_original.rompython e431_bios_tool.py analyze E431_original.rom --jsonpython e431_softflash_probe.py --image E431_original.rom# 4. 打补丁(建议先预演)python e431_bios_tool.py patch E431_original.rom -o E431_patched.rom --auto --dry-runpython e431_bios_tool.py patch E431_original.rom -o E431_patched.rom --auto# 需要指定模块时: --module <GUID># 5. 核对:大小完全一致、SHA256 不同、差异只落在目标模块范围内certutil -hashfile E431_original.rom SHA256certutil -hashfile E431_patched.rom SHA256# 6. 写回:擦除 → 查空 → 写入 → 校验# 7. 装上 7260,MAIN + AUX 两根天线都接好,进系统装驱动几个容易翻车的点: - --auto 只挑「含白名单强特征」的唯一模块;真实固件里模块可能被压缩或换名,返回「未找到」时应回到 analyze 输出人工判断,不要随便挑一个 GUID 填进去。
- analyze 里会列出 PCI ID 命中情况和 FV 校验状态,补丁前后各跑一次比对,确认没有波及其他模块。
- 写入一旦中断或镜像不合法,机器变砖且没有其他恢复手段——CH341A 既是刷写工具,也是唯一的救砖工具。
- 只读与写入命令务必分清:FPTw64 -d(读)安全,FPTw64 -f、flashrom -w、winflash64 /ipf ... /file ... 都是写,没有编程器在手时一条都别执行。
如果只想安安静静连上校园网,其实不用走到这一步:一块 FRU 04W3763,十分钟,BIOS 一根手指都不用动。真想把手上这块 7260 用起来,再按上面的流程走。
本文涉及固件写入与硬件改装,不在联想官方支持范围内,可能失去保修并导致主板变砖,后果自负。操作前请完成备份与两次读回校验,确认芯片型号、容量与接线方向;文中型号与编号请以自己机器的实际读数和联想官方 FRU 清单为准。请勿公开发布含 MAC、序列号、UUID 的完整 dump 或截图。 |