﻿5.0.4：NVAPI 与 NVML 双路径控制已在本机实卡验证。
SRBMiner 3.8.0 的 --list-devices 提供内核编号与 PCI 地址对应关系；单卡选择和参数向量按此清单定位，不按系统枚举顺序猜测。
锁频成功后，目标带 * 保留显示；上方显示驱动实际频率。驱动可能按频率档位取整，例如请求 1800 MHz 时读到 1792 MHz。
失败会保留失败原因并执行回退，失败参数不保存为下次启动设置。

NVIDIA 六项超频说明（2026-10-19）

Windows 界面与读数说明：客户端 5.0.4；六项协议和兼容 nvtool 命令保留原有单位。
界面参照 HiveOS 的逐卡列表：左侧显卡和 PCI，右侧读数、超频目标与单卡仪表入口。
保留现有软件的浅色背景、微软雅黑和标准按钮。客户端主窗口仍为 744×492。每行 36 像素，8 张显卡无需滚动；更多显卡纵向滚动。
群控使用相同紧凑布局，单机窗口为 800×420，多矿机按名称分组。

参数与单位
核心偏移      MHz        独立偏移；例如 600 始终表示偏移，不隐式变成锁定。
核心锁定      MHz        绝对目标频率，0 解除锁定。
显存偏移      MHz        Windows 界面采用 Windows 偏移口径，例如 800 就是 800 MHz。
显存锁定      MHz        绝对目标频率，不做上述二倍换算；0 解除锁定。
功耗限制      W          绝对瓦特，不是百分比；0 使用该卡默认功耗上限。
风扇          %          手动占空比；0 恢复自动策略。多风扇卡应用到该卡的各个风扇。

输入与按钮
1. 客户端进入“超频设置”。群控勾选矿机后可用“一键超频”，或在“一键设置”中选择“显卡超频（六项设置）”。
   群控右键“单卡超频”仅打开当前右键矿机；“参数设置”中的“超频设置…”也仅打开该矿机。
   各入口共用同一列表和六项弹窗；打开超频不会保存尚未确认的其他参数。
2. 顶部“全部设置”统一调整列表中的全部显卡；每行右侧仪表图标只设置该行显卡。
3. 弹窗按核心、显存、功耗/风扇分为三行两列，保留六个独立参数。
4. 输入框下方显示当前值；各卡不同则提示“各卡不同”。输入框留空不会提交该参数。
5. “应用”提交并保存本次填写的字段；“取消”关闭弹窗，不更改显卡或已保存配置。
6. “清空输入”只清表单；“填入默认值”仅将支持的字段填成 0，点击“应用”后才生效。
7. 列表中的“刷新”重新读取清单和读数；窗口打开期间目标被移除时，应用会拒绝旧目标。
8. 不支持的字段禁用；未读取的数值显示“—”，不会显示为零或冒充已生效。

列表读数
风扇上方为实测百分比，下方为设置目标或自动。功耗上方为实时消耗，下方“限”是功耗限制，均为 W。
核心与显存列上方显示驱动实际频率，下方显示锁定目标，单位 MHz；偏移各自单独显示。显存锁定 810 MHz 不乘 2。
Windows 未独立读回的设置目标以 * 标记，来源是本客户端保存记录或正在运行的 SRBMiner 参数；不代表写入成功。
SRBMiner 多算法循环、未知选卡对应关系不会猜测目标；实际频率仍直接从驱动读取。
显存容量、PCI、功耗范围来自客户端读取；缺失的硬件信息不填造数据。
预览与截图明确标记“演示”，样例数值用于展示布局。
显卡按 PCI 地址对应，不依赖列表编号；已移除或重复地址会报错，不转移到别的卡。
换槽或换卡后请刷新并检查保存的单卡配置。

