神舟 / Clevo NH5x_7xRCx,RDx 内存 3200 蓝屏修复记录

这次最关键的不是某一条命令,而是整条证据链:两根新装的 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.efishellx64.efiEFI 目录后再继续。

先确认 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 protectedsecurity violation 或任何其他错误,立即停止,不继续尝试绕过保护。

在隐藏 Advanced 菜单中锁定 2667 MHz

在 UEFI Shell 输入 exit 回到 BIOS,然后进入 Advanced。解锁成功后,会出现原本看不到的菜单,例如 CPU ConfigurationPower & PerformanceMemory ConfigurationSystem Agent (SA) ConfigurationPCH-IO Configuration

进入下面的路径:

Advanced
└─ Memory Configuration
   └─ Maximum Memory Frequency

Maximum Memory FrequencyAuto 改为 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 崩溃复发,可以按下面处理:

  1. 插入准备好的 FAT32 U 盘,启动 shellx64.efi
  2. map -rls 找到 U 盘,不要固定假设一定是 FS0:
  3. 读取 Setup(0):0x133
  4. 只有在变量信息仍与本文一致、当前值为 0x00 时,才写入 0x01
  5. 再次读取,确认值为 0x01
  6. 回到 BIOS,进入 Advanced → Memory Configuration
  7. Maximum Memory Frequency 改为 2667 MHz
  8. 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 笔记本的通用偏方,而是一份有硬件范围、有前后对照、也有停止条件的故障复盘。

上一篇 我花重金体验了 5 款顶级 AI:谁最惊艳,谁最能干活?
夏木

夏木

AI 辅助开发者 | 开源项目作者

"代码是最好的注释,注释是最差的代码。"

—— 夏木