资讯动态

cgminer 3.1.1 Windows 安装配置与 OpenCL/WinUSB 避坑指南

发布时间:2026/10/30 3:50:14 来源:尧图企业网站定制
简介cgminer 3.1.1 Windows 版是一款面向比特币及衍生币种挖矿的多线程、多矿池 GPU、FPGA 与 ASIC 挖矿软件支持 ATI 显卡状态监控、频率调节和风扇转速控制适合需要搭建、复现或调试旧版挖矿环境的中高级用户参考。压缩包共 43 个文件整体约 6.83MB包含 12 个 txt 说明文档、8 个 dll 运行库、5 个 bit 与 5 个 cl 内核文件另有 2 个 exe 主程序、2 个 php 接口示例以及 Java、C、conf 配置和 FPGA 相关文件覆盖程序启动、算法内核、接口调用与依赖库等主要组成部分。已有 560 人学习下载。读者可据此了解 Windows 下 cgminer 的目录组织、OpenCL 内核示例、API 调用样例与配置模板进而梳理多线程挖矿调度、GPU 与 FPGA 设备支持及显卡驱动、运行库等依赖关系也可对照说明文档定位依赖缺失、参数配置异常等常见问题作为旧版挖矿工具的代码阅读和排错参考但需留意该版本不适合同时连接多条区块链使用。1. 从一台老工控机说起cgminer 3.1.1 windows 到底难在哪前阵子有人搬来一台还跑着 Windows 7 的老工控机让我把 cgminer 3.1.1 windows 这套环境重新装回去。压缩包解开就能跑听起来比装数据库省事真上手才发现是个连环套显卡驱动、OpenCL 运行时、USB 设备驱动三样缺一样程序就出问题要么窗口一闪而过要么设备数显示 0要么连上了矿池却一直拿不到任务。这套东西适合手里有老机器、老显卡或者要在内网里固定跑一台算力节点的人。照着官方 README 一步步来反而容易失败因为那份文档默认你的运行时环境是完整的而现实里十有八九不是。2. 环境准备cgminer 3.1.1 在 Windows 上要先备齐四样装 cgminer 之前我一般会把机器当成一台“干净的 Windows”来处理先确认系统版本和位数再逐个确认运行时组件。顺序不能乱因为每一步的检查结果都依赖上一步。比如你没装完整显卡驱动就查不到 OpenCL 平台查不到 OpenCL 平台cgminer 启动后设备列表就是空的而它给的报错信息往往含糊你会误以为是配置文件写错了白白在参数上折腾半天。这套准备流程大概二十分钟比起装完再回头逐个排查要省得多。2.1 版本取舍3.1.1、3.7.2 和 4.x 的差别具体在哪cgminer 的版本线里有一个明显分界3.x 和 4.x 面向的硬件不是一类。3.x 这一支保留了 OpenCL 挖矿路径也就是能用显卡算。这条线上大家最常提到的两个点是 3.1.1 和 3.7.2——前者是早期版本参数集相对精简配置项少、启动快在老机器和老驱动上更兼容后者是 3.x 的收尾版本参数更全支持面更宽。3.1.1 时期主要面向 SHA-256d 这类算法后来才并入的算法分支它并不认所以在选它之前先想清楚你手上的设备跑的是什么算法。4.x 之后OpenCL 挖矿路径被彻底移除只保留 ASIC/FPGA 设备支持。这意味着如果你拿一份 4.x 的配置模板套到 3.1.1 上会看到一堆Unrecognised option或者JSON decode failed因为字段名和结构都变了。我一般按这个思路选场景建议版本理由老显卡、老驱动、Win7 环境3.1.1参数少兼容性好出问题容易定位需要更多参数微调、稳定性优先3.7.23.x 收尾版本参数全纯 USB ASIC 设备、无显卡4.x移除了 OpenCL 路径启动更干净选 3.1.1 的代价要提前知道它不认识后来新增的设备型号也不支持后来才并入的算法配置项里没有的那些字段写了也没用写了反而会让程序在解析配置时直接退出。2.2 显卡驱动与 OpenCL 运行时算力的地基如果你要用显卡跑OpenCL 运行时是最容易漏的一环。它通常由显卡厂商的完整驱动包一起安装而不是单独一个组件。很多人图省事装了精简版驱动或者系统自动推送的驱动设备管理器里看着显卡正常但 OpenCL ICD 是缺的cgminer 启动后直接告诉你找不到平台。验证办法很简单装个clinfo跑一下clinfo正常输出里会列出Platform Name、Device Name、Device Version这几行。如果只打印一句 “Number of platforms: 0”那就是运行时没装到位跟 cgminer 一点关系都没有别再去改配置文件了。这一步我遇到过好几次都是同一个原因机器重装过系统驱动是 Windows 自动匹配的通用版本。装完驱动后建议重启一次。OpenCL 的 ICD 注册表项在驱动安装过程中写入不重启有时候不生效这就是那种说不清原因的“玄学”问题。2.3 USB 设备驱动WinUSB 替换这一步别省用 USB 接口的矿机时Windows 默认会把设备识别成一个未知设备或者厂商自定义设备cgminer 里就会显示No devices found (or driver not installed)。原因是 cgminer 走的是 libusb/WinUSB 通道需要给这个设备绑定通用驱动。常见做法是用一个通用的驱动替换工具Zadig 一类步骤是插上设备打开设备管理器确认那个带感叹号的未知设备。打开驱动替换工具菜单里勾选 “List All Devices”。在下拉列表里选中目标设备仔细核对 VID/PID别选错。右侧驱动目标选 WinUSB点替换等进度条走完。拔插一次设备重新打开 cgminer 看设备列表。注意这一步只对目标设备操作不要把键盘、鼠标、USB 网卡当成目标。选错设备会让外设直接失效得进安全模式恢复属于典型的给自己添麻烦。2.4 系统位数与运行库32 位和 64 位不要随便假设Windows 包通常分 32 位和 64 位两种构建选错了不一定立刻报错但会出现奇怪的崩溃。判断办法是看系统属性里的“系统类型”或者命令行wmic os get osarchitecture输出64-bit就用 64 位构建32-bit就用 32 位构建。别用“我的 CPU 是 64 位”来判断32 位系统跑不了 64 位程序这个错犯一次能排查一小时。运行库方面Windows 构建一般会把 pthread、libcurl、libusb 这些依赖 DLL 一起打进去所以解压即用如果启动时报“找不到 xxx.dll”说明包不完整或者被杀毒软件删了文件重新解压一次并加排除目录比装一堆运行库更快。3. 安装落地把 cgminer-3.1.1-windows 解压到能跑起来准备工作做完安装本身其实只有三步放到合适的路径、写好启动脚本、跑第一次。但每一步都有细节尤其是路径和启动方式出问题最多的就是这两处。3.1 目录规划路径、权限和杀毒排除解压路径不要有中文、不要有空格。cgminer 对路径的处理比较糙遇到空格或者非 ASCII 字符时读取配置文件可能失败表现得像是配置写错了。我一般用D:\cg\或者C:\miners\cg311\这种全英文短路径。放在桌面或者“下载”文件夹里不是不行但路径长、含空格、还容易被清理工具扫到。解压后先做两件事第一把整个目录加进杀毒软件和系统防护的排除列表。这类程序被误报是常事文件被静默删掉之后你只会看到“程序无法启动”查半天查不出原因。第二确认目录不在 OneDrive 或者其他同步盘里。同步盘会锁定文件程序读写日志的时候可能报权限错误。3.2 启动脚本把参数固化成 bat直接双击cgminer.exe是最容易失败的方式——它读不到参数就直接退出窗口一闪而过你连报错都看不见。正确做法是写一个 batecho off cd /d D:\cg cgminer.exe --config cgminer.conf pausecd /d把工作目录切到程序所在目录因为 cgminer 默认按相对路径找配置文件和日志文件工作目录不对就找不到pause让窗口停住报错信息才能留在屏幕上。这两行加起来是我踩过最多次的坑换来的。如果你不想用配置文件也可以把参数全写进 batecho off cd /d D:\cg cgminer.exe -o stratumtcp://pool.example.com:3333 -u worker1 -p x ^ --api-listen --api-port 4028 --api-allow W:127.0.0.1 ^ -I 13 -w 128 --temp-target 72 --auto-fan pause注意^是 cmd 的续行符后面不能有空格否则会把空格也当成参数的一部分传进去。3.3 首次运行的预期输出第一次跑正常的话屏幕上会依次出现这些内容时间戳会变[时间] Started cgminer 3.1.1 [时间] Probing for an alive pool [时间] Pool 0 difficulty changed to 1 [时间] Network diff set to ... [时间] Init GPU thread 0 GPU 0 ...如果卡在Probing for an alive pool不动那是网络或者矿池地址的问题不是本地环境问题如果根本没走到这一行就退出那才是本地环境或参数问题。这两类问题排查方向完全不同先看清楚卡在哪一行能省掉一半时间。设备识别成功之后界面会进入 TUI显示每个设备的算力和温度。第一次运行不用追求算力多高先确认设备被识别、能拿到任务、状态不是Dead这三件事成立再谈优化。4. 配置详解cgminer.conf 与命令行参数怎么配配置是整个安装里最容易被过度复杂化的一环。网上流传的配置文件动辄上百行抄过来一堆不认识的字段反而让程序启动失败。我一般从一个最小可用配置开始跑通了再逐个加参数。4.1 最小可用 cgminer.conf{ pools: [ { url: stratumtcp://pool.example.com:3333, user: worker1, pass: x }, { url: stratumtcp://backup.example.com:3333, user: worker1, pass: x } ], api-listen: true, api-port: 4028, api-allow: W:127.0.0.1, intensity: 13, worksize: 128, gpu-threads: 2, kernel: poclbm, temp-target: 72, temp-overheat: 80, temp-cutoff: 85, auto-fan: true, scan-time: 60, expiry: 120, queue: 1, log: 5 }逐项说明一下pools是数组第一个为主池后面的是备用池主池掉线会自动切url必须带协议前缀stratumtcp://写成http://或者干脆不带前缀都会连不上user一般是“账号.矿工名”或者矿池分配的 worker 名具体格式看矿池说明写错会一直提示Pool 0 not providing workpass很多矿池随便填但不能留空。api-listen和api-port是本地查询接口不开的话出问题只能靠肉眼看屏幕相当于自己断了黑匣子。api-allow里的W:前缀表示允许写操作只查询的话可以只写127.0.0.1。kernel在 3.1.1 里常见取值是poclbm默认和diakgcn换了内核等于换了算法实现算力差异可能有百分之十几值得两个都试一下。intensity控制单线程的并行度调太高会掉算力甚至驱动重置13 是个稳的起点。temp-cutoff到温就停temp-overheat降频temp-target配合auto-fan做风扇自动调节这三个值建议按设备实际情况设别照搬。4.2 命令行参数与配置文件的优先级同时存在命令行参数和配置文件时命令行优先。这条规则很重要因为调试的时候经常出现“我明明改了配置怎么没生效”结果是 bat 里还留着旧参数。常用参数对照参数作用典型值-o矿池地址stratumtcp://pool.example.com:3333-u/-p用户名 / 密码worker1/x--config指定配置文件路径cgminer.conf-d只启用指定编号的设备-d 0-I强度9到20-wworksize128/256--api-listen开启 API无值--api-portAPI 端口4028--api-allow允许访问的地址W:127.0.0.1-T文本界面不进入 TUI无值--log日志级别5--verbose输出详细日志无值另外cgminer 在 TUI 里按S会把当前运行参数写回cgminer.conf退出时也会保存一次。这意味着你手动改的配置可能被运行时的状态覆盖。调试阶段我一般用--config指向一个单独的文件跑通之后再合并。4.3 API 端口不开等于丢掉了排查信息API 基于 JSON-RPC开了之后本地能直接查状态长时间运行的时候不用一直盯着屏幕。Windows 上没有nc用 PowerShell 发一条就行$client New-Object System.Net.Sockets.TcpClient(127.0.0.1, 4028) $stream $client.GetStream() $writer New-Object System.IO.StreamWriter($stream) $writer.WriteLine({command:summary}) $writer.Flush() $reader New-Object System.IO.StreamReader($stream) $reader.ReadLine() $client.Close()返回的是一个 JSON里面有MHS av平均算力、Accepted、Rejected、Hardware Errors这几个关键字段。把这些字段记下来比看屏幕上的瞬时值可靠得多——瞬时值波动大容易误判。端口只监听本机就行api-allow写W:127.0.0.1不要图方便开成任意地址那等于把控制接口暴露出去。5. 避坑与排查cgminer 3.1.1 装完最常见的五个失败点下面这几条是我在不同机器上反复遇到的按“现象 → 原因 → 解决”记下来遇到时对照着查比重新读文档快。5.1 双击 exe 窗口一闪而过现象双击cgminer.exe黑窗口出现又消失什么信息都没留下。原因没有传任何参数程序读不到矿池配置打印完版本信息就退出了另一种可能是缺 DLL加载阶段直接失败。解决改用 bat 启动并加pause先看清报错。如果是缺 DLL把包的目录结构截图对着看重新完整解压一次如果是参数问题按 3.2 的写法补上--config或者-o/-u/-p。5.2 提示 No OpenCL platforms found现象启动后一行No OpenCL platforms found设备列表为空。原因显卡驱动不完整OpenCL ICD 缺失。系统自动装的通用驱动、或者只装了显示驱动没装计算组件都会这样。解决先跑clinfo确认平台数为 0然后卸掉现有驱动从显卡厂商渠道装完整驱动包重启再跑一次clinfo。这一步做完设备列表通常就有了。5.3 USB 设备识别不出来现象设备插上后 cgminer 提示No devices found (or driver not installed)设备管理器里带感叹号。原因Windows 把这个设备当成了厂商自定义设备没有绑定 WinUSB 驱动。解决用驱动替换工具给目标设备换成 WinUSB操作前核对 VID/PID只动目标设备。替换完成后拔插一次再启动程序。如果还是不行换个 USB 口试试有些前置面板的供电不足会导致枚举失败。5.4 连上矿池但一直拿不到任务现象日志停在Probing for an alive pool或者反复出现Pool 0 not providing work。原因地址协议前缀写错写成http://或者不带前缀、端口不对、worker 名格式不符合矿池要求。解决逐个核对url、user的格式先把备用池去掉只留一个主池排除切换干扰再看矿池侧的 worker 是否存在、是否绑定了正确的账号。这一步用错配置模板的居多从别处抄来的配置文件里地址常常是占位的。5.5 运行几分钟后程序消失现象跑了三五分钟窗口直接关掉没有任何报错。原因多半是被杀毒软件或系统防护静默拦截并删除了可执行文件也可能是温度保护触发但没写日志。解决把整个目录加入排除列表并在配置文件里把log打开、确认日志文件确实在写入。日志文件是我判断“到底是它自己退出还是被杀掉”的唯一依据没有日志的时候只能靠猜。6. 验证跑通三个动作确认这台机器真的在出算力装完不等于跑通跑通不等于稳定。最后一章说说怎么验证这套流程我现在每次装完都会走一遍能省掉后面好几轮返工。6.1 TUI 里该看哪几个数进入 TUI 之后别盯着瞬时算力看那个数字跳得厉害。看三处5 秒平均和平均算力是否在同一个量级A:Accepted是否在持续增长HW:硬件错误是不是一直停在 0。硬件错误持续增长说明强度或频率设得太高先降下来别硬扛。温度也要看temp-target设 72 而实际长期贴着 80 以上说明散热不行把强度或者频率压一档。6.2 API 与日志交叉验证用 4.3 的 PowerShell 命令查summary把MHS av、Accepted、Rejected三个值记下来间隔十分钟再查一次对比差值。Accepted 增长、Rejected 比例低于百分之二基本就算健康。同时打开日志文件确认里面没有反复出现重连、认证失败、Stratum from pool 0 detected new block之外的异常条目。日志和 API 两个来源对得上才说明程序内部状态是一致的。检查项正常表现异常时先查设备列表数量与物理设备一致驱动、USB 绑定Accepted持续增长矿池地址、worker 格式Rejected 比例低于 2%网络延迟、expiry设置Hardware Errors长期为 0强度、频率、散热温度稳定在 target 附近风扇、风道、auto-fan6.3 一次至少跑满三十分钟最后一步最容易被跳过让它连续跑三十分钟以上。很多问题在前三分钟看不出来——驱动重置、温度爬升到阈值、内存泄漏导致的算力缓慢下降都要时间才暴露。三十分钟里算力曲线平稳、没有断连、温度不持续上升才算这台机器装好了。从那以后我每次装完 cgminer都会先让它挂满半小时、把 API 数据存档再去做别的优化。这套习惯救过我好几次尤其是那种“装完当天正常、第二天早上发现停了”的情况日志里往往能看到第一次异常发生的时间点。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