Skip to content

Releases: skbskhud/p104-unlock-v3

v3.3 — P104-100:Gen2 x4 + x16 声明 + 20ms 恢复 + 宽度重训(工具 v1.2)

Choose a tag to compare

@skbskhud skbskhud released this 30 Oct 17:44

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)的变更

  1. 看门狗 150 ms → 20 ms:掉速后 20 ms 一轮 re-apply,恢复快 16–17 倍;
  2. 宽度重训:WidthArm() 成功后主动 retrain,读 LNKSTA width;只认 16 为成功。
    每次链路恢复/重新 arm 后都会重训(目标用户=已补电容的物理 x16 机器);连续 2 次未达 x16 →
    判定本机未补电容,本进程内停止重训(重启进程可重试);
  3. 带宽测试.cmd 顺序修复:先销毁 CUDA 上下文、再等保持进程恢复、再打印"已恢复",不再"说恢复又掉一下";
  4. 状态面板中文化 + 判定依据:已解锁/未解锁/未在保持 三类结论;
    判定以"状态文件是否每秒刷新(≤5 秒)"为主证据,非管理员运行也准确;宽度声明只在数据新鲜时显示;
  5. 脚本改名:一键解锁.cmd → 自动解锁.cmd;
  6. 版本串更新为 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,完整开源)

Choose a tag to compare

@skbskhud skbskhud released this 30 Oct 15:58

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)

  1. 新增 live 声明写组:0x8841C 的 GEN2 使能位 + 0x2241C 声明位 + 速率请求一起写,
    LnkCap2 在 1 秒内出现 Gen2 声明;不再依赖整卡复位。
  2. 整卡复位降级为兜底:仅当 live 连续 3 轮失败才做 1 次;复位前置 bit15=1 并回读断言;
    预算:单次运行 ≤1 次、同一开机周期 ≤2 次、间隔 ≥10 分钟。
  3. 宽度声明安全配方:0x8C040 = (cur & ~0xF8000000) | 0x80000000;四象限断言(两个已知掉卡象限直接拒绝);
    回退永远整字写 0x20085800。
  4. 看门狗 20 ms → 150 ms:只在四项判据偏离时补写,触发类写限流 ≥2 秒。
  5. 参数白名单:-help / 未知参数只打印用法并退出(旧版会误触发解锁)。
  6. 输出编码修复:cmd 全部纯 ASCII + CRLF;日志不再出现乱码。
  7. 安装幂等 / 卸载保留驱动策略键:已安装状态重跑 install 不再中断;卸载不再清 RMPcieLinkSpeed 等键。
  8. 带宽测试体验:测完自动等待链路恢复(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)。

快速开始

  1. 完整解压 P104-2.0x16-v1.1.zip 到本地硬盘;
  2. 右键 一键解锁.cmd → 以管理员身份运行;
  3. 看到 SUCCESS 即完成;跑 带宽测试.cmd 验证(H2D ≥1.4 GB/s);
  4. 日常查状态:状态.cmd(只读,不需要管理员);
  5. 停止:停止按住.cmd;卸载:卸载.cmd(默认保留驱动策略键)。
  6. 窗口能不能关:一键解锁装好后可以关窗口(保持进程在后台任务里);手动解锁-仅实验用-窗口不能关.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,手动/自动双版本)

Choose a tag to compare

@skbskhud skbskhud released this 29 Oct 05:26

⚠️ 已废弃 / 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's P104-2.0x16-v1.2.zip instead.


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 — recommended
  • P104-2.0x16-Auto-v1.0.zip — alternative (autostart)
  • P104-boundary-report-2026-10-29.md