|
|
|
|
|
|
|
This is a multi-threaded multi-pool CPU and GPU miner for bitcoin.
|
|
|
|
|
|
|
|
License: GPLv2. See COPYING for details.
|
|
|
|
|
|
|
|
Dependencies:
|
|
|
|
libcurl http://curl.haxx.se/libcurl/
|
|
|
|
libncurses5-dev (or libpdcurses on WIN32)
|
|
|
|
pkg-config http://www.freedesktop.org/wiki/Software/pkg-config
|
|
|
|
jansson http://www.digip.org/jansson/
|
|
|
|
(jansson is included in-tree and not necessary)
|
|
|
|
|
|
|
|
Basic *nix build instructions:
|
|
|
|
To build with GPU mining support:
|
|
|
|
Install AMD APP sdk, latest version - there is no official place to
|
|
|
|
install it so just keep track of where it is if you're not installing
|
|
|
|
the include files and library files into the system directory.
|
|
|
|
(Do NOT install the ati amd sdk if you are on nvidia)
|
|
|
|
|
|
|
|
The easiest way to install the ATI AMD SPP sdk on linux is to actually put it
|
|
|
|
into a system location. Then building will be simpler. Download the correct
|
|
|
|
version for either 32 bit or 64 bit from here:
|
|
|
|
http://developer.amd.com/sdks/AMDAPPSDK/downloads/Pages/default.aspx
|
|
|
|
|
|
|
|
This will give you a file with a name like AMD-APP-SDK-v2.4-lnx64.tgz
|
|
|
|
|
|
|
|
Then:
|
|
|
|
|
|
|
|
sudo su
|
|
|
|
cd /opt
|
|
|
|
tar xf /path/to/AMD-APP-SDK-v2.4-lnx64.tgz
|
|
|
|
cd /
|
|
|
|
tar xf /opt/AMD-APP-SDK-v2.4-lnx64/icd-registration.tgz
|
|
|
|
ln -s /opt/AMD-APP-SDK-v2.4-lnx64/include/CL /usr/include
|
|
|
|
ln -s /opt/AMD-APP-SDK-v2.4-lnx64/lib/x86_64/* /usr/lib/
|
|
|
|
ldconfig
|
|
|
|
|
|
|
|
If you are on 32 bit, x86_64 in the 2nd last line should be x86
|
|
|
|
|
|
|
|
To actually build:
|
|
|
|
|
|
|
|
./autogen.sh # only needed if building from git repo
|
|
|
|
CFLAGS="-O2 -Wall -march=native" ./configure
|
|
|
|
or if you haven't installed the ati files in system locations:
|
|
|
|
CFLAGS="-O2 -Wall -march=native -I<path to AMD APP include>" LDFLAGS="-L<path to AMD APP lib/x86_64> ./configure
|
|
|
|
make
|
|
|
|
|
|
|
|
If it finds the opencl files it will inform you with
|
|
|
|
"OpenCL: FOUND. GPU mining support enabled."
|
|
|
|
|
|
|
|
Basic WIN32 build instructions (on Fedora 13; requires mingw32):
|
|
|
|
./autogen.sh # only needed if building from git repo
|
|
|
|
rm -f mingw32-config.cache
|
|
|
|
MINGW32_CFLAGS="-O2 -Wall -msse2" mingw32-configure
|
|
|
|
make
|
|
|
|
./mknsis.sh
|
|
|
|
|
|
|
|
Native WIN32 build instructions (on mingw32, on windows):
|
|
|
|
Install the Microsoft platform SDK
|
|
|
|
Install AMD APP sdk, latest version (only if you want GPU mining)
|
|
|
|
(Do NOT install the ati amd sdk if you are on nvidia)
|
|
|
|
Install mingw32
|
|
|
|
Install libcurl, copy libcurl.m4 into /mingw/share/aclocal
|
|
|
|
Install pkg-config, copy pkg.m4 into /mingw/share/aclocal
|
|
|
|
Run:
|
|
|
|
autoreconf -fvi
|
|
|
|
CFLAGS="-O2 -msse2" ./configure
|
|
|
|
make
|
|
|
|
|
|
|
|
Usage instructions: Run "cgminer --help" to see options.
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
EXECUTIVE SUMMARY ON USAGE:
|
|
|
|
|
|
|
|
Single pool, regular desktop:
|
|
|
|
|
|
|
|
cgminer -o http://pool:port -u username -p password
|
|
|
|
|
|
|
|
Single pool, dedicated miner:
|
|
|
|
|
|
|
|
cgminer -o http://pool:port -u username -p password -I 8
|
|
|
|
|
|
|
|
Multiple pool, dedicated miner:
|
|
|
|
|
|
|
|
cgminer -o http://pool1:port -u pool1username -p pool1password -o http://pool2:port -u pool2usernmae -p pool2password -I 8
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
WHILE RUNNING:
|
|
|
|
|
|
|
|
The following options are available while running with a single keypress:
|
|
|
|
|
|
|
|
[P]ool management [S]ettings [D]isplay options [Q]uit
|
|
|
|
|
|
|
|
P gives you:
|
|
|
|
|
|
|
|
Current pool management strategy: Failover
|
|
|
|
[A]dd pool [R]emove pool [D]isable pool [E]nable pool
|
|
|
|
[C]hange management strategy [S]witch pool [I]nformation
|
|
|
|
|
|
|
|
|
|
|
|
S gives you:
|
|
|
|
|
|
|
|
[D]ynamic mode: On
|
|
|
|
[L]ongpoll: On
|
|
|
|
[I]ntensity: Dynamic
|
|
|
|
[Q]ueue: 0
|
|
|
|
[S]cantime: 60
|
|
|
|
[R]etries: -1
|
|
|
|
[P]ause: 5
|
|
|
|
|
|
|
|
|
|
|
|
D gives you:
|
|
|
|
|
|
|
|
Toggle: [D]ebug [N]ormal [S]ilent [V]erbose [R]PC debug
|
|
|
|
[L]og interval [C]lear
|
|
|
|
|
|
|
|
|
|
|
|
and Q quits the application.
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
Also many issues and FAQs are covered in the forum thread
|
|
|
|
dedicated to this program,
|
|
|
|
http://forum.bitcoin.org/index.php?topic=28402.0
|
|
|
|
|
|
|
|
The output line shows the following:
|
|
|
|
[(5s):204.4 (avg):203.1 Mh/s] [Q:56 A:51 R:4 HW:0 E:91% U:2.47/m]
|
|
|
|
|
|
|
|
Each column is as follows:
|
|
|
|
A 5 second exponentially decaying average hash rate
|
|
|
|
An all time average hash rate
|
|
|
|
The number of requested work items
|
|
|
|
The number of accepted shares
|
|
|
|
The number of rejected shares
|
|
|
|
The number of hardware erorrs
|
|
|
|
The efficiency defined as the accepted shares / requested work
|
|
|
|
The utility defines as the number of shares / minute
|
|
|
|
|
|
|
|
The cgminer status line shows:
|
|
|
|
TQ: 1 ST: 1 LS: 0 SS: 0 DW: 0 NB: 1 LW: 8 LO: 1 RF: 1 I: 2
|
|
|
|
|
|
|
|
TQ is Total Queued work items.
|
|
|
|
ST is STaged work items (ready to use).
|
|
|
|
LS is Longpoll Staged work items (mandatory new work)
|
|
|
|
SS is Stale Shares discarded (detected and not submitted so don't count as rejects)
|
|
|
|
DW is Discarded Work items (work from block no longer valid to work on)
|
|
|
|
NB is New Blocks detected on the network
|
|
|
|
LW is Locally generated Work items (during slow server providing work)
|
|
|
|
LO is Local generation Occasions (server slow to provide work)
|
|
|
|
RF is Remote Fail occasions (server slow to accept work)
|
|
|
|
I is current Intensity (changes in dynamic mode).
|
|
|
|
|
|
|
|
NOTE: Running intensities above 9 with current hardware is likely to only
|
|
|
|
diminish return performance even if the hash rate might appear better. A good
|
|
|
|
starting baseline intensity to try on dedicated miners is 8. Higher values are
|
|
|
|
there to cope with future improvements in hardware.
|
|
|
|
|
|
|
|
|
|
|
|
FAILOVER STRATEGIES WITH MULTIPOOL:
|
|
|
|
A number of different strategies for dealing with multipool setups are
|
|
|
|
available. Each has their advantages and disadvantages so multiple strategies
|
|
|
|
are available by user choice, as per the following list:
|
|
|
|
|
|
|
|
FAILOVER:
|
|
|
|
The default strategy is failover. This means that if you input a number of
|
|
|
|
pools, it will try to use them as a priority list, moving away from the 1st
|
|
|
|
to the 2nd, 2nd to 3rd and so on. If any of the earlier pools recover, it will
|
|
|
|
move back to the higher priority ones.
|
|
|
|
|
|
|
|
ROUND ROBIN:
|
|
|
|
This strategy only moves from one pool to the next when the current one falls
|
|
|
|
idle and makes no attempt to move otherwise.
|
|
|
|
|
|
|
|
ROTATE:
|
|
|
|
This strategy moves at user-defined intervals from one active pool to the next,
|
|
|
|
skipping pools that are idle.
|
|
|
|
|
|
|
|
LOAD BALANCE:
|
|
|
|
This strategy sends work in equal amounts to all the pools specified. If any
|
|
|
|
pool falls idle, the rest will take up the slack keeping the miner busy.
|
|
|
|
|
|
|
|
---
|
|
|
|
LOGGING
|
|
|
|
|
|
|
|
cgminer will log to stderr if it detects stderr is being redirected to a file.
|
|
|
|
To enable logging simply add 2>logfile.txt to your command line and logfile.txt
|
|
|
|
will contain the logged output at the log level you specify (normal, verbose,
|
|
|
|
debug etc.)
|
|
|
|
|
|
|
|
In other words if you would normally use:
|
|
|
|
./cgminer -o xxx -u yyy -p zzz
|
|
|
|
if you use
|
|
|
|
./cgminer -o xxx -u yyy -p zzz 2>logfile.txt
|
|
|
|
it will log to a file called logfile.txt and otherwise work the same.
|
|
|
|
|
|
|
|
---
|
|
|
|
This code is provided entirely free of charge by the programmer in his spare
|
|
|
|
time so donations would be greatly appreciated.
|
|
|
|
|
|
|
|
Con Kolivas <kernel@kolivas.org>
|
|
|
|
15qSxP1SQcUX3o4nhkfdbgyoWEFMomJ4rZ
|