PhoenixMiner 2.9e: fastest Ethereum/Ethash miner with lowest devfee (Windows)

Changes in version 2.9e (since 2.8c):
Substantial improvements in the kernels for AMD GPUs, providing higher hashrate, lower percentage of stale shares, and slightly lower power consumption. The new kernels are used by default for AMD GPUs. You can still revert to using the old kernels with -clnew 0
Note that the optimal -gt values for the new AMD kernels may be different than before (but should be in the same ballpark)
Added alternative (-clkernel 2) kernels for AMD RX550, RX460/560, and 285/380. Just like the alternative kernels for Polaris (RX470/480/570/580), sometimes these can give you higher hashrate than then default (-clkernel 1) kernels.
Added optimized kernels for AMD RX550, based on the Baffin kernels (but we can’t test them as our RX550 turned out to use Baffin cores, so please let us know if they work for you)
New Nvidia kernels, providing higher hashrate and much lower percentage of stale shares. You can still revert to using the old CUDA kernels with -nvnew 0. The mining intensity (-mi) is by default 12 when using the new Nvidia kernels and 10 for the old kernels
New -clf parameter to control how often the OpenCL (AMD) kernels will sync (0 - never, 1 - sometimes (default), 2 - always). Try this if you have unstable hashrate on AMD GPU but in general, it is best to leave it alone
New -nvf parameter to control Nvidia kernel sync frequency (it is similar to the -clf parameter for AMD cards). Try -nvf 2 if you have permanent hashrate drops after pausing and resuming mining on Nvidia cards
Added -logfile parameter to be able to set the name of the logfile. If you place an asterisk (*) in the logfile name, it will be replaced by the current date/time to create a unique name every time PhoenixMiner is started. If there is no asterisk in the logfile name, the new log entries will be added to the same file. If you want to use the same logfile but the contents to be overwritten every time when you start the miner, put a dollar sign ($) character in the logfile name (e.g. -logfile my_log.txt$).
Added -logdir parameter to specify different folder for the logfiles
Added -logsmaxsize parameter to specify the max size of the log files (200 MB by default, 0 to turn off the automatic removal of oldest log files)
Added detection of AMD Compute mode in the supported drivers and GPUs. The detection is performed when the miner starts and if the Compute mode is off on some of the GPUs, you will get warning messages.
Added console command ‘y’ to turn on the AMD Compute mode if it is not turned on on some of the cards.
Fixed a problem with miner restart on some CUDA errors with Nvidia cards when the miner crashes instead of restarting.
Many small fixes and changes

PhoenixMiner is fast (arguably the fastest) Ethash (ETH, ETC, Muiscoin, EXP, UBQ, etc.) miner that supports
both AMD and Nvidia cards (including in mixed mining rigs). It runs under Windows x64
and has a developer fee of 0.65% (the lowest in the industry). This means that every 90
minutes the miner will mine for us, its developers, for 35 seconds.

The speed is generally faster than Claymore’s Ethereum miner in eth only mode
(we have measured about 0.4-1.3% speed improvement but your results may be slightly lower or
higher depending on the GPUs). To achieve highest possible speed on AMD cards it may be needed
to manually adjust the GPU tune factor (a number from 8 to about 400, which can be changed
interactively with the + and - keys while the miner is running).

If you have used Claymore’s Dual Ethereum miner, you can switch to PhoenixMiner with
minimal hassle as we support most of Claymore’s command-line options and confirguration
files with the notable exception of the dual mining feature (yet).

Please note that PhoenixMiner is extensively tested on many mining rigs but this is the
first public release and there still may be some bugs. Additionally, we are actively working on
bringing many new features in the future releases. If you encounter any problems or have
feature requests, please post them here (in this thread). We will do our best to answer in timely


  1. Quick start

You can download PhoenixMiner 2.9e from here:!TLBBBbQI!uxjkL1emv_0vZo6-dwj2OWbmctkVQv4ui4D_x8LlstE (MEGA)

If you want to check the integrity of the downloaded file, please use the following hashes:
SHA-1: e2b9c72e561ac0fdb4e3c9ebddd7d703a35da36c
SHA-256: 9817c89623025cf392a4e800a41cff96a87eee02e241d9f08d62dc43e0975e96
SHA-512: 33c78a73a53791c01bbfff2ad830ffd40d4007f69ca329300815ab1c189f744aafdc6683033cfcb0315db7f322e6dee44181b9dff2922b1fb408b0f04dba163b

