简介:cgminer 3.1.1 Windows 版是面向比特币及衍生币挖矿场景的多线程多矿池客户端,可驱动 GPU、FPGA 和 ASIC 三类算力设备,尤其针对 ATI GPU 提供了温度监控、超频及风扇转速控制能力。该版本以 zip 压缩包形式发布,共 43 个文件、约 6.83MB,核心为两个可直接运行的 exe 程序,周边包含配套 DLL 运行库、OpenCL 内核脚本、FPGA/ASIC 固件位流,以及示例配置、PHP/Java 监控 API 脚本和丰富的 txt 文档,能覆盖设备接入、参数调优和二次开发的主要场景。目前已有 558 人浏览学习,适合刚接触数字货币挖矿的入门用户,也适合矿场运维人员、硬件爱好者和希望研究 cgminer 内部机制的开发者。通过内置多矿池切换和 API 监控接口,读者可以快速搭建 Windows 挖矿环境,学习 cgminer 的模块划分与配置方式,同时注意不要在多条区块链上同时开启矿机,以免造成收益计算混乱。
1. 为什么还在用 cgminer 3.1.1:老矿机的 Windows 专属坑
说起 cgminer 3.1.1 windows 这套环境,你可能第一反应是“挖矿软件怎么还在折腾”。但实际情况是,我手里有几台老型号 ASIC 矿机,厂商当年配的固件只认 cgminer 3.1.1 的通信协议,新版 cgminer 和现在主流的矿机软件都不认它。在 Windows 上装这个版本不是双击解压就能完事的,OpenCL 运行时、libusb 驱动、二进制文件版本、路径和电源设置,每一项都能让你白忙活一下午。
我最初照着网上的教程装,结果不是报缺少 dll,就是矿机在系统里显示为未知设备,后来把依赖问题一个个理清才跑通。这篇文章把整个安装过程拆开,从版本选型到启动脚本再到故障排查,所有关键命令都放出来。不管你是刚拿到一台二手矿机的新手,还是想在 Windows 下做个测试平台的老手,走完这套流程你就能在命令行里看到实时的算力输出。
2. 安装前的准备工作:先分清设备类型,再装 OpenCL 和 libusb
2.1 判断你的矿机类型:ASIC、FPGA 还是 GPU
先别急着下载。cgminer 3.1.1 对设备类型的支持差异很大:它内部把 ASIC、FPGA 和 GPU 分成三条完全不同的驱动链路。在 Windows 下,GPU 挖矿需要依赖 OpenCL 内核,而 ASIC 和 FPGA 大多通过 USB 口连接,依赖 libusb 来识别设备。如果你把矿机接到电脑上,系统设备管理器里能看到一个未知设备,那就说明你的矿机走的是 USB 枚举链路,也就是 ASIC 或 FPGA 方向,和显卡挖矿不是同一类配置。
我在实际环境里遇到的情况是:某型号矿机的控制板出厂固件默认开启“模拟串口”模式,cgminer 3.1.1 需要使用“--icarus”这类参数才能识别 FPGA 设备,而 ASIC 矿机(比如带多个芯片的大算力板)则需要驱动层尝试验证矿机返回的特定握手信息。所以第一步是先确认你的矿机型号和接口类型。厂家说明书里通常会写“通过 USB 连接并支持 cgminer”“使用 OpenCL 挖矿”等字样。根据这个决定后面是否需要安装显卡驱动或 libusb 驱动。
这里给一个简单的对照表:
| 设备类型 | 连接方式 | 依赖组件 | 典型启动参数 |
|---|---|---|---|
| ASIC 矿机 | USB 转串口 | libusb | --icarus 或默认 autodetect |
| FPGA 矿机 | USB 转串口 | libusb | --icarus --baud 115200 |
| GPU 显卡 | PCIe 插槽 | OpenCL / Catalyst | -d <设备号> --gpu-platform |
如果是 GPU 挖矿,还要注意 cgminer 3.1.1 对显卡架构比较挑剔。2013 年前后的 A 卡驱动配合这个版本兼容性最好,N 卡在部分环境里会出现 OpenCL 平台无法加载的情况。所以建议先跑一下“clinfo”确认系统里存在哪个 OpenCL 平台,再决定走哪条路。
2.2 环境依赖:OpenCL 运行时和 libusb 驱动
确定设备类型后,下一步是把两个底层依赖装好。cgminer 3.1.1 在 Windows 下不是纯静态链接,它启动时会加载 OpenCL.dll 和 libusb-1.0.dll。如果系统里没有这两个动态库,程序直接弹窗提示缺少 dll,或者静默退出。
先装 OpenCL 运行时。最稳妥的做法是安装显卡厂商提供的完整驱动包:A 卡的显卡装 Crimson 或 Catalyst 驱动后会附带 OpenCL.dll;核显可以从芯片组驱动里获得 OpenCL Runtime。如果你只是用 ASIC 矿机,其实不需要 GPU 的 OpenCL,但 cgminer 3.1.1 的某些编译版本在初始化时仍然会尝试加载 OpenCL.dll,没有这个文件就会报错。所以我的习惯是,不管用不用显卡挖矿,都先把系统的 OpenCL 运行时补上。检测是否装好的方式是在命令行执行“clinfo”,它能列出当前系统的 OpenCL 平台和显卡设备。
然后是 libusb 驱动。这一步最容易翻车。Windows 默认不认 libusb 设备,需要在设备管理器里手动为矿机安装 WinUSB 或 libusb-win32 驱动。常见做法是使用 Zadig 工具,这个工具会把指定的未知设备替换成 WinUSB 驱动。我一般这样操作:
- 让矿机上电并连接电脑,打开 Zadig。
- 在 Devices 列表里找到矿机名称或“Unknown Device”。
- 把目标驱动选为 WinUSB。
- 点击 Replace Driver,等待安装完成。
完成后设备管理器里会显示为“WinUSB Device”,此时 cgminer 才能访问它。
提示:Zadig 安装驱动时不要拔掉矿机,过程中系统会短暂弹出“安装设备驱动程序”的提示,属于正常现象。
如果不想用图形工具,也可以直接用 libusb-win32 的 INF 文件,在设备管理器里手动更新驱动路径。但 Zadig 对 Windows 7 和 Windows 10 兼容性更好,省事。
2.3 版本选择:为什么是 3.1.1 而不是其它版本
cgminer 版本号很多,3.1.1 属于比较早期的一个稳定分支。很多博主推荐 3.7.2 甚至 4.x,但那些版本改动了设备探测协议和一个关键的授权校验逻辑,导致部分老矿机固件无法回应。如果你的矿机说明书里明确写了“支持 cgminer 3.1.1”,那就不要用更新的版本。版本越新,对老设备的兼容越差,这在矿机圈子里几乎是共识。
那同一个 3.1.1 有没有不同编译变体?有。Windows 二进制常见的有:动态依赖版(需要安装运行时)、静态编译版(解压即用)。静态编译版体积更大,但不用额外配置 DLL 路径。我实际测下来,静态编译版在 Windows 10 上更容易碰到“驱动签名”问题,而动态依赖版只要把 dll 放在程序目录下就能跑。所以我的建议是:优先使用与官方源码配套的二进制发行包,如果找不到,再考虑自己编译。下文所有命令都基于官方发行的 3.1.1 版本目录结构编写。
在选版本时还要注意一个问题:网上流传的 3.1.1 有些被二次打包过,里面塞了别人的矿池地址或修改了默认参数。判断方法很简单,看压缩包内是否只有 cgminer.exe、README 和必要的 dll,如果多出奇怪的 exe、脚本或者说明文档,最好放弃。干净版本的 cgminer.exe 用资源管理器查看信息时,描述往往是“cgminer for Windows”。
3. 下载与解压:三个容易混淆的编译版本怎么选
3.1 从哪里获取官方压缩包
cgminer 3.1.1 的发布年代比较早,官方站点已经不怎么维护。但源码和预编译二进制仍然能通过一些镜像仓库找到。我经常使用的方式是从代码托管平台搜索“cgminer 3.1.1 windows”相关仓库,找到 releases 列表里的 zip 包。下载时注意看文件名:通常会有“cgminer-3.1.1-windows-x64”和“cgminer-3.1.1-windows-x86”两种。你的 Windows 是 64 位就选 x64,但要注意老矿机控制程序可能只内置了 32 位通信库,此时 x86 版本反而更稳。
其实很多翻车不是下载环节出错,而是下到了别人二次打包的“优化版”。这些版本里可能加入了矿池佣金地址,或者捆绑了额外程序。判断方式很简单:官方二进制包里一般包含 cgminer.exe、README.txt、dll 目录,不会出现一堆说明文档以外的可执行文件。我建议只认准文件名规范且压缩包里有源码或 changelog 的那个。
我一般也会顺手从官方源码包编译一份自己用,但 Windows 上编译 cgminer 3.1.1 的坑比较多,需要配置 pthread 和 OpenCL 头文件路径。如果你只是想跑起来,直接使用别人编译好的动态版本就可以,不必从源码折腾。
3.2 核对哈希与文件清单
拿到 zip 包后,先别急着解压。用校验工具算一下 SHA-256,和发布方提供的哈希比对。老项目可能没有官方哈希表,但发布帖会带一个。如果找不到,至少用“sha256sum”算一下并记录下来,方便日后排查文件是否损坏。损坏的压缩包解压时往往不报错,但运行到一半会闪退,很难定位。
在 Windows PowerShell 下,计算哈希可以用这样一条命令:
Get-FileHash .\cgminer-3.1.1-windows.zip -Algorithm SHA256这条命令的输出是文件指纹字符串。如果发布方提供了哈希值,逐字符比对最前面 8 位和最后 8 位,能快速排除大范围损坏。没有哈希表的话,可以把这个值记在桌面文本里,后续程序行为异常时再算一次,看文件是否在保存过程中被改写。
解压后先看一下文件清单。一个正常的 cgminer 3.1.1 Windows 包应该包含以下文件:
| 文件/目录 | 作用 |
|---|---|
| cgminer.exe | 主程序 |
| README.txt | 参数说明 |
| pkg-config/msys | 编译环境辅助文件 |
| openssl/curl | 动态证书库(可能省略) |
| *.dll | 运行依赖库 |
如果发现压缩包内没有“pthreadVC2.dll”或“libusb-1.0.dll”,说明这是依赖系统环境的精简包,后面需要手动补依赖。我个人会优先选择那种把 dll 直接放在根目录的版本,省去一堆环境变量问题。
3.3 解压到短路径:避开空格和中文目录
这是很多人都会踩的坑。cgminer 3.1.1 的配置解析器比较脆弱,路径里如果有空格、中文、特殊符号,会导致启动参数解析错位,尤其是读取配置文件的时候。我第一次装的时候解压到“D:\我的文档\挖矿软件\”,结果程序启动后矿池连接正常,但始终提示“Failed to parse conf”,直到我把路径改成“D:\cgminer”才解决。
所以我强烈建议把压缩包解压到类似“C:\miner\”或“D:\cgminer\”的纯英文短路径下。路径长度也不要超过 30 个字符,因为老程序内部使用固定长度的缓冲区,超长路径会导致某些文件无法加载。
具体操作:在磁盘根目录新建“cgminer”文件夹,将压缩包内的全部文件释放进去。然后右键“cgminer.exe”属性,在“兼容性”选项卡里勾选“以兼容模式运行”并选“Windows 7”。这一步对 Windows 10 尤其重要,因为 3.1.1 很多底层调用在 Windows 10 上会被安全策略拦截。勾选兼容模式后,再执行“cd /d C:\cgminer && cgminer.exe --version”,如果看到版本号输出说明路径问题已经排除。
如果你用的是 Windows 自带命令行,可以把解压和切换目录合成一条命令:
mkdir D:\cgminer && tar -xf cgminer-3.1.1-windows.zip -C D:\cgminer && cd /d D:\cgminer“mkdir”用来创建目标目录,“tar -xf”调用系统自带的解压工具把 zip 内容释放到指定位置,“cd /d”同时切换盘符和目录。注意这里的“tar”是 Windows 10 1803 以后自带的 BSD tar,老系统上可能需要用其它解压工具。
4. 配置挖矿参数:命令行和配置文件的取舍
4.1 命令行参数详解:-o、-u、-p 不能写错
cgminer 3.1.1 的启动方式以参数为主,没有图形配置界面。最核心的三个参数是“-o”(矿池地址)、“-u”(矿池用户名)、“-p”(矿池密码)。注意大小写敏感,“-O”是另一个含义(表示 Url 和用户信息合并写法),容易互相混淆。
基本命令格式如下:
cgminer.exe -o stratum+tcp://pool.example.com:3333 -u your_worker.1 -p your_password --scrypt这里说明一下各段含义:“-o”后面跟矿池的协议和地址,stratum+tcp 是标准协议前缀;如果矿池使用 SSL,则需要写成“stratum+ssl”。端口号 3333 是常见矿池端口,但务必以你所在矿池文档为准。“-u”是你的矿工账号名,有些矿池使用“钱包地址.矿工号”格式;“-p”一般填“x”即可,或填矿工密码。
如果你用的是 ASIC 矿机,还要加“--icarus”参数,并且指定“--usb”和“--baud”来匹配你的矿机波特率。例如:
cgminer.exe --icarus -o stratum+tcp://pool.example.com:3333 -u user.worker -p x --usb 1 --baud 115200“--icarus”告诉 cgminer 尝试通过 Icarus 协议探测 USB 矿机;“--usb 1”指定使用第一个 USB 设备;“--baud 115200”设置串口波特率。不同固件默认波特率不一样,常见的有 115200 和 57600,接不上就换着试。如果你的矿机有多个,直接在命令行里重复“--usb”参数可以指定多个设备,比如“--usb 1 --usb 2”。
4.2 编写启动脚本 start.bat:环境变量和参数化
每次都敲一长串命令不现实,我会写一个“start.bat”放在 cgminer 目录下,固定好参数和依赖路径。Windows 下批处理文件也要注意编码,如果里面有中文内容,请另存为 ANSI 编码,否则乱码会被当成参数传给 cgminer。
一个可用的脚本模板如下:
@echo off set PATH=%CD%;%PATH% set GPU_MAX_ALLOC_PERCENT=100 set GPU_USE_SYNC_OBJECTS=1 cd /d %~dp0 cgminer.exe --scrypt -o stratum+tcp://pool.example.com:3333 -u user.worker -p x --api-listen --api-network --api-port 4028 pause这里“set PATH=%CD%;%PATH%”保证程序能在当前目录找到 dll;“GPU_MAX_ALLOC_PERCENT=100”是配合显卡挖矿时让 OpenCL 使用全部显存;“GPU_USE_SYNC_OBJECTS=1”可以改善 Windows 下的稳定性。“--api-listen”和“--api-network”开启管理接口,端口 4028,方便远程查看状态。如果你只使用 USB 矿机,那两个 GPU 开头的变量不设置也没关系。
我习惯把矿池连接信息单独抽成一个“config.conf”,而不是直接写死在 bat 里。因为矿池地址变更时,只需要改配置文件,不用改启动脚本。脚本里可以只保留“cgminer.exe -c config.conf”,既短又清爽。
4.3 配置文件 cgminer.conf:断电重启后自动恢复
cgminer 支持通过“-c config.conf”加载配置文件。配置文件的格式比较特殊:它是 JSON 风格的,但老版本解析器要求所有属性都写在同一行,不能像现代 JSON 那样多行缩进。我一开始就踩了这个坑,把配置写成多行,程序直接报“JSON: unexpected character”。
一个最小可用的配置文件如下:
{ "pools": [ { "url": "stratum+tcp://pool.example.com:3333", "user": "your_worker.1", "pass": "x" } ], "scrypt": true, "api-allow": "127.0.0.1", "api-network": true }参数说明:“pools”是矿池数组,即使只有一个矿池也要写成数组形式;“scrypt”设置为 true 代表使用 scrypt 算法挖矿,如果你的币种是 SHA-256 算法,则要删除这一项,否则会因为算法不匹配而一直 wait;“api-allow”限制了只要本机访问 API 权限,避免被外部扫描器连上端口。
配置里还可以加“intensity”和“gpu-threads”,用于调节显卡挖矿强度。但如果你用的是 ASIC 矿机,这些参数会被忽略。“failover-only”这个参数不要配置,它只在多个矿池切换时使用。我在实际环境中就因为有多个矿池且开启了 failover-only,结果主矿池掉线后没有自动切换,需要手动重启才恢复。
多矿池的配置可以写成下面的形式:
{ "pools": [ { "url": "stratum+tcp://pool1.example.com:3333", "user": "user.1", "pass": "x" }, { "url": "stratum+tcp://pool2.example.com:3333", "user": "user.1", "pass": "x" } ] }5. 避坑与排查:Windows 下 cgminer 最常见的五个坑
5.1 启动就报错:缺少 pthreadVC2.dll 和 libusb-1.0.dll
很多刚接触的人从网盘下载了一个精简版,双击 cgminer.exe 立刻弹窗“由于找不到 pthreadVC2.dll,无法继续执行代码”。这个提示很直白,就是程序依赖的 pthread 动态库不在搜索路径里。原因是 cgminer 3.1.1 在 Windows 下使用了 POSIX 线程封装库,而这个 dll 并不属于系统组件,必须随程序一起分发。
解决办法是先从发布包中确认有没有这个文件。如果没有,去网上搜索“pthreadVC2.dll”下载对应 32 位/64 位版本,放在 cgminer.exe 同一目录下。libusb-1.0.dll 同理,可以从 libusb 官方 releases 里获取。注意位数必须与 cgminer 版本一致,64 位程序放 32 位 dll 会继续报“应用程序无法正常启动”。我一开始就是混装了 64 位 cgminer 和 32 位 libusb,折腾了很久。
另一种情况是 dll 文件都在,但启动后进程马上退出,没有任何提示。此时去“事件查看器”的“应用程序”日志里看,会有一条“模块不安全”或“加载失败”的记录。多半是系统自带杀毒软件拦截了 dll 加载,需要把整个 cgminer 目录加入白名单。
5.2 识别不到矿机:先查设备管理器再看任务进程
插上矿机后,cgminer 提示“0 devices found”。这时不要忙着改命令,先看设备管理器。矿机如果被识别成“COM 端口”或“USB 串行设备”,说明驱动正确;如果显示“未知设备”,说明 WinUSB 驱动没有绑定成功,需要重新用 Zadig 替换。
还有一种是设备管理器里已经显示为“WinUSB Device”,但 cgminer 仍然找不到。这种情况多半是因为 cgminer 默认只扫描前 8 个 USB 设备,如果你的机器上插了很多外设,矿机排在靠后位置。可以在启动参数里加“--usb 1:8”来扩大扫描范围,或者把所有无关 USB 设备拔掉再试。
我遇到过一个比较隐蔽的问题:矿机本身是独立供电的,但 USB 数据线没有插紧,导致枚举时没有获得足够的功耗。换一根粗一点的 USB 线,或者接到后置 USB 口后问题解决。总之排查顺序是:设备管理器能识别 → 换 USB 口或线 → 增加 --usb 参数 → 查看 cgminer 的 -v 输出。
5.3 黑屏白屏:显卡驱动和 OpenCL 的版本博弈
如果你是拿显卡挖矿,启动 cgminer 后显示器黑屏或花屏,这是老版本 cgminer 在使用 OpenCL 内核时把显示器输出模式接管了。常见原因有两个:一是显卡驱动版本太新,与 3.1.1 的 OpenCL 编码方式不兼容;二是显存分配比例被设置成过高,导致系统无法正常合成桌面。
解决思路是降级显卡驱动。对 A 卡,我一般会找 2013~2014 年的 Catalyst 版本;对 N 卡,则把“--gpu-platform”显式指定为 0,并添加“--no-restart”避免驱动超时导致重启。同时把显存占用限制在 70% 左右,命令如下:
cgminer.exe --scrypt -o stratum+tcp://pool.example.com:3333 -u user.worker -p x --gpu-platform 0 --gpu-memclock 1500 --gpu-fan 70“--gpu-platform 0”选择 OpenCL 平台编号,如果不确定就用“clinfo”查一下;“--gpu-memclock 1500”锁定显存频率,避免驱动自动调节导致黑屏;“--gpu-fan 70”固定风扇转速。注意老版本 cgminer 对“--gpu-memclock”参数合法性检查非常严格,如果值超出核心范围,程序会拒绝启动,这时可以去掉。
如果你的矿机是纯 USB 的,那么黑屏问题基本与 cgminer 无关,请检查显卡驱动和远程桌面设置。
5.4 挖矿中途停止:Windows 休眠和 USB 供电策略
运行几个小时后,算力突然掉到 0,矿池连接还在,但矿机显示“USB: No response”。这个现象我遇到过很多次,最终定位到两个系统级原因:一是 Windows 的“关闭显示器”或“休眠”策略把 USB 控制器断电了;二是 USB 集线器开启了选择性暂停。
在电源管理里把所有睡眠选项设为“从不”,然后到设备管理器的“USB 根集线器”属性里,把“允许计算机关闭此设备以节约电源”的勾选去掉。这个操作对每个 USB 根集线器都要做。另外,如果矿机是通过外接集线器连接的,换成独立供电的集线器会好很多。
还可以在 cgminer 启动参数中加上“--restart”自动重启功能,它会在设备无响应时自动重新初始化 USB。但这只能作为补救手段,根源还是系统电源策略。我在服务器上跑矿机时,还会在计划任务里设置一个每 1 小时检查 cgminer 进程是否存在的任务,如果挂掉就自动拉起,双保险。
5.5 被安全软件“治疗”:矿机进程的白名单设置
系统自带杀毒软件和第三方安全软件经常把 cgminer.exe 识别为“风险工具”,因为它的行为特征符合挖矿木马。这会导致两种结果:一种是启动时被拦截,另一种是运行中被清掉进程。
解决办法很简单:把整个 cgminer 目录加入安全软件的白名单。系统自带杀毒软件的排除路径设置在“病毒和威胁防护”→“排除项”→“添加排除项”。注意要添加“文件夹”排除,不是“文件”排除,否则后续新增的 dll 也会被删。有的安全软件还有“启发式检测”和“云查杀”,光加白名单可能不够,需要暂时关闭实时防护测试一下。
我曾经手里有一台机器,cgminer 运行十几分钟就被结束掉,任务管理器里也看不到它,只有日志里留有“USB: dropped connection”的字样。最后发现是安全软件把 cgminer 的“--api-network”监听行为当作后门处理。所以如果你开启了 API 监听,白名单要针对整个目录,且只允许本机访问 API。
6. 装完怎么验证跑通:从版本检查到算力曲线
到这里,环境基本装好了。最后一步不是看算力数字,而是按顺序做三轮验证。
第一轮,验证程序本身。在 cgminer 目录下执行“cgminer.exe --version”,看是否返回版本号“3.1.1”。如果这条命令通过,说明 dll 依赖和兼容模式都没有大问题。同时执行“clinfo”检查 OpenCL 平台是否可见,对 USB 矿机则打开设备管理器确认“WinUSB Device”存在。
第二轮,验证矿池连通性。启动 cgminer 后,观察首屏日志里的“STATUS”。正常情况下会看到“Connected to Stratum”和“Difficulty”出现。如果一直显示“Waiting for acceptable answer”,说明算法或者用户名密码不对。此时按“S”键查看“矿池状态”,确认“Stratum”为“Alive”,且“Accepted”计数在增长。第一次启动建议不要用真实矿池连接,可以在本机用矿池软件搭建一个模拟矿池地址,配置好“-o stratum+tcp://127.0.0.1:3333”,连通后再切真实矿池。
第三轮,验证设备算力。USB 矿机在日志中会显示每个设备的“GHS 5s”或“MHS 5s”指标。刚启动的前 30 秒算力波动很大,属于正常现象,等 5 分钟后再看。如果算力为 0,按“R”键重启设备,再按“L”看设备日志。显卡挖矿则用“--gpu-threads 2”和“--intensity 13”的组合,在保证稳定性的前提下慢慢提升强度。
从那以后,我每次给新矿机配系统,都会强制走一遍“先验证版本 – 再看矿池连接 – 最后确认算力”的顺序,而不是一上来就盯着收益数字。希望这套流程能帮你在 cgminer 3.1.1 windows 上少走点弯路。
本文还有配套的精品资源,点击获取