dmidecode -t memory 是唯一能稳定读取原始 spd 数据的命令,提供 part number 等颗粒级溯源关键字段;manufacturer 和 speed 字段需结合 handle 分组提取并过滤空插槽,且 part number 需查厂商文档反推具体颗粒型号。

dmidecode -t memory 是唯一能拿到颗粒级信息的命令
Linux 下想看到内存条的颗粒(如单颗芯片型号、位宽、厂商代号),必须走 SMBIOS/DMI 表这条路——dmidecode -t memory 是目前唯一能稳定读取原始 SPD 数据的工具。其他命令如 lshw、/proc/meminfo 或 lsmem 都不接触 SPD,自然看不到颗粒细节。
注意:颗粒信息(比如 Micron MT40A512M16JE-083E 或 Samsung K4AAG085WB-BCTD)一般不会直接出现在 dmidecode 输出里。它只提供 Part Number(如 M378A2K43CB1-CTD),而这个编码需查厂商公开文档才能反推出颗粒型号。但 Part Number 本身已是颗粒级溯源的关键入口。
- Part Number 字段(
Part Number:)是识别颗粒的起点,不同厂商命名规则不同:三星以 M 开头,海力士以 HMA 开头,镁光常用 MT 开头 - Manufacturer 字段(
Manufacturer:)若显示为0x0000或NO DIMM,说明 BIOS 没写入或 SPD 数据损坏,不能据此判断颗粒真伪 - Type 字段(
Type:)和 Speed 字段(Speed:)共同约束颗粒规格:例如 DDR4-3200 对应 MT/s 值,实际颗粒标称频率需匹配
为什么 grep Speed: 总是漏掉或错配
dmidecode -t memory 的输出不是扁平结构,每个内存条对应一个 Handle 块,而 Speed: 和 Part Number: 可能分属不同子 Handle(比如主 Handle 描述插槽,子 Handle 描述 SPD 数据)。直接 grep Speed: 容易把 A 槽的 Part Number 和 B 槽的 Speed 拼在一起,结果完全不可信。
- 先用
sudo dmidecode -t memory | grep -A2 -B2 "Size: [0-9]\+ GB"确认哪些插槽真有内存 - 再用
awk按 Handle 切分处理,确保Slot:、Size:、Part Number:、Speed:四者来自同一物理条 - 空插槽(
Size: No Module Installed)会带出残缺字段,必须过滤,否则干扰判断
decode-dimms 能读 SPD 芯片但依赖 I2C 总线可用性
如果主板 BIOS 支持且 I2C 总线驱动已加载,decode-dimms(来自 i2c-tools 包)可直接读取内存条 SPD EEPROM,理论上比 dmidecode 更接近颗粒原始数据。但它不是万能的:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 需要启用内核配置
CONFIG_I2C_DESIGNWARE_PLATFORM=y,很多云主机或精简系统默认关闭 - 执行前得先探测 I2C 适配器:
sudo i2cdetect -l,没输出就说明硬件不支持或驱动未加载 - 即使探测到适配器,
sudo decode-dimms也可能报错No SMBus driver installed,此时要装linux-modules-extra或手动 modprobe - 部分 DDR5 内存条使用 SMBus 3.0 或 DMI 3.0 协议,老版本
decode-dimms不识别,会返回空或乱码
别指望 /sys/firmware/dmi/tables/ 提取颗粒编码
虽然 sudo strings /sys/firmware/dmi/tables/DMI | grep -i "part\|manufacturer" 看起来免装工具,但它输出的是原始二进制字符串流,没有字段边界。Part Number 很可能被截断、拼接错误,或者根本没写进 DMI 表——尤其国产 BIOS 或笔记本固件常省略 SPD 数据。
更关键的是:颗粒信息(如芯片丝印)压根不在 DMI 规范定义字段里,它只存在于 SPD EEPROM 的特定地址(如 DDR4 SPD offset 0x40~0x7F),而 /sys/firmware/dmi/tables/ 只导出 SMBIOS 表,不包含 SPD 原始字节。想靠它反推颗粒型号,成功率极低。
真正要确认颗粒,得结合 dmidecode 拿到 Part Number,再查厂商官网 datasheet 或用第三方数据库(如 Crucial Scanner、Kingston Finder)交叉验证——这一步没法自动化,必须人工介入。










