- Reporting bugs and technical support
- Dev fee
- Setup
- Log Files
- Remote Monitoring
- Automatic Restart Function
- Parameters
- Configuration File
- Launching from command line
- Examples of Configuration Files
nanominer is a program product developed by nanopool to create structural cryptocurrency units on the framework of the Ethash, KawPow, Ubqhash, Cuckaroo30, RandomX and RandomHash2 algorithms. The present version of nanominer was made to work with every cryptocurrency based on these algorithms, including Ethereum, Ethereum Classic, QuarkChain, Ubiq, Monero, Pascal, Cortex, Ravencoin and many others. This version of nanominer runs on Windows or Linux with AMD or Nvidia graphics cards (with the exception of RandomX and RandomHash2 algorithms which are supported only on CPU). Cuckaroo30 algorithm is only supported on AMD Radeon RX 570 16 GB GPU. Ravencoin's KawPow algorithm is only supported on AMD GPUs, Nvidia support to follow.
In order to work with Nvidia GPUs nanominer needs Nvidia driver 410.48 and newer on Linux or 411.31 and newer on Windows.
In order to begin mining Ethereum with nanominer, it's enough to simply input your wallet in the configuration file.
Testing on nanominer demonstrated high performance working with Ethereum, Ethereum Classic, QuarkChain, Ubiq, Monero, Pascal, Cortex and other currencies. As a result of the research carried out, it was found that nanominer performs on par with, and sometimes better than, competing program products. Independently of this, nanominer stands out with its high stability and simple setup.
For reporting bugs, technical support, feature requests and community discussions feel free to use the following communication channels:
- Support email: [email protected]
- GitHub issues tracker: https://github.com/nanopool/nanominer/issues
- Community chat in telegram (developers read it too): https://t.me/nanominer_en
- Our Discord channel https://discord.gg/eyWkqG3
Payment for the use of nanominer takes the form of a commission from mining to its wallets once per 2 hours of runtime. The commission is:
- 1% of total mining time for Ethash and Ubqhash algorithms (72 seconds per 2 hours);
- 2% for KawPow on GPU (144 seconds per 2 hours);
- 2% for RandomX on CPU (144 seconds per 2 hours);
- 5% for RandomHash2 on CPU (180 seconds every hour).
- 5% for Cuckaroo30 algorithm (360 seconds per 2 hours);
At launch nanominer reads the config.ini setup file from the program's current directory. In order to assign a specific name to the config file, it should be written as the first argument in the command line. For example:
nanominer.exe config_etc.ini
When launching with the -d command line option (e.g. nanominer.exe -d
) the miner displays a list of the devices it detects, including their PCI addresses and their amount of memory. In order to use this function on Windows the program must be launched from the command prompt (cmd).
nanominer does not require any pools to be specified in the config file. If a pool (or list of pools) is not specified, nanominer will automatically use the pools on nanopool.org corresponding to the chosen cryptocurrency (except for coins not listed on Nanopool). QuarkChain public full nodes (fullnode.quarkchain.io and fullnode2.quarkchain.io) which are maintained by QuarkChain developers are used by default for QuarkChain.
When nanominer starts up it displays the main work information in the console log, including the program’s current version, the name of the rig, the number and type of graphics cards installed and the program’s current settings.
The event log function on nanominer is automatically activated each time the program starts up. The log files that are created contain all the information displayed on the console while the miner is running. By default, the log files are saved in the logs folder of the program's current directory. Deactivating event logging, as well as assigning a random catalogue for recording log files, can be done by using the corresponding configuration parameters (see the examples in the Parameters section of this file).
nanominer has web interface for getting rig statistics, discovering other instances of nanominer in the local network and managing them. You can edit miners' config via web as well as restart the miners. In order to perform these actions on a running instance of nanominer, its config must contain a password for web interface (see the webPassword option). By default nanominer starts a HTTP server on port 9090, which can be found on http://127.0.0.1:9090. In the program's config file, the port can be configured and the API function can be deactived with the webPort option (or it can be set to 0 to disable web interface). BoringAPI for getting rig statistics is supported aswell, which can be found on http://127.0.0.1:9090/stats.
nanominer also supports the network API program EthMan for rig monitoring. By default it opens port 3333 in “read-only” mode without the ability to restart the miner or rig through the network. In the program's config file, the port can be configured and the API function can be deactived with the mport function. The config file also lets you set a password for monitoring with the ethmanPassword option.
With default settings, nanominer will automatically restart if it encounters critical errors in the GPU or lag. (These errors usually arise due to hardware problems or overclocking the GPU.) The automatic restart function can be deactivated using the watchdog parameter.
Likewise, the minHashrate (minimum hashrate) parameter allows the user to set the value of the minimum hashrate which, if exceeded, will cause the miner to restart. This function uses the average hashrate over the last ten minutes, as displayed in blue in the console log. If the average hashrate over 10 minutes is lower than the set value, the miner will restart. With default settings the minimum hashrate is not set.
Another function on nanominer that improves the miner's automatic functioning is handled by the restarts parameter.It sets the number of times the miner restarts before rebooting the worker (rig). By default the miner will only restart itself.
More detailed information on using these functions can be found in the Parameters section of this file.
The settings for nanominer can be found in the configuration file with the *.ini extension (config.ini by default). Config file can contain common params and algorithm params (in sections with corresponding algorithm names). Section names can be defined as “Ethash”, “KawPow”, “Ubqhash”, “Cuckaroo30”, “RandomX” or “RandomHash2”. Configuration file must be in the following format:
commonparameter1=commonvalue1
commonparameter2=commonvalue2
commonparameterX=commonvalueX
[AlgoName1]
devices=0,1
wallet = wallet1
algoparameter1=algovalue1_1
algoparameter2=algovalue1_2
algoparameterY=algovalue1_Y
[AlgoName2]
devices=2,3
wallet = wallet2
algoparameter1=algovalue2_1
algoparameter2=algovalue2_2
algoparameterZ=algovalue2_Z
[AlgoName3]
devices=4,5
wallet = wallet3
More config examples can be found below.
This file permits the presence of empty lines and comments. Comment lines should begin with a ";" (semicolon). The parameters and values are not case-sensitive, which means it makes no difference to the program whether you type ETH, eth or Eth, or whether you type wallet or Wallet. If an incorrect value is set for a parameter, the default value will be used instead (note that this rule does not apply to the wallet parameter).
What follows is a list of the parameters that can be set on nanominer.
Mandatory parameter. This is the user's wallet, where funds will be deposited.
Optional algorithm parameter, can be defined for wallets created on an exchange where the user has a personal payment number in addition to their wallet. Currently used only for Pascal.
Optional algorithm parameter. This chooses the default coin for the pool. The default pool is nanopool.org. The coin parameter accepts one of the following values: ETH (or Ethereum), ETC (or Ethereum Classic), RVN (or Raven), QKC (or QuarkChain), UBQ (or Ubiq), XMR (or Monero), CTXC (or Cortex), PASC (or Pascal). When a coin is specified and equals one of the values mentioned above, nanominer automatically tries to determine the pool necessary for it to function if none have been provided in a separate parameter. If a coin is specified but nanominer cannot recognize it, then the name of the coin is used only for logging. If a coin is not specified, nanominer will use the default coin for the corresponding algorithm. Moreover, if nanopool.org is specified in the configuration file for Ethereum, Ethereum Classic or Monero, nanominer will determine the coin from the pool's settings.
Important: when using nanominer to mine Ethereum Classic on the default pool, it is necessary to define the coin (coin=ETC). In that case the pools will be determined automatically.
If the pools are clearly defined with the aid of the pool1, pool2, ..., parameters, then nanominer will function according to the tasks it receives from those pools.
Optional algorithm parameter. Can be specified in common parameter section instead of the algorithm section to be applied for all algorithms at once. This is the name of the rig (computer/worker). It will be displayed in the pool's statistics. If this parameter is not set, the program will generate a unique name and provide it to the pool. To disable rigname completely just set it to empty string with
rigName=
Optional algorithm parameter. Can be specified in common parameter section instead of the algorithm section to be applied for all algorithms at once. This is the user’s e-mail address. It is provided to the pool where the rig will be operating. The pool can use it when sending out service notifications.
Optional algorithm parameter.
This defines the set of mining pools used. Values must be given in the format url:port (e.g. pool1=eth-eu1.nanopool.org:9999
). The parameters should be defined in ascending, sequential order, from pool1 to poolN (for example: pool1, pool2, pool3). If the pool list is provided, the best pool will be chosen from the order of the pool list. If a sortPools=true
option is specified, the best pool will be chosen by the connection speed. If the pool (or list of pools) is not defined, nanominer will automatically use the pools on nanopool.org that correspond to the chosen cryptocurrency. For QuarkChain public full nodes are used if no pools are defined. For Ubiq Ubiqpool.io pools are used if no pools are defined.
Optional algorithm parameter. Can be used to set the pool protocol to stratum. If not specified, nanominer will try to detect the pool protocol automatically.
Optional algorithm parameter. The password for the rig (or worker). It may be necessary when working with pools that require registration and setting a rig password.
Optional common parameter. This parameter manages the miner's restart function when running into critical GPU errors or lag. It accepts the values true or false. By default, true – automatic restart – is activated.
Optional algorithm parameter. This is the minimum acceptable hashrate. This function keeps track of the rig's total hashrate and compares it with this parameter. If five minutes after the miner is launched the set minimum is not reached, nanominer will automatically restart. Likewise, the miner will restart if for any reason the average hashrate over a ten-minute period falls below the set value. This value can be set with an optional modifier letter that represents a thousand for kilohash or a million for megahash per second. For example, setting the value to 100 megahashes per second can be written as 100M, 100.0M, 100m, 100000k, 100000K or 100000000. If this parameter is not defined, the miner will not restart (with the exception of the situations described in the watchdog section).
Optional paramter. These are the graphics cards that will be used by the miner. If you do not want to launch the miner on all available GPUs but only on some of them, their numbers can be provided in the devices parameter separated by a comma or space. nanominer numbers the GPUs starting from zero in ascending order of their PCI addresses. You can see a list of available GPUs and the order in which they're in by launching nanominer with the -d command line option:
nanominer -d
For example, if there are four GPUs in the system (0, 1, 2, 3) and all but the second-to-last one (indexed as 2) must be set to mine, then the devices option must be set in the following manner:
devices=0,1,3
The order of devices determines the order of displayed hashrate. For example, if it is set as
devices=3,1,0
then the hashrate line will first display GPU3, then GPU1 and finally GPU0.
Optional common parameter. This parameter accepts the values true or false (the default is true). If this parameter is set to false then nanominer stops checking for the newest release version on every startup.
Optional common parameter. This parameter accepts the values true or false (the default is false). If this parameter is set to true and checking for updates is enabled, then nanominer will update itself on every startup, provided there is a newer version available.
Optional common parameter. This parameter sets the number of times the miner will restart before rebooting the rig. In case of GPU problems like hardware errors or lag, or in case of hashrate degradation (if the minhashrate option is used), nanominer will restart. However, certain errors cannot be fixed by restarting the program. In such cases it is necessary to reboot the rig. To reboot, the miner loads the reboot.bat script from the current directory if running on Windows or reboot.sh if on Linux:
reboot
The reboot.sh file on Linux must be given execute permissions in order for it to work. The typical content of the reboot.bat script for Windows:
shutdown /r /t 5 /f
The script must be written by the user.
To run reboot script instead of restarting miner every time a critical error occurs, just set restarts=0
Optional common parameters. Can be used to overclock/underclock NVIDIA GPU's. Absolute (e.g. 4200) as well as relative (e.g. +200, -150) values in MHz are accepted. Parameter values must be separated by a comma or space (first value is for GPU0, second is for GPU1, and so on). For example, if it is set as
coreClocks=+200,-150
memClocks=+300,3900
then GPU0 will be overclocked by 200 MHz of core and 300 MHz of memory, whereas GPU1 core clock will be underclocked by 150 MHz, and its memory clock set to 3900 MHz. You can also apply same settings for each GPU by defining only one core and memory clock value, for example:
coreClocks=+200
memClocks=+300
Optional common parameter. Can be used to set Nvidia cards power limits from -50 to 50. For example, -20 means 80% power limit, 10 means 110% power limit. Parameter values must be separated by a comma or space (first value is for GPU0, second is for GPU1, and so on). You can also apply same settings for each GPU by defining only one power limit value.
Optional common parameter. Can be set to modify AMD GPU timings on the fly for Ethash algorithm. The following AMD ASICs are currently supported: gfx900, gfx901, gfx906, gfx907, Baffin, Ellesmere, gfx804, Hawaii, Tahiti, Pitcairn, Tonga.
Miner must be launched using admin/root privileges in order to change timings.
Default memory tweak value is 1 which means slightly improving memory timings. Zero value means timings are left as is without modifications. Parameter values must be separated by a comma or space (first value is for GPU0, second is for GPU1, and so on). Supported memory tweak value range is from 0 to 10 (0 means disabling timings modification, 1 is the least intense, 10 is the most intense), for example:
memTweak=9,8,10
It is recommended to begin from lower values and increase them if the miner works stably.
You can also apply same settings for each GPU by defining only one memory tweak value:
memTweak=10
Optional algorithm parameter. Ethash algorithm specific option to check miner behaviour on different Ethash epochs.
Optional common parameter. This parameter accepts the values true or false (the default is false). If this parameter is set to true then no log files will be recorded onto the hard drive.
Optional common parameter. This parameter accepts the values true or false (the default is false). If this parameter is set to true then the console output won't contain any colors.
Optional common parameter.
This parameter can either be used to set the name of the folder in which log files will be created (e.g. logPath=logfolder/
), or to specify a path to single file, which will be used for all logs (e.g. logPath=logs/log.txt
, logPath=/var/log/nanominer/log.txt
, logPath=C:\logs\log.txt
). Both relative and absolute paths work.
Default value for this parameter is logs/.
Optional common parameter. Password for web interface. There is no password by default (web interface is read-only).
Optional common parameter. Port for web interface. The default port is 9090. Zero value disables web interface.
Optional common parameter. This is the network port for remote monitoring and program management through EthMan or other programs that use a similar API protocol format. The program supports all API functions, including restarting the miner and rig(s). You can block miner management through API (in which case the miner will only display the statistics and won't respond to any commands). To enable this function, a "minus" (-) sign must be written before the port number. And you can completely deactivate remote monitoring. To do this, the port number must be set to "0" (zero). Default value: -3333 (This means that the miner blocks management through API and displays statistics on port 3333).
Optional common parameter. Your password for monitoring with EthMan and other utilities that support the same network API.
Optional common parameter. This parameter accepts the values true or false (the default is true). If this parameter is set to true then miner always tries to use SSL pool connection first and fallbacks to unencrypted connection if SSL connection failed. If this parameter is set to false then miner doesn't try using SSL for pool connection.
Optional algorithm parameter.
Can be used to set a shard ID for QuarkChain solo mining. This parameter should be specified in hex, e.g. 0x1, 0x10001, 0x10002, 0x50001, etc. For root chain shard ID null
must be specified. For more information on shards, visit this and this link. Default shard ID is 0x1. Shard ID is passed to QuarkChain node "as is" so all current and future Ethash shards are supported.
Optional algorithm parameter. The interval (in milliseconds) between polling the node for new jobs in solo mining mode for QuarkChain. Default value is 200.
Optional algorithm parameter for CPU mining. Specifies the number of concurrent CPU threads to use for mining. All threads are used by default.
Optional algorithm parameter. This parameter accepts the values true or false (the default is false). If this parameter is set to true then the best pool will be chosen by least ping (not by the pool list).
Optional algorithm parameter for Ethash and Ubqhash algorithms. This parameter accepts the values true or false. The default value is true (if JSON-RPC pool protocol is used).
The minimum configuration file for Ethereum may contain only a wallet:
wallet=<wallet>
nanominer will automatically use Ethereum pools.
To work with Ethereum Classic, the coin must be specified:
wallet=<wallet>
coin=ETC
In this case nanominer will use pools corresponding to Ethereum Classic.
For coins that are not supported by nanopool.org, you must specify a wallet and pools (pool1...).
The best way to configure nanominer is using simple config file. For those who need to run a single command line for some reason there are scripts to do so in helper_scripts folder. A batch/shell file can be created to launch nanominer with command line arguments. This file must call the cmdline_launcher script (cmdline_launcher.bat on Windows, cmdline_launcher.sh on Linux), which converts the command line into a config called config_cmdline.ini and launches the miner with it. At least one algorithm and wallet must be passed to the cmdline_launcher script. All common config parameters in the command line must be specified before the first "algo" parameter. Here are some examples of command lines for launching Ethereum and Pascal:
Windows:
cmdline_launcher -algo ethash -wallet YOUR_ETH_WALLET -coin eth -rigName YOUR_ETH_WORKER -email YOUR_EMAIL -algo randomhash2 -wallet YOUR_PASC_WALLET -coin pasc -rigName YOUR_PASC_WORKER -email YOUR_EMAIL
Linux:
./cmdline_launcher.sh -algo ethash -wallet YOUR_ETH_WALLET -coin eth -rigName YOUR_ETH_WORKER -email YOUR_EMAIL -algo randomhash2 -wallet YOUR_PASC_WALLET -coin pasc -rigName YOUR_PASC_WORKER -email YOUR_EMAIL
Example of a configuration file for Ethereum and Pascal:
[Ethash]
wallet = 0xffffffffffffffffffffffffffffffffffffffff
rigName = rig1
email = someemail@org
pool1 = eth-eu1.nanopool.org:9999
pool2 = eth-eu2.nanopool.org:9999
pool3 = eth-us-east1.nanopool.org:9999
pool4 = eth-us-west1.nanopool.org:9999
pool5 = eth-asia1.nanopool.org:9999
pool6 = eth-jp1.nanopool.org:9999
pool7 = eth-au1.nanopool.org:9999
[RandomHash2]
wallet = 123456-77
paymentId = ffffffffffffffff
rigName = rig1
email = someemail@org
pool1 = pasc-eu1.nanopool.org:15556
pool2 = pasc-eu2.nanopool.org:15556
pool3 = pasc-us-east1.nanopool.org:15556
pool4 = pasc-us-west1.nanopool.org:15556
pool5 = pasc-asia1.nanopool.org:15556
Example of a configuration file for Ethereum:
[Ethash]
wallet = 0xffffffffffffffffffffffffffffffffffffffff
rigName = rig1
email = someemail@org
pool1 = eth-eu1.nanopool.org:9999
pool2 = eth-eu2.nanopool.org:9999
pool3 = eth-us-east1.nanopool.org:9999
pool4 = eth-us-west1.nanopool.org:9999
pool5 = eth-asia1.nanopool.org:9999
pool6 = eth-jp1.nanopool.org:9999
pool7 = eth-au1.nanopool.org:9999
Example of an equivalent file for Ethereum:
[Ethash]
wallet = 0xffffffffffffffffffffffffffffffffffffffff
rigName = rig1
email = someemail@org
Example of a minimum file for Ethereum:
[Ethash]
wallet=0xffffffffffffffffffffffffffffffffffffffff
Example of a configuration file for Ethereum Classic:
[Ethash]
wallet = 0xffffffffffffffffffffffffffffffffffffffff
coin=Etc
rigName = rig1
email = someemail@org
pool1 = etc-eu1.nanopool.org:19999
pool2 = etc-eu2.nanopool.org:19999
pool3 = etc-us-east1.nanopool.org:19999
pool4 = etc-us-west1.nanopool.org:19999
pool5 = etc-asia1.nanopool.org:19999
pool6 = etc-jp1.nanopool.org:19999
pool7 = etc-au1.nanopool.org:19999
Example of an equivalent file for Ethereum Classic:
[Ethash]
wallet = 0xffffffffffffffffffffffffffffffffffffffff
coin=Etc
rigName = rig1
email = someemail@org
Example of a minimum file for Ethereum Classic:
[Ethash]
wallet=0xffffffffffffffffffffffffffffffffffffffff
coin=Etc
Example of a complete configuration file for solo QuarkChain mining:
[Ethash]
wallet=0xffffffffffffffffffffffffffffffffffffffff
shardId=0x30001
farmRecheck=200
coin=Qkc
pool1=localhost:38391
protocol=getwork
Example of a minimum file for solo QuarkChain mining:
[Ethash]
wallet=0xffffffffffffffffffffffffffffffffffffffff
coin=Qkc
pool1=localhost:38391
shardId=0x50001
Example of a file for solo QuarkChain mining on root shard:
[Ethash]
wallet=0xffffffffffffffffffffffffffffffffffffffff
coin=Qkc
pool1=localhost:38391
shardId=null
Example of a minimum file for QuarkChain mining using public nodes:
[Ethash]
wallet=0xffffffffffffffffffffffffffffffffffffffff
coin=Qkc
shardId=0x30001
Example of a configuration file for Ubiq:
[Ubqhash]
wallet = 0xffffffffffffffffffffffffffffffffffffffff
coin=Ubq
rigName = rig1
email = someemail@org
pool1 = us.ubiqpool.io:8008
pool2 = eu.ubiqpool.io:8008
Example of a minimum file for Ubiq:
coin=UBQ
wallet=0xffffffffffffffffffffffffffffffffffffffff
Example of a complete file for Monero:
[RandomX]
wallet = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
rigName = rig1
email = someemail@org
pool1 = xmr-eu1.nanopool.org:14433
pool2 = xmr-eu2.nanopool.org:14433
pool3 = xmr-us-east1.nanopool.org:14433
pool4 = xmr-us-west1.nanopool.org:14433
pool5 = xmr-asia1.nanopool.org:14433
Example of an equivalent file for Monero:
[RandomX]
wallet = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
rigName = rig1
email = someemail@org
Example of a minimum file for Monero:
[RandomX]
wallet = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
Example of a complete file for Cortex:
[Cuckaroo30]
wallet = 0xffffffffffffffffffffffffffffffffffffffff
rigName = rig1
pool1=eu.frostypool.com:8008
pool2=us.frostypool.com:8008
pool3=asia.frostypool.com:8008
sortPools=true
Example of a complete file for Pascal:
[RandomHash2]
wallet = 123456-77
paymentId = ffffffffffffffff
rigName = rig1
email = someemail@org
pool1 = pasc-eu1.nanopool.org:15556
pool2 = pasc-eu2.nanopool.org:15556
pool3 = pasc-us-east1.nanopool.org:15556
pool4 = pasc-us-west1.nanopool.org:15556
pool5 = pasc-asia1.nanopool.org:15556
Example of an equivalent file for Pascal:
[RandomHash2]
wallet = 123456-77
paymentId = ffffffffffffffff
rigName = rig1
email = someemail@org
Example of a minimum file for Pascal:
[RandomHash2]
wallet = 123456-77
To mine Pascal in a solo mode please provide ip and port of Pascal full node Wallet software. The wallet number filled in config does not matter in such case. Block payload would be "Miner Name" set up in Pascal full node Wallet followed by nanominer version. Example of a file for solo mining Pascal using local wallet software:
wallet = 0
pool1 = 127.0.0.1:4009
Example of a configuration file for Ravencoin:
[Kawpow]
wallet = Rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
coin=Rvn
rigName = rig1
email = someemail@org
pool1 = rvn-eu1.nanopool.org:12433
pool2 = rvn-eu2.nanopool.org:12433
pool3 = rvn-us-east1.nanopool.org:12433
pool4 = rvn-us-west1.nanopool.org:12433
pool5 = rvn-asia1.nanopool.org:12433
pool6 = rvn-jp1.nanopool.org:12433
pool7 = rvn-au1.nanopool.org:12433
Example of a minimum file for Ravencoin:
wallet=Rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Example of configuration file for mining Ethereum, Cortex, Ubiq and Pascal on same 8 GPUs rig using separate devices:
rigName = rig1
[Ethash]
wallet = 0xffffffffffffffffffffffffffffffffffffffff
devices = 0,1
[Cuckaroo30]
wallet = 0xffffffffffffffffffffffffffffffffffffffff
devices = 5
pool1=eu.frostypool.com:8008
[Ubqhash]
wallet = 0x1111111111111111111111111111111111111111
pool1 = eu.ubiqpool.io:8008
devices = 2,3,4,6,7
[RandomHash2]
wallet=123456-77