执行与回报
所有目标先校验，再逐卡写入。写入、读回或保存失败会尝试回退本次修改。
偏移、功耗和风扇要求读回匹配。Windows NVML 没有独立的锁定目标读取接口，
涉及核心/显存锁定时仅回报“驱动接口已接受”，不把瞬时运行频率冒充锁定目标。
首次接管某项 Windows 锁频时，原目标不可读；失败回退和退出恢复将解除该锁频。
若由本程序先前设置且保存了目标，则使用所记录目标恢复；外部工具同时改动无法追踪。
回退失败会明确报错并保留恢复记录，不报成功。
旧客户端没有 oc_schema=2 时，群控拒绝发送六项指令并提示升级。
原版 4.6.1 的发现、启动、停止、任务等原有协议继续保留；六项超频需要配套新版客户端。

Windows 后端
工具：tools/nvtool.exe。这是独立实现的 Windows 参数兼容工具，不是 Linux ELF 文件改名。
复用客户端同一套 NVAPI / NVML 后端，核心/显存偏移及风扇使用 NVAPI，
核心/显存锁定和瓦特功耗使用 NVIDIA 驱动自带 NVML。无需随包复制驱动 DLL。
写入需要以管理员身份运行。具体字段和范围以显卡、驱动支持为准；不支持则报错。
配置在 qskg.config 的 hive_oc，恢复记录在 overclock-v2/baseline.json，
最近由本后端设置的参数在 overclock-v2/desired.json。
挖矿启动时重用保存参数；停止或退出默认恢复接管前参数，“停止不恢复”沿用原行为。
启用六项配置后，旧版超频/单独风扇指令会拒绝混用，请在新面板调整。
--offline 和 --render 的超频面板为只读预览，不提交超频命令或恢复 GPU。

Windows 工具用法（只读）
  tools\nvtool.exe --help
  tools\nvtool.exe --all --json
  tools\nvtool.exe --dry-run -i 0 --setcoreoffset 0 --setcore 0 --setmemoffset 0 --setmem 0 --setpl 0 --setfan 0
写入参数：--setcoreoffset、--setcore（--setclocks 为别名）、--setmemoffset、
--setmem、--setpl、--setfan；支持重复 -i 或 --pci 选择显卡。
--data 指定独立状态目录，--restore 恢复该目录记录的接管前参数。
仅移植这六项参数与查询/预检/恢复子集，不声称支持 Linux nvtool 的全部选项及守护进程。

HiveOS 后端
已参考 nvtool 1.8.8 的真实帮助与只读输出，直接调用 /hive/sbin/nvtool，
参数数组传给进程，不拼接 shell 命令；每次写入前重新按 PCI 定位 nvtool 编号。
保存参数在客户端 state_dir/overclock-v2/desired.json，启动托管核心前重用。
停止挖矿沿用 HiveOS 保留超频的行为。每次修改前在 backups 中记录原值。
如已启用旧版客户端的四项超频，先用旧版关闭再迁移；新旧协议拒绝混用。
HiveOS 自动风扇启用时拒绝写风扇，以免两个控制源争抢。
原值不可读、同卡多个风扇目标不同、非整数瓦特无法精确恢复时，拒绝相应字段。
本次没有部署到现有 HiveOS 服务，也没有修改现有 HiveOS 配置或显卡值。

验证范围
实机只读：Windows RTX 5060 Ti；HiveOS CMP 50HX、RTX 3080、RTX 4070 SUPER。
Windows 六项只读预检通过。实际硬件写入/稳定性和不同驱动支持情况未做验收。
界面、协议、继承/覆盖、范围、PCI 映射、持久化失败及回滚使用隔离测试验证。

参考
HiveOS 官方超频口径：https://hiveon.com/knowledge-base/getting_started/start_oc/
NVIDIA 官方 NVML / nvidia-smi：https://docs.nvidia.com/deploy/nvidia-smi/index.html
nvtool 1.8.8 帮助记录：群控源码 reference/nvtool-help-20261019.txt

5.0.4 单位兼容说明
Windows 界面在提交时换算为原有六项协议单位；已保存的配置不迁移、不重写。
nvtool 的 --setmemoffset 命令仍采用 HiveOS 兼容单位：1600 对应 Windows 偏移 800 MHz。
核心/显存绝对锁频和实时频率均使用 MHz，不进行二倍换算。
字体取自原版 DFM 与 LIGHT.vsf，使用系统已有字体，不包含字体文件。
