这次最关键的不是某一条命令,而是整条证据链:两根新装的 Micron 16GB DDR4-3200 在这台 i7-9750H 笔记本上被 BIOS 实际跑到了约 3200,Memtest86+ 很快出现大量错误;把隐藏 BIOS 里的 Maximum Memory Frequency 固定到 2667 MHz 后,32GB 双通道内存在同一套测试里不再报错。
下面记录的是神舟 / Clevo NH5x_7xRCx,RDx、BIOS 1.07.13wTHZX4 这台具体机器的排查和修复过程。以后如果频率又回到 3200,并再次出现随机蓝屏或 Linux 崩溃,可以直接沿着文末的快速流程处理,不必先把 Windows、驱动和 SSD 全部重查一遍。
风险提醒:
setup_var.efi可以直接读写 UEFI 变量,写错变量、实例或偏移可能造成无法启动,项目作者也明确提示存在“变砖”风险。本文的Setup(0):0x133只适用于文中已核对的固件环境,不能照搬到其他型号、其他 BIOS 版本。开始前请备份重要数据和 BitLocker 恢复密钥;读取结果、变量数量或尺寸与本文不一致时立即停止。
机器配置与故障表现
| CPU | Intel Core i7-9750H |
| 主板系列 | NH5x_7xRCx,RDx |
| BIOS | 1.07.13wTHZX4 |
| EC | 1.07.05HE1 |
| 新内存 | Micron 16GB × 2 DDR4-3200,共 32GB |
换上新内存后,Windows 会随机蓝屏,而且终止代码并不固定,出现过:
KMODE_EXCEPTION_NOT_HANDLED (0x1E)
SYSTEM_SERVICE_EXCEPTION (0x3B)
SYSTEM_THREAD_EXCEPTION_NOT_HANDLED (0x7E)
Ubuntu 也会崩溃,这一点很重要:它让“单纯是某个 Windows 驱动或系统文件损坏”的解释变得很弱。问题更像位于两个系统共同依赖的硬件、固件或内存训练环节。
证据怎样指向 3200 MHz
默认设置下,Memtest86+ 显示内存控制器约为:
IMC ≈ 1595 MHz
DDR4-3190
CAS 22-22-22-52
测试开始十几秒就会出现几十、几百乃至上千个 Error。把两根 16GB 内存拆开单测、交换插槽,结果仍然会报错,因此不像是单独某一根内存或某一个插槽损坏。
旧 DDR4-2666 内存在同一台机器上可以正常运行,BIOS 显示 DRAM Frequency: 2667 MHz。Intel 对 i7-9750H 公布的内存类型也是 DDR4-2666 / LPDDR3-2133。当新内存被限制到 2667 MHz 后,Memtest86+ 从约 DDR4-3190 回到 DDR4-2666,错误随之消失。
| 状态 | 检测频率 | Memtest86+ 结果 |
|---|---|---|
| 新内存,BIOS 默认 | 约 DDR4-3190 | 十几秒内大量报错 |
| 旧 DDR4-2666 | BIOS 显示 2667 MHz | 日常运行正常 |
| 新内存,手动限制 | 约 DDR4-2666 | 实测约 5 分钟 0 Error |
这条证据链足以把本机的直接触发条件锁定在“新内存以约 3200 运行时不稳定”。不过,5 分钟零错误只能作为修复方向正确的快速确认,不等于完整稳定性认证。正式长期使用前,建议至少跑完多轮测试,最好再配合一夜压力测试和两个系统的实际使用验证。
准备 FAT32 U 盘与 UEFI Shell
U 盘格式化为 FAT32,准备 x86-64 版本的 UEFI Shell 和 datasone/setup_var.efi。i7-9750H 是 x86-64 平台,不要下载 aarch64 构建。示例目录如下:
U:\
├─ setup_var.efi
├─ shellx64.efi
└─ EFI\
└─ BOOT\
└─ BOOTX64.EFI
插着 U 盘进入 BIOS,通过 Boot From File 找到并运行 shellx64.efi。进入 Shell> 后刷新设备映射:
map -r
本次机器上 U 盘是 FS0:。不同机器可能不是这个编号,应该逐个查看并用 ls 确认文件,不能盲目假设:
fs0:
ls
确认能看到 setup_var.efi、shellx64.efi 和 EFI 目录后再继续。
先确认 Setup 变量,再临时解锁隐藏菜单
先只读,不要直接写。执行:
fs0:\setup_var.efi Setup:0x133
这台机器会列出两个同名 Setup 变量:
ID VarName Size
0x0 Setup 0x4B0
0x1 Setup 0x6C1
此前通过 lsefivar 进一步核对,真正需要修改的是 Setup(0),大小 0x4B0,对应 GUID 为 a04a27f4-df00-4d42-b552-39511302113d。另一个 Setup(1) 大小为 0x6C1,不要动。
精确读取目标实例:
fs0:\setup_var.efi Setup(0):0x133
正常情况下会返回:
Setup(0):0x133=0x00
确认变量名称、实例、尺寸和当前值都与上面一致后,才执行临时解锁:
fs0:\setup_var.efi Setup(0):0x133=0x01
写入后立即再次读取:
fs0:\setup_var.efi Setup(0):0x133
必须看到 Setup(0):0x133=0x01 才算写入成功。如果出现 write protected、security violation 或任何其他错误,立即停止,不继续尝试绕过保护。
在隐藏 Advanced 菜单中锁定 2667 MHz
在 UEFI Shell 输入 exit 回到 BIOS,然后进入 Advanced。解锁成功后,会出现原本看不到的菜单,例如 CPU Configuration、Power & Performance、Memory Configuration、System Agent (SA) Configuration 和 PCH-IO Configuration。
进入下面的路径:
Advanced
└─ Memory Configuration
└─ Maximum Memory Frequency
把 Maximum Memory Frequency 从 Auto 改为 2667 MHz。这里 BIOS 用 2667 表示 DDR4-2666,属于显示口径差异。其他内存训练、时序、电压和 System Agent 选项全部保持原样。
按 F10 保存并退出。中间可能出现一次断电、再上电,这是内存重新训练时可能出现的正常现象;如果机器持续无法启动,则不要反复强行写变量,应按该机型的官方恢复方式处理。
验证:不仅要看 BIOS,还要重新跑内存测试
装回两根 16GB DDR4-3200 内存,先在 BIOS 检查:
DRAM Frequency: 2667 MHz
然后再次运行 Memtest86+。正确状态应接近:
IMC: 1333 MHz (DDR4-2666)
Memory: 31.8 GB
Errors: 0
修复前,这套配置在 3200 状态下十几秒就会大量报错;修复后,本次快速复测运行约 5 分钟仍为 0 Error。频率变化、错误消失与旧内存的正常表现彼此吻合,因此可以较有把握地判断:在这台具体机器上,让这两根 Micron DDR4-3200 以约 3200 运行,会触发内存控制器或整条内存链路不稳定;限制到平台支持的 DDR4-2666 后恢复正常。
以后又变回 3200,直接走这份快速流程
先看 BIOS 左上角的 DRAM Frequency。如果重新显示 3200 MHz,同时蓝屏或 Linux 崩溃复发,可以按下面处理:
- 插入准备好的 FAT32 U 盘,启动
shellx64.efi。 - 用
map -r和ls找到 U 盘,不要固定假设一定是FS0:。 - 读取
Setup(0):0x133。 - 只有在变量信息仍与本文一致、当前值为
0x00时,才写入0x01。 - 再次读取,确认值为
0x01。 - 回到 BIOS,进入
Advanced → Memory Configuration。 - 把
Maximum Memory Frequency改为2667 MHz。 - 按
F10保存,重新运行 Memtest86+,确认显示 DDR4-2666 且无错误。
最核心的读取和写入命令是:
fs0:\setup_var.efi Setup(0):0x133
fs0:\setup_var.efi Setup(0):0x133=0x01
这个“显示隐藏菜单”的值可能在再次进入 BIOS 后自动恢复为 0x00,所以以后如需重新进入隐藏菜单,可能要再解锁一次;真正保存的 Maximum Memory Frequency = 2667 通常会继续保留,除非恢复 BIOS 默认设置、升级固件或其他操作将它清掉。
两件事不要做
第一,不要在这台机器上使用旧式、目标不够明确的命令:
setup_var_3 133 01
这台固件里存在两个同名 Setup 变量。datasone 的新语法专门提供了变量实例 ID,用来区分这种情况;本次修复必须明确写成 Setup(0)。
第二,不要随手执行 F9 / Load Optimal Defaults。恢复默认值很可能把 Maximum Memory Frequency 重新改回 Auto,新内存便可能再次跑到 3200。若确实需要恢复 BIOS 默认设置,完成后应第一时间复查内存频率,并重新跑 Memtest86+。
这次修复最后可以压缩成一句话:在这台 i7-9750H + NH5x_7xRCx,RDx + 两根 Micron DDR4-3200 的具体组合上,要在隐藏 BIOS 中把 Maximum Memory Frequency 固定为 2667 MHz。它不是所有 9750H 笔记本的通用偏方,而是一份有硬件范围、有前后对照、也有停止条件的故障复盘。