Options:
-a, --algo=ALGORITHM Selects the mining algorithm. Currently available:
ethash (eth, etp, others)
etchash (etc, alias for -a ethash --eth_variant_mode=etchash)
kawpow (ravencoin)
firopow (firo)
mtp_firopow (chooses firopow or mtp and shuts down miner at the fork on Oct 26 2021)
autolykos2 (ergo)
verthash (vtc)
ton (ton)
kas (kaspa)
nimiq (nimiq)
lyra2z
phi2 (lux, argoneum)
lyra2rev3
x16r
x16rv2
x16s (pgn, xsh)
x16rt (gin)
mtp (zcoin/firo before the firopow fork)
cuckatoo31_grin (grin)
cuckarood29_grin (grin)
cnv8
cnr (old monero)
cnv8_half (stellite, masari)
cnv8_dbl (x-cash)
cnv8_rwz (graft)
cnv8_trtl (old turtlecoin, loki)
cnv8_upx2 (uplexa)
cn_heavy (classic CN heavy)
cn_haven (haven)
cn_saber (bittube)
cn_conceal (conceal)
trtl_chukwa (turtlecoin)
trtl_chukwa2 (turtlecoin)
-h, --help Display this help message and exit.
--debug Enables debug log output.
--hardware=HW_LIST Specifies which types of hardware the miner should try to run, in a comma separated list.
Currently supported values are 'gpu' and 'fpga'. For example:
--hardware=gpu,fpga
--benchmark Enables benchmarking mode. All defined pools will be ignored and a single internal fake pool
added automatically. For benchmarking algos like eth and kawpow at specific epochs and block
heights you also need to add algo-specific arguments like --eth_epoch=456 and --prog_height=123456.
--disable_colors Disables console output colors.
--force_colors Forces console color output even if the terminal does not seem to support them.
--api_listen=IP:PORT Enables the sgminer compatible api. IP:PORT is optional. If present, the IP:PORT combo
decides the interface(s) and port to listen to. Default is 127.0.0.1:4028. For
external access, use e.g. 0.0.0.0:4028. It's also valid to only specify the
port, e.g. 4029. Multiple instances of this argument is now possible for separate endpoints.
--api2_listen=IP:PORT Enables a second api port for dual mining setups. This api endpoint will provide data for the
dual mining algo, just like if two separate miner instances were running in parallel. The
default setting is 127.0.0.1:4029, i.e. the port is 4029 and not 4028. For specifying your
own choice, the argument is formatted like --api_listen. Multiple instances of this argument is
now possible for separate endpoints.
--cm_api_listen=IP:PORT Enables the claymore compatible api. IP:PORT is optional. If present, the IP:PORT combo
decides the interface(s) and port to listen to. Default is 127.0.0.1:3333. For
external access, use e.g. 0.0.0.0:3333. It's also valid to only specify the
port, e.g. 3334.
--cm_api_password=PSW Sets the required password for the CM compatible api interface.
--log_file(=FILENAME) Enables logging of miner output into the file specified by FILENAME. If no filename
is provided, the miner will log to trm_<algo>_<yyyymmdd_hhmmss>.log in the current
working directory. If the log file already exists, the miner will append.
-l, --log_interval=SEC Set the time interval in seconds for averaging and printing GPU hashrates.
SEC sets the interval in seconds, and must be > 0.
--log_rotate=SZ[,CNT] Enables log rotation. The SZ value sets the log size after which a new log file will be
created. The SZ value supports the suffixes 'k', 'M', and 'G' and will multiply the
value by 1024, 1048576, and 1073741824 respectively. The optional CNT value sets the
maximum number of old log files to keep. For example the option '--log_rotate=4M,16'
will cause the miner to switch to a new log file once the current log file exceeds
4194304 bytes in size, and the miner will keep the last 16 such files and delete
older ones.
--short_stats Disables the full gpu state output in each hashrate output, like it was before 0.7.10.
--dev_location=LOC Selects a specific location for the dev fee connection. Only use this if you see
continuous dev fee connection issues reported by the miner. The connection
management normally works well in all locations. Available options are:
world - Anywhere in the world except for mainland China.
non-gcp - Countries with blocked access to Google Services (e.g. Iran, Cuba).
cn - Mainland China.
eu - EU, Russia, Ukraine and nearby.
us - US, Canada, Central/South America.
asia - Asia ex China.
--enable_compute (Windows only) Enables compute mode and disables crossfire on necessary gpus.
--long_timestamps Enables microsec timestamps in the logs instead of seconds only.
--restart_gpus (Windows only) Restarts all configured gpus before mining, i.e. disable+enable PCI device.
--uac (Windows only) Enable privilege escalation when the miner runs tasks like restarting gpus.
You can always avoid this by running the miner directly as Administrator. This will
trigger the standard Windows escalation prompt, so you have to be available to click 'Yes'.
If this is not enabled, tasks that require Administrator privileges will fail when the
miner is running under a basic user account.
--high_score Enables printouts of the top 15 shares found since miner start in the stats output.
Note: this might not be enabled for all algos.
--allow_dup_bus_ids Allows multiple gpus using the same pci bus id. This should only be used for Radeon Pro Duo
cards and similar hardware, it's normally an indication of a broken OpenCL environment.
--dns_https=URL Enables pool DNS resolution using DNS-over-HTTPS. This is an experimental feature. TRM only
supports the JSON-based variant, not the mechanism defined later in RFC8484. The user must
provide the full https url including the method name. It is allowed to pass hostnames
rather than raw IP addresses, but such hostnames will be resolved using system DNS.
The following are a few examples that have been verified to work:
--dns_https=https://8.8.8.8/resolve (Google DNS)
--dns_https=https://9.9.9.9:5053/dns-query (Quad9)
--dns_https=https://1.1.1.1/dns-query (Cloudflare DNS service)
--dns_https_sni=HOST When the --dns_https argument is used, the default behavior is to not send a SNI in the
SSL/TLS connection. Using this argument, you can force any SNI to be sent. Please note
that this is an advanced network argument and most users do not need to use it.
--kernel_vm_mode=X (Linux only). Automates setting the necessary kernel parameters in /etc/default/grub on Linux
systems based on Debian/Ubuntu. This covers most mining distros. The system can be rebooted
automatically using /sbin/reboot when the kernel parameters are modified. If the correct
parameters already are in place the miner and helper script will do nothin. This means that
this argument can always be present on the command line. Valid values are:
N - no mode configured, removes existing parameters for C- or R-mode. No reboot on change.
C - old Radeon VII C-mode. No reboot on change.
R - new R-mode for all gpus except Polaris. No reboot on change.
RN - no mode configured, removes existing parameters for C- or R-mode. Reboots on change.
RC - old Radeon VII C-mode. Reboots on change.
RR - new R-mode for all gpus except Polaris. Reboots on change.
--kernel_vm_mode_script=X (Linux only). Specifies the script to call for setting new kernel mode parameters.
The script must act like the default TRM script included in the miner distribution package,
called ubuntu_mode_script.sh. This argument should normally not be necessary.
--gpu_sdma=on|off Controls whether direct sdma operations are used by the driver to copy memory from/to
the gpu. This argument is only needed in very special situations. For example, the AMD BC-250
does not support sdma and needs --gpu_sdma=off. If you experience hangs directly at gpu
initialization, but other miners or older TRM versions work fine, try --gpu_sdma=off.
This setting is an environment setting and controls all gpus.
Pool config options:
-o, --url=URL Sets the pool URL. Currently stratum+tcp and stratum+ssl URLs are supported.
Each additional time this option is specified will start a new pool config.
Per-pool options (such as -u, -p) will need to be explicitly specified
again for each new pool. (See the example start_multipool.sh/bat file)
The multi-pool strategy for the miner is set with the --pool_strategy option.
There is also special support for advanced SSL/TLS setups where you need to
pass a SNI hostname to the SSL endpoint. For example, this is necessary for SSL
endpoints that act as frontends for multiple hosts and need to know which one
to provide a certificate for. In such cases, use the following format:
-o stratum+ssl://pool.tunnel.com/pool.realhostname.com:3333
This will connect to pool.tunnel.com:3333 but pass pool.realhostname.com as the SNI
hostname in the SSL handshake phase. The two hostnames can of course be identical as well.
-u, --user=USERNAME Sets the username for pool authorization.
-p, --pass=PASSWORD Sets the password for pool authorization.
--pool_force_ensub Forces an extranonce subscribe request for supported pools unknown to the miner.
--pool_no_ensub Prevent miner from sending extranonce subscribe request to the pool.
--pool_broken_rpc Tells the miner to only allow a single outstanding rpc request on the pool
connection. This is a work-around for pools that violate the json rpc
specification regarding rpc IDs.
--pool_ratio=RATIO Sets the hashrate ratio between pools when using multiple pools with the the
'load_balance' or 'quota' pool strategies (see --pool_strategy). By default all
pools use the ratio value 1. For example, using this option with a value of 2 on
just one pool will make that pool receive twice the hashrate as the other pools
since their ratio will still be the default value of 1.
--pool_debug Logs all pool traffic.
Global pool options:
--pool_connect_TO=SEC Set the time-out for attempting to connect to a pool. SEC is the time to wait in
seconds. Default is 10.
--pool_rpc_TO=SEC Set how long the miner will wait for an unanswered RPC to the pool. After this
time, the miner will reconnect to the pool. SEC is the time to wait in seconds.
Default is 60.
--pool_max_rejects=N If a pool rejects N shares in a row, the pool connection is reset. This is to prevent
against pools that invalidates mining sessions without disconnecting the user.
Default value is 5.
--pool_share_limit_ms=N If a pool takes longer than N ms to accept or reject a share, kill the current
connection and reconnect. This is intended for pools that often get issues with
some of their servers, but reconnecting means being load-balanced to a different and
hopefully better server. Default value is no timeout.
--pool_strategy=STRAT Sets the strategy for selecting pools when running with multiple pools. The available
values are: priority, load_balance, quota, and min_epoch. The default is priority.
priority: The miner will use pools in the order they are listed, only moving on
to the next pool if the previous cannot establish a connection.
load_balance: The miner will evenly balance the hashrate across all currently
connected pools. The ratio of hashrate between pools can be set with --pool_ratio.
quota: The miner will evenly balance the total hashes completed across
all pools. If a pool disconnects and later reconnects, the miner will move
hashrate to the pool until the total hashes for each pool is balanced.
The ratio of hashrate between pools can be set with --pool_ratio.
min_epoch: ETH + ZIL switching strategy. The miner will always mine the lowest epoch
among all connected pools, and in case of a tie, the first connected pool.
Therefore, specify your ETH mining pool as the first/primary pool, then the ZIL pool
as the second pool. You can also use 'eth_zil' as the name for this strategy.
--no_ntime_roll Prevents the miner from rolling ntime in the block header, only using the value
provided by the pool. This needs to be enabled for some pools when mining x16rt.
--no_stale_submit Prevents the miner from submitting shares that are not for the most current pool job.
GPU options:
--platform=INDEX Sets the index of the OpenCL platform to use. If not specified, platform will
be auto-detected. Linux with multiple platforms is only supported using no
--platform arg but instead adding --bus_reorder.
-d, --devices=DEVLIST Sets gpu devices to use from detected list. DEVLIST should be a comma-
separated list of device indices, e.g. -d 0,1,2,4. If not specified, all
devices on the platform(s) will be used. NOTE: by default the devices are ordered
by pcie bus ordering. Use --list_devices to show indices.
--init_style=1/2/3 Specified the init style (1 is default):
1: One gpu at the time, complete all before mining.
2: Three gpus at the time, complete all before mining.
3: All gpus in parallel, start mining immediately.
--pcie_fmt=FORMAT Sets print format for pcie bus numbers. The accepted values for FORMAT are
either 'hex' or 'dec'. The default is dec for windows and hex for linux.
--bus_reorder Reorders the detected or specified devices after their pcie bus id. If no
platform is specified, devices will be collected from all detected AMD OpenCL
platforms. Note: As of version v0.7.0 this is the default behavior.
--opencl_order Orders the detected or specified devices in the order OpenCL presents them.
--list_devices Lists the available devices for the detected or specified platform and exits
immediately. Bus reordering will be implemented in the displayed order.
--nr_cu_override=X,Y,... Overrides the nr compute units per gpu as presented by the OpenCL API. This
is primarily useful for Vega 64s flashed with 56 biosed and where the driver is
reporting 56 CU instead of the true count. Provide a comma-separated list of the
override CU count per gpu as value for the argument. You can skip gpus and do not
need to provide values for all gpus in the rig. Example for a mixed rig of two Vegas
at index 1 and 3 and two other gpus: --nr_cu_override=,64,,64. You can verify your
argument by also adding --list_devices before mining.
Clock/voltage control options (windows only, BETA functionality):
The miner has basic functionality for setting core and mem clks and their respective
voltage, as well as selecting between the win driver's built-in timings. For each
available argument below, you enumerate values for gpu(s) in the rig in a comma-separated
list. Some arguments are not used for certain gpus. You can skip gpus in the list.
The miner always sets and uses the highest p-state for both core and mem for GCN gpus
(Polaris, Vega). Please note that Rx Vega gpus _must_ have a powerplay table modification
of the mem p2 state before being able to run a voltage lower than 900mV. Moreover, Big Navi
gpus also still need to use e.g. MorePowerTool to make powerplay table modifications, for example
for enabling setting a lower voltage. The miner _might_ add support for powerplay table-related
functionality in the future.
--clk_debug Enable start-up log printouts related to setting clocks/voltages/timings.
--clk_core_mhz=MHZ1,MHZ2,... Sets the core clk per gpu in MHz.
--clk_core_mv=MV1,MV2,... Sets the core voltage per gpu in mV.
--clk_mem_mhz=MHZ1,MHZ2,... Sets the mem clk per gpu in MHz.
--clk_mem_mv=MV1,MV2,... Sets the mem voltage per gpu in mV. Not used for Navi or Big Navi gpus.
--clk_timing=V1,V2,... Selects between the driver's available mem timing sets. Not available on all gpus and
drivers.
Example of a partial command line for a four gpu system where with a Rx Vega 64, 580, 5700XT and
6800 mining ethash or similar. We only specify mem voltage for the Vega and 580, and only select
a driver timing value for the Big Navi:
teamredminer.exe ... --clk_core_mhz=1100,1000,1275,1000 --clk_core_mv=875,850,725,675
--clk_mem_mhz=1107,2100,1820,2130 --clk_mem_mv=875,850,, --clk_timing=,,,1
Fan control options:
--fan_control(=CFG1,CFG2,...) This argument enables gpu fan control by the miner. TRM supports
auto-adjusting the gpu fan speed(s) based on core, junction and/or mem temp.
We also support setting a static fan speed in percent.
Each gpu type has a fan configuration that will be used by default. We support
both overriding the default configuration per gpu type as well as setting a
specific config per gpu in the rig.
A fan config consists of (max) six values, separate by the ':' (colon) char. The values
are: core target temp, junction target temp, mem target temp, initial fan speed in
percent, min fan speed in percent, max fan speed in percent. Any value can be left empty.
These are a few examples:
::70:50:25 Target mem temp to 70C, start fan at 50% speed, min fan speed 25%.
55::::20:80 Target core temp to 55C, start fan at default configuration's speed,
always keep fan between 20% and 80%.
55::75:80 Adjust fan so that core temp is <= 55C and mem temp is <= 75C, start
fan at 80%.
:::100 Set static fan speed to 100%, never adjust based on temps.
The fan configuration used for a gpu is derived in the following precedence order:
1. The --fan_control argument was passed a list of configurations and included an
entry for gpu X.
2. The default fan configuration for this gpu type was overridden with a
--fan_default_<type>=... parameter.
3. Use the built-in default fan configuration for this gpu type.
In the list above, if the chosen configuration is missing the start value for the fan
the setting from the next configuration is used.
NOTE: fan support is a beta feature and will not work better than the support the
drivers provide. For example, many times the drivers under linux don't allow forcing a
fan to 100% using the sysfs pwm support.
--fan_default_polaris=CFG Set the default config used for all Polaris gpus (450/460/550/560/470/480/570/580/590).
The built-in default is 55:::50 for 55C core temp and fan starting at 50%.
Note: this setting is also reused for Tonga gpus.
--fan_default_vega=CFG Set the default config used for all Vega gpus (Vega 56/Vega 64).
The built-in default is 55::70:50 for 55C core temp, 70C mem temp and fan at 50%.
--fan_default_vega2=CFG Set the default config used for all Radeon VII gpus.
The built-in default is 70::75:80 for 70C core temp, 75C mem temp and fan at 80%.
--fan_default_navi=CFG Set the default config used for all Navi (Navi10).
The built-in default is 60::80:70 for 60C core temp, 80C mem temp and fan at 70%.
--fan_default_big_navi=CFG Set the default config used for all Big Navi (Navi21).
The built-in default is 50:::70 for 50C core temp and fan at 70%. The reason for
not including mem temp is a missing sensor in the Windows ADL library.
--fan_debug Enable log printouts related to adjustments.
--fan_no_restore Disables the restore of original fan profiles on miner exit.
Watchdog options:
--no_gpu_monitor Disables the ADL (Windows) or sysfs (Linux) GPU monitor for temperature and
fan speed.
--temp_limit=TEMP Sets the core temperature at which the miner will stop GPUs that are too hot.
Default is 85C. Gpu-specific values can be provided using a comma-separated list,
one value per gpu. If a gpu doesn't have a defined value, the first value in the list
is used.
--temp_resume=TEMP Sets the core temperature below which the miner will resume GPUs that were previously
stopped due to the core temperature exceeding limit. Default is 60C. Gpu-specific
values can be provided using a comma-separated list, one value per gpu. If a gpu doesn't
have a defined value, the first value in the list is used.
--mem_temp_limit=TEMP Sets the mem temperature at which the miner will stop GPUs that are too hot.
Default is not enabled. Only used if the gpu provides a mem temperature sensor.
Gpu-specific values can be provided using a comma-separated list, one value per gpu.
If a gpu doesn't have a defined value, the first value in the list is used.
--mem_temp_resume=TEMP Sets the mem temperature below which the miner will resume GPUs that were previously
stopped due to mem temperature exceeding limit. Default is not enabled. Only
used if the gpu provides a mem temperature sensor. Gpu-specific values can be provided
using a comma-separated list, one value per gpu. If a gpu doesn't have a defined value,
the first value in the list is used.
--watchdog_script(=X) Configures the gpu watchdog to shut down the miner and run the specified platform
and exits immediately. The default script is watchdog.bat/watchdog.sh in the
current directory, but a different script can be provided as an optional argument,
potentially with a absolute or relative path as well.
--watchdog_test Tests the configured watchdog script by triggering the same action as a dead gpu
after ~20 secs of mining.
--watchdog_disabled Forces the watchdog to not execute. Can be used to disable the watchdog in mining os
that always run with the watchdog enabled.
Ethash options:
--eth_config=CONFIG Manual ethash configuration for the miner. CONFIG must be in the form [X][M][L].
The [M] value selects the mode which can be 'A','B', or 'C'.
The 'B' mode uses additional memory and will only work on 8+GB cards.
The 'C' mode uses additional memory and will only work on 16+GB cards, such as the VII, with
a correctly configured system. See the ETHASH_TUNING_GUIDE.txt for more details.
The [L] value selects the intensity and it's range will depend on the GPU architecture.
The [X] prefix is optional and is Navi/Big Navi only, it enables more mem operations and
leads to a lower tuning [L] value. It can be beneficial whenever the auto-tuner repeatedly
hits a value close to the max possible tuning value for the gpu.
Both values are optional, but if [L] is specified, [M] must also be specified.
Example configs: --eth_config=A
--eth_config=B750
--eth_config=XB
CONFIG can also be a comma separated list of config values where each is
applied to each GPU. For example: --eth_config=A,B750,,A288
Any gpu that does not have a specific config in the list will use the first
config in the list.
--eth_variant_mode=X This argument controls activation of the ethash changes for ETC from epoch 390 as described
in ecip-1099. The following modes are available:
pool - Default mode. Only activates if the pool sends an algo flag containing etchash.
Once this flag is seen, all pool jobs will be assumed to be etchash unless another.
algo flag containing ethash is received.
etchash - Etchash mode. Epoch >= 390 will be assumed to be etchash, lower epochs ethash. Pool
algo flags are not used.
deduce - Ignore pool algo flags and only apply a heuristics based on the current system time
and known heights and times for ETC and ETH. This mode should work as a generic
approach when ETH reaches epoch 390 in Jan 2021. The system clock needs to be correct.
It should also handle any profit switching setups that switch freely between ethash and
etchash jobs by proxying underlying pools.
auto - As long as the pool hasn't passed an algo flag, use deduce mode. When an algo flag
is seen, switch to pool mode.
ethash - Forced ethash mode. Never apply ecip-1099.
force_etc - Forced etchash mode. Always apply ecip-1099 rules. Use for ETC testnet mining.
--eth_aggr_mode Enables automatic use of the 'B' mode for all Polaris 8GB cards, unless they have a
different config provided by the --eth_config argument. This is the same thing as
manually setting all Polaris 8GB gpus in the rig to 'B' mode using --eth_config.
For most gpus, this adds 0.1-0.2 MH/s of hashrate. NOTE: 20-25% of rigs becomes less
stable in this mode which is the reason it isn't the default mode. If you experience
dead gpus, you should remove this argument and run the gpus in the 'A' mode.
--eth_stratum_mode=MODE Sets a fixed stratum mode for ethash pools. By default the miner will attempt
to automatically determine the type of stratum the pool supports and use that mode.
This automatic detection can be overriden by specifying this option. The MODE can be
set to one of the following options: stratum, nicehash, ethproxy.
--eth_worker Set the worker id that will be sent to pool. This only applies to pools with ethproxy
stratum mode.
--eth_hash_report=X Controls hashrate reports to the configure pools. This value is applied for all pools. Values:
default - let the miner decide based on stratum protocol used for each pool.
force - always send hashrate reports, even if the pool rejects them.
on - send a first hashrate report, disable for any pool that rejects the message.
off - never send hashrate reports.
--eth_epoch Tests a specific ethash epoch. NOTE: this will automatically switch the miner into benchmark mode, as
if you added --benchmark.
--eth_alloc_epoch=N Allocates enough memory for the given epoch from the start. The miner will try to allocate more
if it needs to later during mining.
--eth_dag_buf=X,Y,... The miner can allocate a single or dual buffers for the DAG. For now, the default is AUTO. A single
buffer is slightly better, leading to a small power save for all gpu types. Only recent drivers support
single large allocations larger than 4GiB, typically from Adrenalin 20.9.1 and amdgpu-pro 20.x. The miner
can automatically use single buffer mode when possible using this argument, as well a force single or dual
buffers per gpu. Supported values are A(uto), S(ingle), D(ual). You can enumerate a comma-separated list
for all gpus in the rig, or a single value for all gpus. A gpu that does not have a value in the
comma-separated list will use the first value.
--eth_big_mode_adjust=X,Y,... When using B- or C-modes, the miner runs better the more vram it can allocate. Unfortunately the
drivers aren't accurate reporting how much memory it's possible to allocate, especially on Windows.
The miner will use a safe conservative number of 256MiB (Linux) and 512MiB (Windows) as an offset from
the available vram size. If you want change this number, you can do so using this argument by providing.
a comma-separated list with values for one or more gpus. Values for gpus not running B/C-mode will be
ignored. If a gpu doesn't have a value in the list, the first provided value is used instead.
The allowed interval is [-64, 2048]. The higher number, the less vram is allocated on the gpu.
--eth_dag_slowdown=N Slows down the DAG generation. Pass a single digit 0-9. 0 means no slowdown (<= 0.7.9 behavior),
1 means minimal slowdown, 9 means max. Default value: 4 for a slight slowdown.
--eth_stagger Enables staggering of gpus when building a new DAG. This is more lean on PSUs that don't like
going from 0-100% load on all gpus at the same time.
--eth_no_stagger Disables --eth_stagger. Already the default behavior from 0.7.18. Argument kept for backwards
compatibility only.
--eth_ramp_up Adds ramping up the intensity on all gpus after a DAG build, gpu disable/enable or network outage.
Can help rigs with crashes right between the DAG build and starting mining.
--eth_no_ramp_up Disables --eth_ramp_up. Already the default behavior from 0.7.18. Argument kept for backwards
compatibility only.
--eth_direct_abort Uses a different mechanism to abort ongoing gpu jobs. Recommended for Vegas in ROCm environments
to minimize stale shares. Will apply to Vega and Polaris gpus in the rig only.
--eth_dag_alloc_patch Some motherboards with outdated bios can see hw errs typically on the first or last gpu in the system.
Use this argument to force a patched dag allocation strategy that most often solves the issue.
Upgrading your bios often solves the issue as well.
--eth_hashwatch(=M,M) Defines a min/max watchdog hashrate in MH/s expected when gpus are hashing. If a GPU falls outside
of this range for too long it will be considered faulty and the watchdog will be triggered. The
default min/max values are 2 MH/s and 150 MH/s. To activate with default values, use
--eth_hashwatch. To set your own values, use e.g. --eth_hashwatch=1.25,60. The same range is used
for all gpus in the rig. A negative value for one side disables it, e.g. use --eth_hashwatch=-1,1000
to handle gpu resets that result in huge fake hashrates but no minimum check.
--eth_dag_cache(=EPOCH) Enables saving eth DAGs from jobs with different epochs to prevent having to rebuild them in the
future if jobs with the old epochs are received again. At most one DAG will be saved if GPU memory
space allows. This is useful for switching pools such as eth+zil mining. If you want to prebuild a
certain epoch immediately at startup, add the optional value. Eth+zil switching miners should use
--eth_dag_cache=0. Only ethash (and not etchash) epochs can be prebuilt at this time.
--eth_dag_cache_resv=MEM Sets the amount of GPU memory the miner will attempt to leave unused when running with DAG caching
enabled (see --eth_dag_cache). The argument MEM is the amount of memory to leave unused in
mebibytes. The default value is 256.
--eth_dag_cache_verify Enable dag cache read and verification after a finished dag build. This will detect situations
where the dag cache had bit errors and the resulting dag is partially broken. We have seen this
happen increasingly on Vegas as the dag has grown bigger. When detected, a new buffer will be
allocated for the dag cache and the dag build restarted.
--eth_micro_delay=VAL,VAL,... Adds a delay (measured in microseconds) when reenqueueing work on the gpu(s).
Weaker PSUs driving many gpus can sometimes not handle the "slew rate" when multiple gpus happen to
reenqueue work at exactly the same time. Setting this to e.g. 32 will smoothen out the transition
from no load to 100% load enough to lower the slew rate on such rigs. The typical indication of this
issue is hard hangs where the rig becomes unresponsive requiring a power cycle to reboot, but it can also
be regular gpu crashes. Valid values are 0-256. Values per gpu can be provided in a comma-separated list.
Gpus with no values specified in the list will use the first value. The default values for this argument in:
single algo ethash mining are:
Polaris: 64
Vega: 0
Navi: 0
--eth_ignore_abort_fail When job abort fails, it's typically the result of the intensity being too high, and the miner
therefore adjusts it down automatically. This option _disables_ this logic, keeping the intensity but
instead logs a warning.
--eth_no_job_logs Suppresses all logs for new jobs received from pool(s). Applies to all ethash family mining sessions,
i.e. in a dual eth+zil setup, logs for both eth and zil pools will be suppressed. Pool jobs that
switches to a new epoch will still be logged.
--eth_smooth_power=X,Y,... The "smooth power" scheduling approach was added in 0.10.0 and is available for all gpu types.
It's generally a good feature that adds a little bit of hashrate and also improves stability in most
cases, and it's enabled by default on all gpus. However, there are rigs that don't react well and
starts crashing. If so, you can use this argument to control the feature per gpu in your rig.
Valid values are 0 or 1. For a 5 gpu rig you could use --eth_smooth_power=0,1,1,1,0 to disable smooth
power on the first and last gpu. If you don't specify a value for a gpu, the first value in the list
is used. This means you can disable the feature for a full rig using --eth_smooth_power=0.
Progpow options (kawpow, firopow):
--prog_config=CONFIG Manual progpow configuration for the miner. CONFIG must be in the form [M][L].
The [M] value selects the mode which can be either 'A' or 'B'.
The 'B' mode typically results in better performance but is only available for
Vega on linux and Navi (linux or windows).
The [L] value selects the intensity and it's range will depend on the GPU architecture.
Both values are optional, but if [L] is specified, [M] must also be specified.
Example configs: --prog_config=A
--prog_config=B750
CONFIG can also be a comma separated list of config values where each is
applied to each GPU. For example: --prog_config=A,B750,,A288
Any gpu that does not have a specific config in the list will use the first.
--prog_height=VALUE Sets a fixed block height for progpow algorithms for benchmarking purposes. This will automatically
switch the miner into benchmark mode.
--prog_strict Forces miner to always generate strictly accurate kernels. By default the miner will
generate relaxed kernels that use less computation power but can result in
occasional invalid shares.
--prog_dag_slowdown=N Slows down the DAG generation. Pass a single digit 0-9. 0 means no slowdown (<= 0.7.9 behavior),
1 means minimal slowdown, 9 means max. Default value: 4 for a slight slowdown.
--prog_stagger See --eth_stagger.
--prog_ramp_up See --eth_ramp_up.
--prog_no_stagger See --eth_no_stagger.
--prog_no_ramp_up See --eth_no_ramp_up.
--prog_micro_tune=X,Y,... This option enables a small retuning session for every new random code block. This is important
for Polaris gpus to run at their max speed. For Vegas and Navis it usually does not improve
performance. The default AUTO mode enables it for all Polaris gpus but disables it otherwise.
The only reason to disable it would be for stability purposes. The argument value is a
comma-separated list of values, one per gpu. If a gpu is missing a value, the value for the
first gpu is used. Please note that setting a manual prog_config will effectively disable the
micro-tuner as well. Available values are:
1 - turn OFF progpow micro-tuning for this gpu.
2 - turn ON progpow micro-tuning for this gpu.
3 - let the miner decide if micro-tuning should be enabled (AUTO).
--prog_hash_report Enables forced hashrate report (like for ethash) sent to all pools. This is an alias for
--eth_hash_report=force, which is also applicable since progpow and ethash use the same pool
protocol(s).
Cryptonight options:
--rig_id Set the rig identifier that will be sent to the pool. This is only used for
cryptonight pools.
--cn_config=CONFIG Manual cryptonight configuration for the miner. CONFIG must be in the form
[P][I0][M][I1][:xyz], where [P] is an optional prefix and [:xyz] is an
optional suffix. For [P], only the value of 'L' is supported for low-end
GPUs like Lexa/Baffin. [I0] and [I1] are the thread intensity values normally
ranging from 1 to 16, but larger values are possible for 16GB gpus. [M] is the
mode which can be either '.', -', '+' or '*'. Mode '.' means that the miner
should choose or scan for the best mode. Mode '*' both a good default more and
_should_ be used if you mine on a Vega 56/64 with modded mem timings. The
exceptions to this rule are small pad variants (cnv8_trtl and cnv8_upx2), they
should still use '+'. For Polaris gpus, only the '-' and '+' modes are available.
NOTE: in TRM 0.5.0 auto-tuning functionality was added, making manual configuration
of the CN config modes unnecessary except for rare corner cases. For more info,
see the tuning docs and how-to documents bundled with the release.
Example configs: --cn_config=15*15:AAA
--cn_config=14-14
--cn_config=L4+3
CONFIG can also be a comma separated list of config values where each is
applied to each GPU. For example: --cn_config=8-8,16+14:CBB,15*15,14-14
Any gpu that does not have a specific config in the list will use the first
config in the list.
--no_cpu_check Disables cpu verification of found shares before they are submitted to the pool.
Note: only CN algos currently supports cpu verification.
--no_lean Disables the CN lean mode where ramp up threads slowly on start or restart after
network issues or gpu temp throttling.
--no_interleave=DEVS Lists gpu devices where CN thread interleave logic should be not be used.
The argument is a comma-separated list of devices like for the -d option.
Use this argument if some device(s) get a worse hashrate together with a lot
of interleave adjust log messages.
--alloc_patch=DEVS Lists gpu devices that loses hashrate between TRM v0.4.5 and later versions. With this
argument a simpler mem allocation strategy is used, and the old (higher) hashrate should
be restored. Auto-tuning mode can still be used.
--auto_tune=MODE Enable the auto-tune mode upon startup. Only available for CN variants. MODE must
be either NONE, QUICK or SCAN. The QUICK mode checks a few known good configurations
and completes within 1 min. The SCAN mode will check all possible combos and will
run for 20-30 mins. Setting MODE to NONE disable the auto-tune feature. The default
mode is QUICK.
--auto_tune_runs(=N) Executes multiple runs for the auto tune, each time decreasing the unit of pads used -1
in one of the threads (15+15 -> 15+14 -> 14+14 -> 14+13 -> ...). You can specify the
explicit nr of runs or let the miner choose a default value per gpu type (typically 3-4).
--auto_tune_exit If present, the miner will exit after completing the auto-tuning process. This is helpful
when you want to scan for optimal settings and then use the resulting command line arg
printed by the miner.
--allow_large_alloc If present, and when the driver indicates there is enough GPU vram available, the miner
will be more aggressive with the initial memory allocation. In practice, this option
means that Vega GPUs under Linux will start the auto-tuning process at 16*15 rather
than 16*14 or 15*15.
MTP options:
--allow_all_devices Some algos can't be mined on e.g. 4GB gpus. Those gpus will be disabled automatically
by the miner. This argument overrides this logic and allows mining on all specified
or detected devices.
X16* options:
--hash_order=VALUE Sets a fixed hash order for algorithms like x16r for benchmarking purposes.
This setting will automatically switch the miner into benchmark mode.
The standard benchmark hash order for x16r is --hash_order=0123456789abcdef.
Nimiq options:
--nimiq_worker=VALUE Sets the worker/device name for nimiq to pass to the pool(s).
--nimiq_no_proxy Disables the automatic Nimiq proxy executed as a separate process. This means that the
host and port passed to the miner must be pointing to a proxy.
--nimiq_proxy=VALUE Overrides the default path to the Nimiq proxy. The default is trm_nimiq_proxy-win.exe.
and trm_nimiq_proxy-linux in the current miner director.
--nimiq_port=VALUE Overrides the default local port (4444) used for the Nimiq proxy. This can be used if your
system is already using port 4444 for some other tcp/ip service.
Verthash options:
--verthash_file=FILE Sets the filename to be used to load/store the verthash data file. If this option is
specified when the verthash algo is used, the miner will attempt to load the verthash
data from the file. If the file does not exist, the miner will generate the verthash
data and then save it in the file for future use. If this option is not specified the
miner will generate the verthash data in system memory on every start.
--verthash_max_uploads=N Some motherboards have issues with all gpus in the rig uploading the verthash table
at the same time. This argument limits the number of concurrent gpus that are uploading
the table at the same time at startup. Allowed values are 1-32. The default value is 4.
Autolykos2 options:
--autolykos_mem_adjust=N Sets the amount of memory in MiB that the miner should leave unused when allocating
GPU buffers for autolykos. The default value is 384 on linux and 512 on windows. For GPUs
with displays attached, the default is increased by 512. If dual mining with ZIL, the
default value is increased by 1024. The option can also be provided with a comma separated
list of values where each value is applied to each GPU. If an empty value is specified
in the list, the default will be used for that GPU. If a value is not specified for a GPU
it will use the first value in the list. The amount of vram used need to hold both the main
buffers and any prebuild buffer for the next height. For example:
--autolykos_mem_adjust=256,512,,256
--autolykos_prebuild=N Configures the speed for the next height pad prebuild. A higher value means a faster prebuild
but with larger power fluctuations and likely a larger hashrate drop as long as the prebuild is
running. Valid values are 0-9, where 0 means no prebuild at all and 9 is the fastest variant.
The default value is 3 or 4 depending on gpu. You can choose to specify a single value for all
gpus, or a comma-separated list of values per gpu.
--autolykos_slowdown=N Adds a slowdown of the pad build process. Valid values are 0-100. The default is 0, no
slowdown.
--autolykos_ignore_diff Ignores the difficulty sent by the pool and only uses the 256-bit target provided in jobs.
Some pools don't follow the ERGO reference miner pool implementation, in which case this
argument _might_ help. NOTE: this will be applied to all pools.
ZIL dual mining options:
--zil_start or --zil Starts the ZIL dual mining config. Between this and the --zil_end marker, all arguments are
applied to the ZIL mining rather than the primary algo. It's expected that the primary algo
has been set up in earlier arguments. The intention is that you can add a --zil ... --zil_end
configuration to any working TRM configuration algo and things will work out of the box.
This argument automatically sets a range of default settings you want to use for ZIL:
- Cached copy of the ZIL epoch 0 DAG.
- Adjustment of memory allocated for the primary algo to fit the ZIL DAG.
- Choose ethash A-mode for the ZIL mining.
The minimal working setup is to only provide a ZIL pool that is ok with the miner ignoring
the primary coin jobs and only mines during the ZIL windows. This is an example for ezil.me:
--zil -o stratum+tcp://eu.ezil.me:5555 -u <eth wallet>.<zil wallet>.<worker name> -p x --zil_end
For more info, read the ZIL dual mining guide packaged with the TRM release.
--zil_end Marks that we're done with the ZIL mining config and all following arguments are for the primary
algo. This argument isn't strictly necessary, but should be included for mining distros since
the user has no guarantee what arguments will be added automatically at the end of the command
line by the distro.
--stats_mode=single/dual When adding ZIL dual mining, the stats output will by default be duplicated to add info for
the ZIL mining. Some contexts might get confused by this if they are parsing the TRM outut or
log files. To switch to the default output, add --stats_mode=single.
TON options:
--ton_pool_mode=X Specifies the TON mining dialect used. If not set, the miner will try to deduce the correct choice
from the pool hostname. Available options are:
toncoinpool - use the stratum wss protocol for toncoinpool.
icemining - use ice mining's stratum protocol over tcp/ip.
tonpool - use tonpool's version of ice mining's stratum protocol over wss.
--wss_force_proxy Force enabled the automatic wss proxy executed as a separate process used for TON pools that run their
mining protocol over wss. The miner normally enables this automatically, but if a raw IP address
or aliased hostname is used for connecting this argument might be necessary.
--wss_no_proxy Disables the automatic wss proxy executed as a separate process used for TON pools that run their
mining protocol over wss. This means that the host and port passed to the miner must be pointing
to a proxy.
--wss_proxy=VALUE Overrides the default path to the wss proxy. The default is trm_nimiq_proxy-win.exe and.
and trm_nimiq_proxy-linux in the current miner directory as it was originally only used for.
Nimiq.
--wss_port=VALUE Overrides the default local port (4444) used for the wss proxy. This can be used if your
system is already using port 4444 for some other tcp/ip service.
Ethash dual mining options:
--ton_start or --ton Starts the TON dual mining config. Between this and the --ton_end marker, all arguments are
applied to the TON mining rather than the primary algo, typically ethash. It's expected that
ethash has been set up in earlier arguments. The intention is that you can add a --ton ... --ton_end
configuration to any working TRM configuration algo and things will work out of the box.
The minimal working setup is to only provide a TON pool. Read the TON mining guide for info on
supported pools. This is an example for icemining, using its beta pool address:
--ton -o stratum+tcp://ton.hashrate.to:4003 -u <ton wallet>.<worker name> -p x --ton_end
For more info, read the TON dual mining guide packaged with the TRM release.
--ton_end Marks that we're done with the TON mining config and all following arguments are for the primary
algo. This argument isn't strictly necessary, but should be included for mining distros since
the user has no guarantee what arguments will be added automatically at the end of the command
line by the distro.
--kas_start or --kas Starts the Kaspa dual mining config. Between this and the --kas_end marker, all arguments are
applied to the Kaspa mining rather than the primary algo, typically ethash. It's expected that
ethash has been set up in earlier arguments. The intention is that you can add a --kas ... --kas_end
configuration to any working TRM configuration algo and things will work out of the box.
The minimal working setup is to only provide a Kaspa pool. This is an example:
--kas -o stratum+tcp://pool.woolypooly.com:3112 -u <kaspa wallet>.<worker name> -p x --kas_end
--kas_end Marks that we're done with the Kaspa mining config and all following arguments are for the primary
algo. This argument isn't strictly necessary, but should be included for mining distros since
the user has no guarantee what arguments will be added automatically at the end of the command
line by the distro.
--dual_intensity=X,Y,Z,... This argument adjusts the intensity of the dual mining with a factor between 0.0 and 1.0, where 1.0
means running as much dual algo as possible. This option is recommended for forcing down power draw
without lowering core clk, which will have an impact on the ethash hashrate as well.
The argument is provided either as a single global value or a list of values per gpu. Examples:
--dual_intensity=0.75 All gpus use 75% of max possible TON gpu availability.
--dual_intensity=0.75,1.0,0.5 Separate values for the first three gpus in the rig, remaining gpus
use the first value for 75%.
--dual_tuner_step=X Sets which step size the dual tuner should use when probing different eth config intensities. A lower
value will mean more accurate results but will also take longer. Valid values are 1,2,4,8,16,32,64.
--dual_tuner_period=X Sets the number of seconds the dual tuner should run for each probed config. Default is 7 secs.
--dual_tuner_weights=X:Y:Z The dual mining tuner needs scoring weights for how much 1 MH/s of the primary and dual algo
are worth. There are defaults built into the miner that were valid when each algo was implemented
and added, but as network hashrates and market prices move, new values may need to be provided.
This argument provides three values, all expected to be positive numbers:
X Score for 1 MH/s of the primary algo (typically ethash).
Y Score for 1 MH/s of the secondary algo (typically TON or Kaspa).
Z Cost per 1 W of measured power. We recommend setting this to zero for now.
Example for ETH+TON:
Based on manual relative value: each MH/s of ETH is worth 100 MH/s of TON/Kaspa
--dual_tuner_weights=100:1:0
Based on mining calculators: $0.0437 for 1 MH/s ETH, $0.0005476 for 1 MH/s TON/Kaspa
--dual_tuner_weights=0.0437:0.0005476:0
FPGA Options:
--fpga_devices=LIST Sets FPGA devices to use from detected list. LIST should be a comma separated list of either
device indices or device DNAs as shown by --list_devices.
Examples: -d 0,1,2,4
-d 40020000013ae32135111111,40020000013ae32135222222,40020000013ae32135333333
If not specified, all available FPGA devices will be used.
--fpga_clk_core=LIST Sets FPGA device core clock frequencies. The clock frequencies should be provided as a
comma separated list of values in megahertz, where each value applies to each FPGA device.
If the list is shorter than the total number of devices, the remaining devices will use the
first value in the list. For example --fpga_clk_core=600,620 will apply 600MHz clock to
FPGA 0 and 620MHz to FGPA 1. If devices FPGA 2+ are present, they will be set to 600MHz.
--fpga_clk_mem=LIST Sets FPGA device memory clock frequencies. Format is the same as --fpga_clk_core.
--fpga_vcc_int=LIST Sets the vcc_int voltage on boards that support it. The voltage values should be provided as a
comma separated list of values in milliVolts(mV), where each value applies to each board.
If the list is shorter than the total number of devices, the remaining devices will use the
first value in the list. For example --fpga_vcc_int=700,800 will apply 700mV vcc_int to
FPGA 0 and 800mV vcc_int to FGPA 1. If devices FPGA 2+ are present, they will be set to 700mV.
--fpga_vcc_bram=LIST Sets the vcc_bram voltage on boards that support it. The format is the same as --fpga_vcc_int.
--fpga_vcc_mem=LIST Sets the memory/HBM voltage on boards that support it. The format is the same as --fpga_vcc_int.
--fpga_update_fw Enables updating of satellite controller firmware for C1100 boards with custom TRM firmware
to support features such as runtime voltage control. Only boards selected with the
--fpga_devices option which are not running the latest firmware version will be updated.
***** CAUTION: Users should be careful not to interrupt the firmware updating process! *****
***** Interruptions can result in a bricked board that is very difficult to recover. *****
--fpga_allow_unsafe=LIST Disables default safety limits for the specified FPGAs. The devices are specified with a
comma separated list of DNA values, e.g. --fpga_allow_unsafe=40020000013ae32135111111
***** CAUTION: Running above safety limits can result in PERMANENT DAMAGE to the device! *****
--fpga_tcore_limit=LIST Sets FPGA device core temperature soft limits. If the FPGA core temperature exceeds the
specified value, the miner will lower the FPGA clocks to bring the core temperature under
the specified value. Values are in Celcius with a list format similar to --fpga_clk_core.
--fpga_tmem_limit=LIST Sets FPGA device memory temperature soft limits. See --fpga_tcore_limits for description.
--fpga_ivccint_limit=LIST Sets VCCINT voltage regulator current soft limits. See --fpga_tcore_limits for description.
--fpga_ivccbram_limit=LIST Sets VCCBRAM voltage regulator current soft limits. See --fpga_tcore_limits for description.
--fpga_max_jtag_mhz=XY.Z Sets the max allowed frequency to use for fpga jtag communication. Default is 30.0 MHz.
--fpga_eth_clk_dag=LIST Sets FPGA core clock frequencies to be used during Ethash DAG building. By default these
will be set to 90% of the regular core clock. The format is the same as --fpga_clk_core.