Repository navigation
Releases: skbskhud/p104-unlock-v3
Release list
v3.3 — P104-100:Gen2 x4 + x16 声明 + 20ms 恢复 + 宽度重训(工具 v1.2)
v3.3 — P104-100:Gen2 x4 + x16 声明 + 20ms 恢复 + 宽度重训(工具 v1.2)
发布:2026-10-31 · 双仓库同步分发(本仓库 + p104-gen2-unlock)
下载
| 资产 | 说明 |
|---|---|
P104-2.0x16-v1.2.zip |
Windows 一键包(推荐) |
P104-methodology-AI-agent.md |
破解方法论 + AI agent 指南 |
P104-open-source-toolchain.zip |
Python 实验工具链(只读探针/写通道/宽度配方/硬件锁) |
包内文件:
P104-2.0x16-v1.2/
├─ 自动解锁.cmd ← 推荐(管理员运行;装好后窗口可关)
├─ 状态.cmd ← 只读查看(中文结论 + 判定依据)
├─ 带宽测试.cmd ← CUDA 带宽实测
├─ 停止按住.cmd ← 停止保持
├─ 卸载.cmd ← 卸载
├─ 手动解锁-仅实验用-窗口不能关.cmd
├─ README.md / README.txt
├─ SHA256.txt
└─ bin\P104Gen2x4.exe + drivers\*.sys
校验:
P104-2.0x16-v1.2.zip 81,826 B SHA256 4A2A82419A39039B57432991FFBABFAE57D529D3C4AFE228C2952E80FB6518EF
bin\P104Gen2x4.exe 67,584 B SHA256 04F9481C989996E780775C09AE63A1F473BBC1F1AC3489E7003543A48C6AEA70
亮点
| 项目 | 实测结果 |
|---|---|
| 掉速 → Gen2 恢复 | 0.23 / 0.23 / 0.25 秒(v1.1 约 4 秒) |
| 掉速 → x16 声明恢复 | 0.73 / 0.82 / 0.84 秒(v1.1 12–16 秒) |
| 掉速期间 Gen1 停留 | 中位 0 秒、平均 0.9 秒 |
| 出厂态 → Gen2 x4 | 约 5 秒、0 次整卡复位 |
| 带宽 | H2D 1.55 / D2H 1.67 GB/s |
| 看门狗 | 20 ms(v1.1 为 150 ms) |
相对 v3.2(工具 v1.1)的变更
- 看门狗 150 ms → 20 ms:掉速后 20 ms 一轮 re-apply,恢复快 16–17 倍;
- 宽度重训:
WidthArm()成功后主动 retrain,读LNKSTA width;只认 16 为成功。
每次链路恢复/重新 arm 后都会重训(目标用户=已补电容的物理 x16 机器);连续 2 次未达 x16 →
判定本机未补电容,本进程内停止重训(重启进程可重试); 带宽测试.cmd顺序修复:先销毁 CUDA 上下文、再等保持进程恢复、再打印"已恢复",不再"说恢复又掉一下";- 状态面板中文化 + 判定依据:
已解锁/未解锁/未在保持三类结论;
判定以"状态文件是否每秒刷新(≤5 秒)"为主证据,非管理员运行也准确;宽度声明只在数据新鲜时显示; - 脚本改名:
一键解锁.cmd→自动解锁.cmd; - 版本串更新为 v1.2;无
install.cmd失效引用;底部重复 RESULT 已移除。
升级方法
- 旧版用户:下载新包 → 解压 → 右键
自动解锁.cmd(管理员)即可覆盖安装并重启保持进程; - 不需要先卸载;任务名不变(
P104 PCIe Gen2x4 Bring-up); - 回退:用
_gh\v11\backup-E248-v1.1\P104Gen2x4.exe(150ms 版)或 v3.2 包内 exe 覆盖C:\Program Files\P104Gen2x4\后schtasks /run。
仍未解决 / 边界
- 物理 x16 需要 AC 耦合电容改造,软件不保证;补电容后工具会尝试物理重训并明确打印"是否训到 x16";
- 驱动初始化/CUDA 上下文仍会触发瞬时掉速(已从 4 秒缩短到 0.23 秒);GPU-Z/Afterburner 轮询会加快触发;
- 20 ms 看门狗在掉速期间最多 50 次/秒 retrain(写压力约为 v1.1 的 7.5 倍),本机长时间实测未掉卡,长期稳定性继续观察;
- 4-lane(未补电容)机器上,重训失败 2 次后本进程停止重训,需重启保持进程才能重试。
历史
- v3.2(工具 v1.1):live 写组、150ms 看门狗、状态面板;
- v3.1(v1.0 手动/自动包):已废弃,复位赌锁存,请勿使用(保留作历史);
- v1.6(旧仓库):首个 Gen2 x4 一键工具。
免责
仅供学习研究与自有硬件使用。修改 PCIe 链路存在掉卡/不稳定风险;写的是易失寄存器,不涉及 VBIOS/熔丝持久化;后果自负。
物理层实测(2026-10-31,补 AC 耦合电容后)
结论:截至 2026-10-31,本机这张 P104-100 上我们尚未实现物理 x16(暂时没搞定,需要更多时间/其他 P104 样本继续验证)。已验证的路径:
| 路径 | 结果 |
|---|---|
运行时 0x8C040 arm + retrain |
声明 16 ✅、物理 x4 ❌ |
| 停 NVIDIA 驱动 + 写 + retrain | x4 |
| 完整复位(restart / disable-enable / remove-scan) | x4(复位确实生效) |
| XVE 位穷举(117 位、1224 万次采样) | 0 位改变宽度;0x8C080 恒 0x0404 |
停驱动 + 写 0x88140(LINK_WIDTH+COMMIT) 等 |
特权门 0xBADF5040,写入被硬件丢弃 |
| VBIOS 只读分析 | DevInit 从不写宽度字段;启动 x4 不是 VBIOS 设置 |
⇒ 软件/固件侧没有宽度入口;x4 来自 PHY/strap/板级。部分批次可能不同(社区有成功案例),
判断应以 LNKSTA 宽度=16 或带宽 ≈6 GB/s 为准(GPU-Z 显示不可靠)。
完整记录见 docs/09-物理层实测记录-2026-10-31.md 与 docs/evidence/。
补充:本包已内置「声明 arm + 宽度重训」逻辑。如果某块 P104-100 的板级(strap/走线/电容)原生支持 16 lane,本包可能通过重训直接解锁物理 x16;但本机这块板尚未实测成功(补电容后仍 x4),需要更多样本验证。
如果你知道 P104-100 的上电 strap/宽度配置存在哪、怎么改,或能让链路重新走 Detect 且不掉卡,欢迎开 Issue/Discussion 指教。
v3.2 — P104-100:Gen2 x4 解锁 + x16 宽度声明(工具 v1.1,完整开源)
v3.2 — P104-100:Gen2 x4 解锁 + x16 宽度声明(工具 v1.1,完整开源)
发布:2026-10-30
资产:P104-2.0x16-v1.1.zip(Windows 工具) /P104-2.0x16-v1.1-修复说明.md/P104-methodology-AI-agent.md
源码与方法:本仓库tools/、docs/06-v1.1-更新说明.md、docs/07-破解方法论与AI-Agent指南.md
致歉与升级提醒
v3.1 的两个 2.0x16 包(Manual / Auto v1.0)在部分机器上无法稳定锁存。当时的解锁写组只覆盖
"整卡复位后等驱动重新绑定"这一条路径,冷启动/复位窗口内成功率很低,表现为"有时能解锁、
有时反复超时甚至反复黑屏"。
给下载过、尝试过的朋友添了麻烦,抱歉。
请删除旧包,改用 v3.2 的 P104-2.0x16-v1.1.zip。 新版本改走实时(live)写入路径,
正常情况下不需要整卡复位,约 3 秒完成。
本版变化(工具 v1.0 → v1.1)
- 新增 live 声明写组:
0x8841C的 GEN2 使能位 +0x2241C声明位 + 速率请求一起写,
LnkCap2在 1 秒内出现 Gen2 声明;不再依赖整卡复位。 - 整卡复位降级为兜底:仅当 live 连续 3 轮失败才做 1 次;复位前置 bit15=1 并回读断言;
预算:单次运行 ≤1 次、同一开机周期 ≤2 次、间隔 ≥10 分钟。 - 宽度声明安全配方:
0x8C040 = (cur & ~0xF8000000) | 0x80000000;四象限断言(两个已知掉卡象限直接拒绝);
回退永远整字写0x20085800。 - 看门狗 20 ms → 150 ms:只在四项判据偏离时补写,触发类写限流 ≥2 秒。
- 参数白名单:
-help/ 未知参数只打印用法并退出(旧版会误触发解锁)。 - 输出编码修复:cmd 全部纯 ASCII + CRLF;日志不再出现乱码。
- 安装幂等 / 卸载保留驱动策略键:已安装状态重跑 install 不再中断;卸载不再清
RMPcieLinkSpeed等键。 - 带宽测试体验:测完自动等待链路恢复(Gen2 + x16,最多 30 秒);状态页在恢复期提示"正在自动恢复"。
实测结果(2026-10-30,本机单卡,CPU 直连 x16 槽)
| 项目 | 结果 |
|---|---|
出厂态(LCAP2=0x02、TLS=0)-once |
0 次复位;写组后 0 ms 锁存;3 秒内 Gen2;2 秒后宽度 x16;总 7.4 秒 PASS |
-off 后再 -once |
2.8 秒 PASS |
| 一键流程(install + 计划任务)从出厂态 | 40 秒内 -check 显示 Gen2 x4 + 声明 x16 |
| PCIe 链路 | Gen2 x4(LNKSTA=0x00001042) |
LnkCap 声明 |
0x00454D02(maxspeed Gen2 + maxwidth x16) |
| CUDA 带宽(页锁定) | H2D 1.570 / D2H 1.673 GB/s(Gen1 x4 参考 0.78 / 0.85) |
| 保持 | 150 ms 看门狗;历史实验连续保持 29 分钟无掉速;外部干扰后 10–20 秒自动恢复 |
边界(务必阅读)
- x16 目前是"声明层":
LnkCap显示 maxwidth=16 是真实写入的,但物理只有 4 条 lane,
实际链路仍是 x4,带宽不会因为 x16 声明而提升。 - 物理层(真实 x16 链路):计划 2026-10-31(周六) 补 AC 耦合电容后实测,结果会更新到本仓库。
在实测完成前,本版不声称物理 x16 可用。 - Gen3(8.0 GT/s)不可解:能力声明无法形成,主机侧无入口(证据见
docs/05-功能边界总表.md)。 - NVENC / NVDEC / OFA 不可解:OTP 熔丝禁用。
- 干净 AC 冷启动后的自动拉起尚未实测(本次用"计划任务手动触发"覆盖了等价路径)。
- 掉卡(设备从 PCIe 总线消失)只能 AC 断电 30 秒恢复,软件复位救不回。
资产与校验
| 文件 | 大小 | SHA256 |
|---|---|---|
P104-2.0x16-v1.1.zip |
78,171 | 7351F420395A02B07568E99F8055EBFC7C5DE0AA894445D732CFC2CCEE960308 |
└ bin\P104Gen2x4.exe |
65,536 | E24811FA4C2ACD517BD2B3C00FA30CA4CC82575C77D2298C9F932ECD01A4821A |
包内另有 SHA256.txt(exe + WinRing0x64.sys + ThrottleStop.sys)。
快速开始
- 完整解压
P104-2.0x16-v1.1.zip到本地硬盘; - 右键
一键解锁.cmd→ 以管理员身份运行; - 看到
SUCCESS即完成;跑带宽测试.cmd验证(H2D ≥1.4 GB/s); - 日常查状态:
状态.cmd(只读,不需要管理员); - 停止:
停止按住.cmd;卸载:卸载.cmd(默认保留驱动策略键)。 - 窗口能不能关:一键解锁装好后可以关窗口(保持进程在后台任务里);
手动解锁-仅实验用-窗口不能关.cmd的窗口不能关,仅实验/排障用,不推荐日常使用。
完整开源:工具 + 思路
本仓库从 v3.2 起完整公开:
P104-2.0x16-v1.1/:可执行工具(Windows);tools/:Python 实验工具链(只读探针、live 写组、宽度声明、硬件锁);docs/07-破解方法论与AI-Agent指南.md:方法论(四层模型、标准流程、安全规则、迁移到其它矿卡);docs/06-v1.1-更新说明.md:v1.0 → v1.1 技术说明与实测数据;docs/05-功能边界总表.md:能力边界(哪些可解、哪些不可解)。
你可以把它交给 AI agent:如果你手上有别的矿卡(P106 / CMP 系列等),
可以把本仓库的 README、方法论和tools/一起交给 AI agent(Claude Code / Codex / DSH 等),
让它按同样的流程——只读探针 → 写通道对照 → 单变量找声明开关 → 速率/宽度 → 常驻保持 → 带宽验收——
帮你分析、适配属于你自己的卡。工具是开源的,思路也是。
从旧版升级
- 删除 v3.1 的
P104-2.0x16-Manual/P104-2.0x16-Auto解压目录; - 运行 v3.2 的
一键解锁.cmd(会自动替换C:\Program Files\P104Gen2x4下的旧 exe 并重建计划任务); - 驱动策略键会保留/重写,无需手动处理。
English summary
v3.2 replaces the v3.1 x16 packages (whose reset-only latch path was unreliable — sorry for the trouble)
with a live-write unlock that needs no card reset and completes in ~3 s. Verified on a P104-100
(CPU-attached slot): Gen2 x4 link, LnkCap maxwidth = 16 declaration, CUDA H2D 1.570 / D2H 1.673 GB/s.
Important: x16 is declaration-layer only; the physical link is still x4. A physical-x16 experiment
(AC coupling caps) is planned for 2026-10-31 and will be reported here.
The repo now ships the full open-source package: the Windows tool, a Python experiment toolchain (tools/),
and a complete methodology document (docs/07-...) so you can hand it to an AI agent and adapt it to a card
you own. Volatile registers only — no VBIOS/fuse flashing.
v3.1 — P104-100:Gen2 x4 解锁 + 宽度声明 x16(Windows,手动/自动双版本)
⚠️ 已废弃 / DEPRECATED (2026-10-30)本版(v3.1)的 2.0x16 手动/自动包存在锁存不稳定问题,在多数机器上无法可靠解锁,
给下载过、尝试过的朋友添了麻烦,非常抱歉。
请改用 v3.3 的P104-2.0x16-v1.2.zip(实时写入路径,0 次整卡复位、约 3 秒完成)。This release's 2.0x16 packages are deprecated due to unreliable latching — sorry for the trouble.
Please use v3.3'sP104-2.0x16-v1.2.zipinstead.
Important (2026-10-30): the packages were rebuilt because the previous Manual build had a broken latch (it used a different exe). Please re-download if you downloaded before 2026-10-30 14:10 (UTC+8). Current bundles: exe 45056 bytes, manual cmd runs -retry 3 (same engine as Auto, no boot task).
Manual build is recommended (keep the window open; no task/autostart).
Auto build is the alternative (SYSTEM task; first latch after a cold boot can be flaky).
Both do the same thing: PCIe Gen2 x4 + x16 width declaration.
P104-2.0x16-Manual-v1.0.zip— recommendedP104-2.0x16-Auto-v1.0.zip— alternative (autostart)P104-boundary-report-2026-10-29.md