DDR4 内存 SPD 数据读写工具,支持查看、编辑和写入内存条的 SPD (Serial Presence Detect) 数据。
- SPD 数据读取: 从内存条读取完整的 512 字节 SPD 数据
- SPD 数据写入: 将修改后的 SPD 数据写入内存条
- 十六进制编辑器: 直观的 HEX 视图,支持范围选择和多种复制格式
- 参数解析: 自动解析并显示内存参数(容量、速度、时序等)
- XMP 配置: 支持 XMP 2.0 配置文件的查看
- 制造商信息: 支持编辑制造商、部件号、序列号等信息
- 数据导入/导出: 支持 BIN 文件的导入和导出
显示内存的基本信息、时序参数、制造商和 XMP 配置概要。
查看和编辑内存的详细配置参数,包括模组类型、容量、速度等级和制造商信息。
完整的 HEX 编辑器,支持范围选择、右键复制(多种格式)和直接编辑。
本工具设计用于基于 CH341 或兼容芯片的 USB SPD 读写器。
默认支持的设备参数:
- Vendor ID (VID):
0x0483 - Product ID (PID):
0x1230
兼容设备类型:
- CH341A USB 编程器(带 SPD 读写功能)
- USB SPD 读写器/编程器
- 其他兼容 HID 协议的 SPD 读写设备
通信协议:
- 接口类型: USB HID
- I2C 地址:
0x50(标准 SPD EEPROM 地址) - 数据格式: 512 字节 (Page 0: 0-255, Page 1: 256-511)
- 页面切换命令:
- Page 0:
BT-I2C2WR360001 - Page 1:
BT-I2C2WR370001
- Page 0:
- DDR4 SDRAM (完整支持)
- UDIMM
- RDIMM
- SO-DIMM
- LRDIMM
- XMP 2.0 配置文件解析
- 支持 Profile 1 和 Profile 2
- 显示频率、电压、时序参数
| 平台 | 状态 | 说明 |
|---|---|---|
| Windows 10/11 | ✅ 完全支持 | 推荐平台,开箱即用 |
| Linux | 需要配置 udev 规则 | |
| macOS | ❌ 暂不支持 | 需要适配 IOKit 框架 |
- 应用签名要求: macOS 需要签名的应用程序才能访问 HID 设备
- IOKit 框架: 需要使用 Apple 的 IOKit 框架进行 USB 通信
- 公证要求: 分发需要 Apple 开发者账号进行公证 (Notarization)
后续版本将逐步适配 macOS 平台,敬请期待。
- 操作系统: Windows 10/11 (推荐), Linux (实验性)
- Python: 3.8 或更高版本
- 依赖库:
customtkinter- 现代化 GUI 框架hidapi- USB HID 设备通信
从 Releases 页面下载对应平台的可执行文件:
- Windows: 下载
SPDStudio-Windows-vX.X.X.zip,解压后运行SPDStudio.exe - Linux: 下载
SPDStudio-Linux-vX.X.X.tar.gz,解压后添加执行权限运行
git clone https://github.com/lvusyy/SPDStudio.git
cd SPDStudiopip install -r requirements.txt或手动安装:
pip install customtkinter hidapipython main.pyLinux 用户需要添加 udev 规则以允许非 root 用户访问 HID 设备:
# 创建 udev 规则
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="1230", MODE="0666"' | sudo tee /etc/udev/rules.d/99-spd-reader.rules
# 重新加载规则
sudo udevadm control --reload-rules
# 重新插拔设备后即可使用- 将 SPD 读写器连接到电脑 USB 端口
- 将内存条安装到读写器上
- 启动程序,点击 "连接设备" 按钮
- 确保设备已连接
- 点击 "读取 SPD" 按钮
- 等待读取完成(约 10-15 秒)
- 数据将显示在各个选项卡中
- 在 "详细参数" 选项卡中点击 "Edit" 按钮
- 可编辑:制造商、部件号、序列号、模组类型等
- 在 "HEX 视图" 选项卡中双击字节进行编辑
- 支持键盘直接输入十六进制值
- 右键菜单支持多种复制格式
- 完成编辑后,点击 "写入 SPD" 按钮
- 确认写入操作
- 等待写入完成
- 重要: 写入完成后需要重启电脑使更改生效
- 导出: 文件 → 导出 SPD → 保存为 .bin 文件
- 导入: 文件 → 导入 SPD → 选择 .bin 文件
SPDStudio/
├── main.py # 程序入口
├── README.md # 本文档
├── CHANGELOG.md # 版本更新日志
├── requirements.txt # Python 依赖
├── samples/ # 示例 SPD 数据文件
│ ├── DDR3_*.bin
│ └── DDR4_*.bin
├── screenshots/ # 软件截图
├── .github/workflows/ # CI/CD 工作流
│ └── release.yml # 自动构建发布
├── src/
│ ├── __init__.py
│ ├── core/ # 核心逻辑
│ │ ├── driver.py # 硬件驱动层
│ │ ├── model.py # 数据模型
│ │ └── parser/ # SPD 解析器
│ │ ├── ddr4.py # DDR4 解析
│ │ └── manufacturers.py # 制造商数据库
│ ├── gui/ # 图形界面
│ │ ├── app.py # 主应用程序
│ │ ├── tabs/ # 选项卡页面
│ │ └── widgets/ # UI 组件
│ └── utils/ # 工具函数
│ └── constants.py # 常量定义
| 字节范围 | 内容 |
|---|---|
| 0-127 | 基本配置参数 |
| 128-255 | 模组特定参数 |
| 320-383 | 制造商信息 |
| 384-511 | XMP 配置 |
| 偏移 | 描述 |
|---|---|
| 0x000 | SPD 字节使用量 |
| 0x002 | DRAM 设备类型 (0x0C = DDR4) |
| 0x003 | 模组类型 |
| 0x004 | 密度和 Bank |
| 0x012 | 最小时钟周期 (tCK) |
| 0x140 | 制造商 ID |
| 0x149 | 部件号 (20 字符) |
| 0x180 | XMP 头部 |
- 数据备份: 修改前请务必导出原始 SPD 数据作为备份
- 兼容性: 不当的 SPD 修改可能导致系统无法启动
- XMP 时序: 修改 XMP 时序需要了解内存超频知识
- 硬件保护: 部分内存条的 SPD 可能有写保护
- 检查 USB 连接是否稳固
- 确认驱动程序已正确安装
- 尝试更换 USB 端口
- 检查设备管理器中是否识别到 HID 设备
- 检查内存条是否正确安装在读写器上
- 确认内存条的金手指接触良好
- 尝试重新插拔内存条
- 使用读写器恢复备份的 SPD 数据
- 检查修改的参数是否在合理范围内
MIT License
欢迎提交 Issue 和 Pull Request!