Here are the command line parameters for some of the more popular pools and coins: (ETH):
PhoenixMiner.exe -pool -pool2 -wal YourEthWalletAddress.WorkerName -proto 3 (ETH, secure connection):
PhoenixMiner.exe -pool ssl:// -pool2 ssl:// -wal YourEthWalletAddress.WorkerName -proto 3 (ETH):
PhoenixMiner.exe -pool -pool2 -wal YourEthWalletAddress.WorkerName -proto 3 (ETH):
PhoenixMiner.exe -pool -wal YourEthWalletAddress/WorkerName -pass x (ETH):
PhoenixMiner.exe -pool -wal YourEthWalletAddress/WorkerName -pass x
nicehash (ethash):
PhoenixMiner.exe -pool stratum+tcp:// -wal YourBtcWalletAddress -pass x -proto 4 -stales 0
f2pool (ETH):
PhoenixMiner.exe -epool -ewal YourEthWalletAddress -pass x -worker WorkerName
miningpoolhub (ETH):
PhoenixMiner.exe -pool -wal YourLoginName.WorkerName -pass x -proto 1 (ETH):
PhoenixMiner.exe -pool -wal YourLoginName.WorkerName -pass x -proto 1 (ETC):
PhoenixMiner.exe -pool -wal YourEtcWalletAddress.WorkerName (EXP):
PhoenixMiner.exe -pool -wal YourExpWalletAddress/WorkerName
miningpoolhub (MUSIC):
PhoenixMiner.exe -pool -wal YourLoginName.WorkerName -pass x -proto 1
ubiqpool (UBIQ):
PhoenixMiner.exe -pool stratum+tcp:// -wal YourUbiqWalletAddress -pass x -worker WorkerName (PIRL):
PhoenixMiner.exe -pool -wal YourPirlWalletAddress -pass x -worker WorkerName (Metaverse ETP):
PhoenixMiner.exe -pool -wal YourMetaverseETPWalletAddress -worker Rig1 -pass x (Ellaism):
PhoenixMiner.exe -pool -wal YourEllaismWalletAddress -worker Rig1 -pass x (ETH PPS):
PhoenixMiner.exe -pool -wal YourEthWalletAddress.WorkerName -proto 4 -pass x (ETH HVPPS):
PhoenixMiner.exe -pool -wal YourEthWalletAddress.WorkerName -proto 4 -pass x

  1. Features, requirements, and limitations
  • Supports AMD Vega, 580/570/480/470, 460/560, Fury, 390/290 and older AMD GPUs with enough VRAM
  • Supports Nvidia 10x0 and 9x0 series as well as older cards with enough VRAM
  • Highly optimized OpenCL and CUDA cores for maximum ethash mining speed
  • Lowest developer fee of 0.65% (35 seconds defvee mining per each 90 minutes)
  • Advanced statistics: actual difficulty of each share as well as effective hashrate at the pool
  • DAG file generation in the GPU for faster start-up and DAG epoch switches
  • Supports all ethash mining pools and stratum protocols
  • Supports secure pool connections (e.g. ssl:// to prevent IP hijacking attacks
  • Detailed statistics, including the individual cards hashrate, shares, temperature and fan speed
  • Unlimited number of fail-over pools in epools.txt configuration file (or two on the command line)
  • GPU tuning for the AMD GPUs to achieve maximum performance with your rig
  • Supports devfee on alternative ethash currencies like ETC, EXP, Music, UBQ, Pirl, Ellaism, and Metaverse ETP. This allows you to use older cards with small VRAM or low hashate on current DAG epochs (e.g. GTX970).
  • Full compatibility with the industry standard Claymore’s Dual Ethereum miner, including most of command-line options, configuration files, and remote monitoring and management.
  • More features coming soon!

PhoenixMiner requires Windows x64 (Windows 7, Windows 10, etc.). We are planning a Linux version in
the future but it may take some time.

PhenixMiner does not support dual mining. However we are working on this feature and will introduce it
soon. Solo mining is supported since version 2.7c.

While the miner is running, you can use some interactive commands. Press the key ‘h’ while the
miner’s console window has the keyboard focus to see the list of the available commands. The
interactive commands are also listed at the end of the following section.

  1. Command-line arguments

Note that PhoenixMiner supports most of the command-line options of Claymore’s dual Ethereum miner
so you can use the same command line options as the ones you would have used with Claymore’s miner.

Pool options:
-pool host:port Ethash pool address (prepend the host name with ssl:// for SSL pool, or http:// for solo mining)
-wal Ethash wallet (some pools require user name and/or worker)
-pass Ethash password (most pools don’t require it, use ‘x’ as password if unsure)
-worker Ethash worker name (most pools accept it as part of wallet)
-proto Selects the kind of stratum protocol for the ethash pool:
1: miner-proxy stratum spec (e.g. coinotron)
2: eth-proxy (e.g. dwarfpool, nanopool) - this is the default, works for most pools
3: qtminer (e.g. ethpool)
4: EthereumStratum/1.0.0 (e.g. nicehash)
-coin Ethash coin to use for devfee to avoid switching DAGs:
auto: Try to determine from the pool address (default)
eth: Ethereum
etc: Ethereum Classic
exp: Expanse
music: Musicoin
ubq: UBIQ
pirl: Pirl
ella: Ellaism
etp: Metaverse ETP
pgc: Pegascoin
akroma: Akroma
whale: WhaleCoin
vic: Victorium
-stales Submit stales to ethash pool: 1 - yes (default), 0 - no
-pool2 host:port Failover ethash pool address. Same as -pool but for the failover pool
-wal2 Failover ethash wallet (if missing -wal will be used for the failover pool too)
-pass2 Failover ethash password (if missing -pass will be used for the failover pool too)
-worker2 Failover ethash worker name (if missing -worker will be used for the failover pool too)
-proto2 Failover ethash stratum protocol (if missing -proto will be used for the failover pool too)
-coin2 Failover devfee Ethash coin (if missing -coin will be used for the failover pool too)
-stales2 Submit stales to the failover pool: 1 - yes (default), 0 - no
General pool options:
-fret Switch to next pool afer N failed connection attempts (default: 3)
-ftimeout Reconnect if no new ethash job is receved for n seconds (default: 600)
-ptimeout Switch back to primary pool after n minutes. This setting is 30 minutes by default;
set to 0 to disable automatic switch back to primary pool.
-rate Report hashrate to the pool: 1 - yes, 0 - no (1 is the default)
Benchmark mode:
-bench [],-benchmark [] Benchmark mode, optionally specify DAG epoch. Use this to test your rig.
Remote control options:
-cdm Selects the level of support of the CDM remote monitoring:
0: disabled
1: read-only - this is the default
2: full (only use on secure connections)
-cdmport Set the CDM remote monitoring port (default is 3333). You can also specify
<ip_addr:port> if you have a secure VPN connection and want to bind the CDM port to it
-cdmpass Set the CDM remote monitoring password
Mining options:
-amd Use only AMD cards
-nvidia Use only Nvidia cards
-gpus <123 …n> Use only the specified GPUs (if more than 10, separate the indexes with comma)
-mi Set the mining intensity (0 to 14; 12 is the default for the new kernels on AMD GPUs; 10 is the default for Nvidia GPUs)
-gt Set the GPU tuning parameter (8 to 400). The default is 15. You can change the
tuning parameter interactively with the ‘+’ and ‘-’ keys in the miner’s console window
-clKernel Type of OpenCL kernel: 0 - generic, 1 - optimized, 2 - alternative (1 is the default)
-clNew Use the new AMD kernels (0: no, 1: yes; default: 1)
-clf AMD kernel sync (0: never, 1: periodic; 2: always; default: 1)
-nvNew Use new Nvidia kernels if supported (0: no, 1: yes; default: 1)
-nvf Nvidia kernel sync (0: never, 1: periodic; 2: always; default: 1)
-list List the detected GPUs devices and exit
-minRigSpeed Restart the miner if avg 5 min speed is below MH/s
-eres Allocate DAG buffers big enough for n epochs ahead (default: 2) to
avoid allocating new buffers on each DAG epoch switch, which should improve DAG switch stability
-lidag Slow down DAG generation to avoid crashes when swiching DAG epochs
(0-3, default: 0 - fastest, 3 - slowest). This option works only on AMD cards
-altinit Use alternative way to initialize AMD cards to prevent startup crashes
-wdog Enable watchdog timer: 1 - yes, 0 - no (1 is the default). The watchdog timer checks
periodically if any of the GPUs freezes and if it does, restarts the miner (see the -rmode
command-line parameter for the restart modes)
-rmode Selects the restart mode when a GPU crashes or freezes:
0: disabled - miner will shut down instead of restarting
1: restart with the same command line options - this is the default
2: reboot (shut down miner and execute reboot.bat)
-log Selects the log file mode:
0: disabled - no log file will be written
1: write log file but don’t show debug messages on screen (default)
2: write log file and show debug messages on screen
-logfile Set the name of the logfile. If you place an asterisk (*) in the logfile name, it will be
replaced by the current date/time to create a unique name every time PhoenixMiner is started. If there
is no asterisk in the logfile name, the new log entries will be added to end of the same file. If you
want to use the same logfile but the contents to be overwritten every time when you start the miner,
put a dollar sign ($) character in the logfile name (e.g. -logfile my_log.txt$).
-logdir Set a path where the logfile(s) will be created
-logsmaxsize Maximum size of the logfiles in MB. The default is 200 MB (use 0 to turn off the limitation).
On startup, if the logfiles are larger than the specified limit, the oldest are deleted. If you use a
single logfile (by using -logfile), then it is truncated if it is bigger than the limit and a new one
is created.
-timeout Restart miner according to -rmode after n minutes
-gswin GPU stats time window (5-30 sec; default: 15; use 0 to revert to pre-2.8 way of showing momentary stats)
-gpow Lower the GPU usage to n% of maximum (default: 100). If you already use -mi 0 (or other low value) use -li instead
-li Another way to lower the GPU usage. Bigger n values mean less GPU utilization; the default is 0.
Hardware control options (most are for AMD cards only, only tt 0-4, tstop, and tstart are supported on Nvidia GPUs), use comma to specify different values for each GPU:
-tt Set fan control target temperature (special values: 0 - no HW monitoring on ALL cards,
1-4 - only monitoring on all cards with 30-120 seconds interval, negative - fixed fan speed at n %)
-fanmin Set fan control min speed in % (-1 for default)
-fanmax Set fan control max speed in % (-1 for default)
-tmax Set fan control max temperature (0 for default)
-powlim Set GPU power limit in % (from -75 to 75, 0 for default)
-cclock Set GPU core clock in MHz (0 for default)
-cvddc Set GPU core voltage in mV (0 for default)
-mclock Set GPU memory clock in MHz (0 for default)
-mvddc Set GPU memory voltage in mV (0 for default)
-tstop Pause a GPU when temp is >= n deg C (0 for default; i.e. off)
-tstart Resume a GPU when temp is <= n deg C (0 for default; i.e. off)
General Options:
-v,–version Show the version and exit
-h,–help Show information about the command-line options and exit

Additionally, while the miner is running, you can use the following interactive commands
in the console window by pressing one of these keys:
s Print detailed statistics
1-9 Pause/resume GPU1 … GPU9 (if you have more than 9 GPUs, type 010 for card 10, 011 for card 11, etc.)
p Pause/resume the whole miner
+,- Increase/decrease GPU tuning parameter
g Reset the GPU tuning parameter
r Reload epools.txt and switch to primary ethash pool
e Select the current ethash pool (if you have more than 9 pools in the list, type 010 for pool 10, 011 for pool 11, etc.)
y Turn on AMD Compute mode if it is off on some of the GPUs
h Print this short help

  1. Configuration files

Note that PhoenixMiner supports the same configuration files as Claymore’s dual Ethereum miner
so you can use your existing configuration files without any changes.

Instead of using command-line options, you can also control PhoenixMiner with configuration
files. If you run PhoenixMiner.exe without any options, it will search for the file config.txt
in the current directory and will read its command-line options from it. If you want, you can
use file with another name by specifying its name as the only command-line option
when running PhoenixMiner.exe.

You will find an example config.txt file in the PhoenixMiner’s directory.

Instead of specifying the pool(s) directly on the command line, you can use another configuration
file for this, named epools.txt. There you can specify one pool per line (you will find an example
epools.txt file in the PhoenixMiner’s directory).

The advantages of using config.txt and epools.txt files are:

  • If you have multiple rigs, you can copy and paste all settings with these files
  • If you control your rigs via remote control, you can change pools and even the miner options by
    uploading new epools.txt files to the miner, or by uploading new config.txt file and restarting
    the miner.
  1. Remote monitoring and management

Phoenix miner is fully compatible with Claymore’s dual miner protocol for remote monitoring and
management. This means that you can use any tools that are build to support Claymore’s dual miner,
including the “Remote manager” application that is part of Claymore’s dual miner package.

We are working on much more powerful and secure remote monitoring and control functionality and
control center application, which will allow better control over your remote or local rigs and some
unique features to increase your mining profits.

  1. Hardware control options

Here are some important notes about the hardware control options:
If you specify a single value (e.g. -cvddc 1150), it will be used on all cards. Specify different values for each card like this (separate with comma): -cvddc 1100,1100,1150,1120,1090 If the specified values are less than the number of GPUs, the rest of GPUs will use the default values.
We have tested only on relatively recent AMD GPUs (RX460/470/480/560/570/580 and Vega). Your results may vary with older GPUs.
The blockchain beta drivers from AMD show quite unstable results - often the voltages don’t stick at all or revert back to the default after some time. For best results use the newest drivers from AMD: 18.1.1 or 18.2.1, where most of the bugs are fixed.
-tmax specifies the temperature at which the GPU should start to throttle (because the fans can’t keep up).
If you use other programs for hardware control, conflicts are possible and quite likely. Use something like GPU-Z to monitor the voltages, etc. MSI Afterburner also seems to behave OK (so you can use it to control the Nvidia cards while AMD cards are controller by PhoenixMiner).
This should be obvious but still: if given clocks/voltages are causing crahses/freezes/incorrect shares when set with third-party program, they will be just as much unstable when set via PhoenixMiner hardware control options.
If you have problems with hardware control options of PhoenixMiner and you were using something else to control clocks, fans, and voltages (MSI Aftrerburner, OverdriveNTool, etc.), which you were happy with, it is probably best to keep using it and ignore the hardware control options of PhoenixMiner (or use only some of them and continue tweaking the rest with your third-party tools).

  1. FAQ

Q001: Why another miner?
A: We feel that the competition is good for the end user. In the first releases of PhoenixMiner
we focused on the basic features and on the mining speed but we are now working on making our
miner easier to use and even faster.

Q002: Can I run several instances of PhoenixMiner on the same rig?
A: Yes, but make sure that each GPU is used by a single miner (use the -gpus, -amd, or -nvidia
command-line options to limit the GPUs that given instance of PhoenixMiner actually uses).
Another possible problem is that all instances will use the default CDM remote port 3333,
which will prevent proper remote control for all but the first instance. To fix this problem,
use the -cdmport command-line option to change the CDM remote port form its default value.

Q003: Can I run PhoenixMiner simultaneously on the same rig with other miners?
A: Yes, but see the answer to the previous question for how to avoid problems.

Q004: What is a stale share?
A: The ethash coins usually have very small average block time (15 seconds in most instances).
On the other hand, to achieve high mining speed we must keep the GPUs busy so we can’t switch
the current job too often. If our rigs finds a share just after the someone else has found a
solution for the current block, our share is a stale share. Ideally, the stale shares should be
minimal as same pools do not give any reward for stale shares, and even these that do reward
stale shares, give only partial reward for these shares. If the share is submitted too long
after the block has ended, the pool may even fully reject it.

Q005: Why is the percentage of stale shares reported by PhoenixMiner smaller than the one shown
by the pool?
A: PhonixMiner can only detect the stale shares that were discovered after it has received a
new job (i.e. the “very stale”) shares. There is additional latency in the pool itself, and in
the network connection, which makes a share stale even if it was technically found before the
end of the block from the miner’s point of view. As pools only reports the shares as accepted
or rejected, there is no way for the miner to determine the stale shares from the pool’s
point of view.

Q006: What is the meaning of the “actual share difficulty” shown by PhoenixMiner when a share is
A: It allows you to see how close you were to finding an actual block (a rare event these days
for the most miners with reasonable-sized mining rigs). You can find the current difficulty for
given coin on sites like and then check to see if you have exceeded it with your
maximum share difficulty. If you did, you have found a block (which is what the mining is all

Q007: What is the meaning of “effective speed” shown by PhoenixMiner’s statistics?
A: This is a measure of the actually found shares, which determines how the pool sees your
miner hashrate. This number should be close to the average hashrate of your rig (usually a 2-4%
lower than it) depending you your current luck in finding shares. This statistic is meaningless
in the first few hours after the miner is started and will level off to the real value with

Q008: Why is the effective hashrate shown by the pool lower than the one shown by PhoenixMiner?
A: There are two reasons for this: stale shares and luck. The stale shares are rewarded at only
about 50-70% by most pools. The luck factor should level itself off over time but it may take
a few days before it does. If your effective hashrate reported by the pool is consistently lower
than the hashrate of your rig by more than 5-7% than you should look at the number of stale shares
and the average share acceptance time - if it is higher than 100 ms, try to find a pool that is
near to you geographically to lower the network latency. You can also restart your rig, or
try another pool.

  1. Troubleshooting

P001: I’m using AMD RX470/480/570/580 or similar card and my hashrate dropped significantly in the past
few months for Ethereum and Ethereum classic!
S: This is known problem with some cards. For the newer cards (RX470/480/570/580), this can be
solved by using the special blockchain driver from AMD (or try the latest drivers, they may
incorporate the fix). For the older cards there is no workaround but you still can mine EXP,
Musicoin, UBQ or PIRL with the same speed that you mined ETH before the drop.

P002: My Nvidia GTX9x0 card is showing very low hashrate under Windows 10!
S: While there is a (convoluted) workaround, the best solution is to avoid Windows 10
for these cards - use Windows 7 instead.

P003: I’m using Nvidia GTX970 (or similar) card and my hashrate dropped dramatically for Ethereum or
Ethereum classic!
S: GTX970 has enough VRAM for larger DAGs but its hashate drops when the DAG size starts
to exceed 2 GB or so. Unlike the AMD Polaris-based cards, there is no workaround for this
problem. We recommend using these cards to mine EXP, Musicoin, UBQ or PIRL with the same speed
that you used to ETH before the drop.

P004: I can’t see some of my cards (or their fan speed and temperature) when using Windows Remote Desktop (RDP)!
S: This is a known problem with RDP. Use VNC or TeamViewer instead.

P005: On Windows 10, if you click inside the PhoenixMiner console, it freezes!
S: This is a known problem on Windows 10, related to so called “Quick Edit” feature of the command
prompt window. From PhoenixMiner 2.6, the QuickMode is disabled by default, so you shouldn’t experience
this problem. If you still, do, read here how to solve it:

P006: Immediately after starting, PhoenixMiner stops working and the last message is “debugger detected”
S: If you have only Nvidia cards, add the option -nvidia to the PhoenixMiner.exe command line.
If you have only AMD cards, add the option -amd to the command line.

P007: PhoenixMiner shows an error after allocating DAG buffer and shuts down.
S: If you have more than one GPU, make sure that your Windows page file minimal size is set to at
least 16 GB. If this doesn’t help, start PhoenixMiner by running the start_miner.bat that is in the
miner’s folder. You MUST change the wallet address that is specified in start_miner.bat to make
sure that the miner mines to your address. Also, make sure that all lines, starting with setx are
not commented (i.e. they doesn’t start with REM command).

P008: The miner sometimes crashes when the DAG epoch change.
S: During DAG generation, the GPUs are loaded more than during the normal operation. If you have
overclocked or undervolted the GPUs “to the edge”, the DAG generation ofter pushes them “over the
edge”. Another possible reason for the crash (especially if the whole rig crashes) is the higher
power usage during this process. You can lower the DAG generation speed by specifying the -lidag
command-line option. The possible values are 0 (no slow down), 1, 2, and 3 (max slowdown).
In order to check if your rig would be stable during DAG generation, run it in benchmark mode
by specifying the -bench 170 command line option. Then every time when you press the key ‘d’
the miner will advance to the next DAG epoch, and you will be able to see if it is stable during
multiple DAG generations. If it isn’t you can try to alter the -lidag and -eres command line options
until the desired stability is achieved.